ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:732.17KB ,
资源ID:4834637      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4834637.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《单片机原理及接口技术》课程设计报告多通道秒表定时器.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《单片机原理及接口技术》课程设计报告多通道秒表定时器.docx

1、单片机原理及接口技术课程设计报告多通道秒表定时器X X 大学单片机原理及接口技术课程设计报告课题名称多通道秒表定时计数器设计学院专业班级姓名学号时间一 、课程设计目的和要求1、设计的目的32、设计的要求3(1)总体要求3(2)具体要求3二 、设计的步骤和思路51、设计的步骤52、设计的思路5三、硬件的设计61、信号输入电路62、数码管的驱动模块的电路.63、LED灯的驱动模块电路7四、软件设计.81、单片机选择82、系统软件设计分析83、主要功能实现的程序9(1)通道号的设置9(2)定时值的设置9五、调试说明11六、心得体会14七、致谢15八、参考文献16九、附录17一 、课程设计目的和要求1

2、、设计的目的单片机课程作为独立的教学环节,是自动化及相关专业集中实践性环节系列之一,是学习完单片机原理及应用课程后,并在进行相关课程设计基础上进行的一次综合联系。单片机课程设计过程中,我们通过查阅资料,接口设计、程序设计、安装调试等环节,完成一个基于MCS-51系列单片机,涉及多种资源应用,并具有综合应用功能的小应用课程设计,不但使我们能熟练掌握课堂上所学知识,而且还能使我们在设备和软件方面得到较全面的提高和锻炼,也提高了我们运用综合知识解决实际的能力。 课程设计以学生认知为主体,充分调动学生的积极性,重视学生自学能力的培养,根据具体课题安排时间确定课题的设计、编程和调试内容,分团队开展课程设

3、计活动,按时完成每部分工作。坚持独立完成,实现课题规定的各项指标,并写出设计报告。要求学生自己查阅资料和充分利用所学知识,根据所要设计系统所要达到的功能,划分软硬件功能、选择器件、编写相关程序,用Proteus 在计算机上绘图并用Keil进行程序边编写进行防真,再对整个系统做调试运行,培养学生在遇到问题时能进行独立、系统、认真的思考,并进一步培养学生在团队中的合作精神,不断调试修改,直至达到设计的要求和取得满意的效果,最后编写系统说明书,其内容包括系统的功能介绍,使用范围,主要性能指标,使用方法,注意事项等。2、设计的要求(1)总体要求本次课程设计主要以软件仿真为主,在为期两周的工程实践中,将

4、占据主要时间,要求完成的任务主要包括以下几点:1) 独立完成设计任务;2) 绘制系统硬件总框图;3) 绘制系统原理电路图;4) 制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释;5) 制定编写调试方案,编写课程设计任务书;6) 写出设计工作小结。(2)具体要求该课程设计要求基于AT89C51设计一个4位的LED数码管作为“4通道的秒表定时器”。1) 设计使显示时间为099秒;2) 当各通道定时时间到时,点亮对应的LED灯;3) 设计一个具有4个按键的键盘:K1:“设置”/“定时启动”;K2:“通道”/“定时设置”;K3:“加一”;K4:“减一”; 4)设计每到一秒钟有声音或LED提

5、示提醒功能,可通过按钮打开及关闭该提醒功能。(3)设计提示1)用6为7段LED数码管作为显示设备,最高为显示通道号,低2位显示时间。2)可采用定时器,定时时间100ms。3)参考Protuse仿真效果图。二 、设计的步骤和思路1、设计的步骤(1)制定相应的设计方案;(2)硬件的初步设计;(3)选择设计所用元器件和参数;(4)在Proteus 7.5中设计和连接电路图;(5)软件的初步设计;(6)编写程序实现其功能;(7)在keil_v4中进行调试运行;(8)硬件和软件联合调试。2、设计的思路为使数码管同时显示通道号和定时值(099秒),选用4位7段LED数码管,当定时时间到时点亮对应的LED灯

6、,课程中我们选用LED-BLUE灯,并设计有四位按键的键盘,分别为K1、K2、K3、K4来控制定时启动/停止、通道号和定时时间的切换设置、通道号/定时时间加一、通道号/定时时间减一。通过这四个按键来控制整个电路的运行、LED灯的点亮和数码管的显示。具体控制如下:(1)通道号为14,对应LED灯为LED1LED4,执行程序前可任意选择通道号;定时值可在099S内任意设置;(2)当程序运行初始化化后,如果K2按下,则切换至通道号的设置,通过K3、K4来增加或减小通道号;当选择好通道号后如果按下K2则切换至定时值的设置,通过K3、K4来增加或减小定时值;当定时值设置好之后按下K1则程序执行所选通道的

7、秒表定时;当定时时间到时,对应通道的LED灯点亮;(3)当程序运行初始化后直接按下K3、K4进行定时时间的设置,通过K3、K4来增加或减小定时值;当设置好之后按下K1后直接执行一通道的秒表定时;当定时时间到时,对应通道的LED灯点亮;(4)当程序运行初始化后直接按下K3、K4进行定时时间的设置,通过K3、K4来增加或减小定时值;当设置好之后按下K2则切换至通道号的设置,通过K3、K4来增加或减小通道号;当设置好后按下K1则执行对应通道的定时;当定时时间到时,对应通道的LED灯点亮;(5)当程序运行初始化后直接按下K3、K4进行定时时间的设置,通过K3、K4来增加或减小定时值;当设置好之后按下K

8、2则切换至通道号的设置,通过K3、K4来增加或减小通道号;当设置好后按下按下K2则又切换至定时时间的设置, 通过K3、K4来增加或减小定时值;依次可不断循环通道号和定时时间的切换设置,直至达到自己所想要的定时时间,此时按下K1则执行对应通道的秒表定时,当定时时间到时点亮对应的LED灯。三、硬件的设计硬件电路设计框图如下图所示,主要由:4个按键的键盘、单片机、数码管、4个LED灯。根据硬件系统电路设计框图,对各部分模块的原理进行分析,编写个子模块程序,最终将其组合。1、信号输入电路独立式按键就是各按键相互独立,每个按键各接入一根输入线,一根输入线上的按键工作状态不会影响其他输入线上的工作状态。因

9、此,通过检测输入线的电平状态可以很容易判断哪个按键按下了。独立式按键电路配置灵活,软件简单。但每个按键需要占用一个输入口线,在按键数量较多时,需要较多的输入口线且电路结构复杂,故此种键盘适用于按键较少或操作速度较高的场合。消除键抖动。一般按键在按下的时候有抖动的问题,即键的簧片在按下时会有轻微的弹跳,需经过一个短暂的时间才会可靠地接触。若在簧片抖动时进行扫描就可能得出不正确的结果。因此,在程序中要考虑防抖动的问题。最简单的办法是在检测到有键按下时,等待(延迟)一段时间再进行“行扫描”,延迟时间为1020ms。这可通过调用子程序来解决,当系统中有显示子程序时,调用几次显示子程序也能同时达到消除抖

10、动的目的。2、数码管的驱动模块的电路3、LED灯的驱动模块电路四、软件设计1、单片机选择AT89C51是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,片内含4K bytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(ROM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元。功能强大AT89C51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。此设计中就采用AT89C51。2、系统软件设计分析模块的划分:(1)键盘的设置、启动、停止、加一、

11、减一;(2)数码管显示通道号和定时时间;(3)定时时间到后对应通道号的LED灯点亮。程序流程图如下:3、主要功能实现的程序(1)通道号的设置uchar set_thax() /设置通道函数 key_set(); if(set_2=2) delay(10); if(k3=0) /K3加1 delay(30); if(k3=0) delay(300); sec+; if(sec=5) sec=1; if(k4=0) /K4减1 delay(30); if(k4=0) delay(300); sec-; if(sec=0) sec=4; a=sec; return a; (2)定时值的设置void

12、set_time() /设置时间函数 key_set(); if(set_2=1) delay(10); if(k3=0) /K3加1 delay(30); if(k3=0) delay(300); minu+; if(minu=100) minu=1; if(k4=0) /K4减1 delay(30); if(k4=0) delay(300); minu-; if(minu=-1) minu=99; 五、调试说明仿真结果和分析:1、未启动仿真时,初始状态:2、开始启动仿真后:3、通过按下K2切换至一、二、三、四通道和定时值的设置:4、定时时间到后对应通道号LED灯点亮:六 心得体会 在两个周

13、的学习工作中,通过查阅相关资料了解了直流调速系统,加深了对直流电机调速控制系统的认识,熟悉了单片机在控制系统中的运用。并且在所学知识的基础上,利用已有的直流调速系统设计,尝试了自己的一些研究。并且使我将以前所学的知识系统化,理论化,实用化。对如何使用已有知识及获取相关资料方面的能力又有了提高。根据课题要求,利用所学的相关知识,查询相关的资料。根据课程条件,找到适合的方案,找到需要的元器件。根据课程设计的要求和自己所要增加的功能写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序。然后再进行程序调试和相应的修改,以达到能够实现所要求的功能的目的。除编写实现设计要求外的程序,还要根据

14、课程设计的实际情况,添加些额外程序来使系统更加的稳定,如开关的去抖(采用延迟)。程序要尽量做到由各个子程序组成,在有些程序后面最好加注释,这样在程序出错的检查过程中可以更容易查找的到,也更简洁,更明白易懂。该课程设计的程序可以参考MCS-51系列单片机,也可自己根据自己熟悉的方法来编程如单片机C语言或汇编语言。在设计控制开关时,注意2个中断的打开和关闭的先后顺序,否则就会出错。这次的单片机课程设计重点是理论与实际的相结合。该设计从头到尾都要自己参与,熟悉了整个设计的过程,更充分的锻炼了自己。在此要感谢我的指导老师,感谢老师给我这样的机会锻炼。在整个设计过程中我懂得了许多东西,也培养了我独立工作

15、的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中的探索的艰难和成功的喜悦。虽然这个设计还不是很完善,但是在设计过程中所学到的东西是这次设计的最大收获和财富,使我终身受益。七、致谢为期两个周的课程设计也接近了尾声。此次课程设计的完成离不开老师和同学对我的帮助,使我对单片机的工作原理和使用更近了一步。首先要感谢我敬爱的指导教师。他们在学术上的精心指导和严格要求,在系统研究和调试过程中给予的及时帮助。这些使我组的课程设计得以顺利完成,并激励着我们在今后的人生道路上不断开拓进取,勇往直前。在此,我们再一次对诸位老师的

16、培养和关怀表示诚挚的谢意!同时我们也非常感谢所有教导过我的老师们,他们不但在课程设计中指导我们学习和生活,而且在完成论文期间给我许多帮助和建议,他们兢兢业业、对工作认真负责的态度为我们做出了好的表率,时刻鞭策着我们向他们学习。非常感谢我的同学们,在与他们共同的学习、工作、生活过程中,他们给予了我及时的帮助和建议,开拓了我的思路。这使我在学习和生活中受益匪浅。最后,向所有帮助过我的老师和同学致以最诚挚的谢意。八 、参考文献 1 陈伯石.电力拖动自动控制系统M.北京:机械工业出版社,2003.2 钟富昭.8051单片机典型模块设计与应用M.北京:人民邮电出版社,20073 张靖武.单片机系统的PR

17、OTEUS设计与仿真M.北京:电子工业出版社,2007 4 杨恢先.单片机原理及应用M.北京:人民邮电出版社,2006 5 孟庆涛.图解电子控制电路M.北京:人民邮电出版社,2006 6 谢维成.单片机原理与应用及C51程序设计M.北京:清华大学出版社,20067 周润景.基于PROTEUS 的电路及单片机系统设计与仿真M.北京:北京航空航天出版社,20068 李光飞.单片机课程设计实例指导M.北京:北京航空航天出版社,20049 杜坤梅.电机控制技术M.哈尔滨:哈尔滨工业大学出版社,2002 10 李广第.单片机基础(修订版)M.北京:北京航空航天大学出版社,200111 陈光东.单片微型计

18、算机原理与接口技术(第二版)M.武昌:华中科技大学出版社,199912 何耀三.电气传动的微机控制M.重庆:重庆大学出版社,1997 13 薛钧义.MCS-51/96系列单片微型计算机及其应用M.西安:西安交通大学出版社,1997九、附录#include#define uint unsigned int#define uchar unsigned charsbit QB1=P20; /选择数码管sbit QB2=P21; sbit QB3=P22;sbit QB4=P23;sbit k1=P10; /k1按键,sbit k2=P11; /k2按键,sbit k3=P12; /k3按键,加1sb

19、it k4=P13; /k4按键,减1sbit led4=P30; /LED灯sbit led3=P31;sbit led2=P32;sbit led1=P33;sbit what=P0;uchar sec=1,minu,mstcnt; / 定义初始量uchar set_2=1,set_1=1;uchar mis,mig,ss,sg;uchar code table=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;/共阴显示uchar code tabl=0x3F,0x06,0x5B,0x4F,0x66; int a;void delay(u

20、int); /延时函数void key_change(); / 扫描K1void key_set(); / 扫描K2void disp(uchar,uchar,uchar,uchar); /显示函数void set_time(); /设置时间函数uchar set_thax(); /设置通道函数void timer0();void haap();void main() /主函数 EA=1; /系统允许有开放的中断 ET0=1; /允许T0中断 TR0=1; /开启中断,启动定时器 TMOD=0x01; TH0=0x00; TL0=0x01; while(1) sg=sec%10; /通道个位

21、mis=minu/10; /显示时间十位 mig=minu%10; key_set(); /扫描K2 key_change(); /扫描K1 if(set_1=1) /设置显示条件 haap(); if(k1=1&k2=1) /正常显示 delay(10); if(k1=1&k2=1) sg=sec; disp(sg,mis,mig,ss); key_change(); if(set_1 =2) /启动条件 timer0(); key_change(); if(set_1=3) minu=0; void haap() /设置显示函数 if(set_1=1) delay(10); key_set

22、(); if(set_2=1) delay(10); set_time(); key_set(); if(set_2=2) delay(10); set_thax(); void timer0() interrupt 1 using 0 /启动函数 TH0=0x01; TMOD = 0x01; if(set_1=2) delay(10); mstcnt+; if(mstcnt=20) mstcnt=0; if (minu=0) minu=0; set_thax(); if(a=1) led1=0; led2=1; led3=1 ; led4=1 ; else if(a=2) led1=1; l

23、ed2=0; led3=1 ; led4=1 ; else if(a=3) led1=1; led2=1; led3=0 ; led4=1 ; else if(a=4) led1=1; led2=1; led3=1 ; led4=0 ; else minu-; if(minu=0) minu=0; void key_change() /k1按键扫描 if(k1=0) delay(20); if(k1=0) set_1+; while(k1!=1); if(set_1=4) set_1=1; void key_set() /k2按键扫描 if(k2=0) delay(20); if(k2=0)

24、set_2+; while(k2!=1); if(set_2=3) set_2=1; void disp(uchar sg,uchar mis,uchar mig,uchar ss) /显示函数 QB1=0; QB2=1; QB3=1; QB4=1; P0=tablesg; /第1个数码管显示通道 delay(10); /延时一小会 QB1=1; QB2=1; QB3=0; QB4=1; P0=tablemis; /第3个数码管显示十位 delay(10); QB1=1; QB2=1; QB3=1; QB4=0; P0=tablemig; /第4个数码管显示个位 delay(10); QB1=

25、1; QB2=1; QB3=1; QB4=1; P0=tabless; /第2个数码管不显示 delay(10);void set_time() /设置时间函数 key_set(); if(set_2=1) delay(10); if(k3=0) /K3加1 delay(30); if(k3=0) delay(300); minu+; if(minu=100) minu=1; if(k4=0) /K4减1 delay(30); if(k4=0) delay(300); minu-; if(minu=-1) minu=99; uchar set_thax() /设置通道函数 key_set(); if(set_2=2) delay(10); if(k3=0) /K3加1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1