《单片机原理及接口技术》课程设计报告——多通道秒表定时器(共24页).doc

上传人:飞****2 文档编号:13472215 上传时间:2022-04-29 格式:DOC 页数:24 大小:471.50KB
返回 下载 相关 举报
《单片机原理及接口技术》课程设计报告——多通道秒表定时器(共24页).doc_第1页
第1页 / 共24页
《单片机原理及接口技术》课程设计报告——多通道秒表定时器(共24页).doc_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《《单片机原理及接口技术》课程设计报告——多通道秒表定时器(共24页).doc》由会员分享,可在线阅读,更多相关《《单片机原理及接口技术》课程设计报告——多通道秒表定时器(共24页).doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上 单片机原理及接口技术 课程设计报告课程设计名称:多通道秒表定时计数器设计 院 系:自动控制与机械工程学院 专业:电气工程及其自动化 班级:2012级电气二班 姓名:黄瑞 学号:9 时间:2014年6月目录一 、课程设计目的和要求1、设计的目的单片机课程作为独立的教学环节,是自动化及相关专业集中实践性环节系列之一,是学习完单片机原理与接口技术课程后,并在进行相关课程设计基础上进行的一次综合联系。单片机课程设计过程中,我们通过查阅资料,接口设计、程序设计、安装调试等环节,完成一个基于MCS-51系列单片机,涉及多种资源应用,并具有综合应用功能的小应用课程设计,不但使我们

2、能熟练掌握课堂上所学知识,而且还能使我们在设备和软件方面得到较全面的提高和锻炼,也提高了我们运用综合知识解决实际的能力。 课程设计以学生认知为主体,充分调动学生的积极性,重视学生自学能力的培养,根据具体课题安排时间确定课题的设计、编程和调试内容,分团队开展课程设计活动,按时完成每部分工作。坚持独立完成,实现课题规定的各项指标,并写出设计报告。要求学生自己查阅资料和充分利用所学知识,根据所要设计系统所要达到的功能,划分软硬件功能、选择器件、编写相关程序,用Proteus 在计算机上绘图并用Keil进行程序边编写进行防真,再对整个系统做调试运行,培养学生在遇到问题时能进行独立、系统、认真的思考,并

3、进一步培养学生在团队中的合作精神,不断调试修改,直至达到设计的要求和取得满意的效果,最后编写系统说明书,其内容包括系统的功能介绍,使用范围,主要性能指标,使用方法,注意事项等。2、设计的要求(1)总体要求本次课程设计主要以软件仿真为主,在为期两周的工程实践中,将占据主要时间,要求完成的任务主要包括以下几点:(1) 独立完成设计任务;(2) 绘制系统硬件总框图;(3) 绘制系统原理电路图;(4) 制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释;(5) 制定编写调试方案,编写课程设计任务书;(6) 写出设计工作小结。(2)具体要求该课程设计要求基于AT89C51设计一个4位的LED数

4、码管作为“4通道的秒表定时器”。1设计使显示时间为099秒;2当各通道定时时间到时,点亮对应的LED灯;3设计一个具有4个按键的键盘:K1:“设置”/“定时启动”;K2:“通道”/“定时设置”;K3:“加一”;K4:“减一”;4设计每到一秒钟有声音或LED提示提醒功能,可通过按钮打开及关闭该提醒功能。(3)设计提示(1)用6为7段LED数码管作为显示设备,最高为显示通道号,低2位显示时间。(2)可采用定时器,定时时间100ms。(3)参考Protuse仿真效果图 图1-1 Protuse仿真效果图二 、设计的步骤和思路1、设计的步骤(1)制定相应的设计方案;(2)硬件的初步设计;(3)选择设计

5、所用元器件和参数;(4)在Proteus 7.5中设计和连接电路图;(5)软件的初步设计;(6)编写程序实现其功能;(7)在keil_v4中进行调试运行;(8)硬件和软件联合调试。2、设计的思路为使数码管同时显示通道号和定时值(099秒),选用4位7段LED数码管,当定时时间到时点亮对应的LED灯,课程中我们选用LED-BLUE灯,并设计有四位按键的键盘,分别为K1、K2、K3、K4来控制定时启动/停止、通道号和定时时间的切换设置、通道号/定时时间加一、通道号/定时时间减一。通过这四个按键来控制整个电路的运行、LED灯的点亮和数码管的显示。具体控制如下:(1)通道号为14,对应LED灯为LED

6、1LED4,执行程序前可任意选择通道号;定时值可在099S内任意设置;(2)当程序运行初始化化后,如果K2按下,则切换至通道号的设置,通过K3、K4来增加或减小通道号;当选择好通道号后如果按下K2则切换至定时值的设置,通过K3、K4来增加或减小定时值;当定时值设置好之后按下K1则程序执行所选通道的秒表定时;当定时时间到时,对应通道的LED灯点亮;(3)当程序运行初始化后直接按下K3、K4进行定时时间的设置,通过K3、K4来增加或减小定时值;当设置好之后按下K1后直接执行一通道的秒表定时;当定时时间到时,对应通道的LED灯点亮;(4)当程序运行初始化后直接按下K3、K4进行定时时间的设置,通过K

7、3、K4来增加或减小定时值;当设置好之后按下K2则切换至通道号的设置,通过K3、K4来增加或减小通道号;当设置好后按下K1则执行对应通道的定时;当定时时间到时,对应通道的LED灯点亮;(5)当程序运行初始化后直接按下K3、K4进行定时时间的设置,通过K3、K4来增加或减小定时值;当设置好之后按下K2则切换至通道号的设置,通过K3、K4来增加或减小通道号;当设置好后按下按下K2则又切换至定时时间的设置, 通过K3、K4来增加或减小定时值;依次可不断循环通道号和定时时间的切换设置,直至达到自己所想要的定时时间,此时按下K1则执行对应通道的秒表定时,当定时时间到时点亮对应的LED灯。三、硬件的设计硬

8、件电路设计框图如下图所示,主要由:4个按键的键盘、AT89C51单片机、数码管、4个LED灯。根据硬件系统电路设计框图,对各部分模块的原理进行分析,编写个子模块程序,最终将其组合。 图3-1硬件电路设计框图1、信号输入电路独立式按键就是各按键相互独立,每个按键各接入一根输入线,一根输入线上的按键工作状态不会影响其他输入线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键按下了。独立式按键电路配置灵活,软件简单。但每个按键需要占用一个输入口线,在按键数量较多时,需要较多的输入口线且电路结构复杂,故此种键盘适用于按键较少或操作速度较高的场合。 图3-2键控电路消除键抖动。一般按键在

9、按下的时候有抖动的问题,即键的簧片在按下时会有轻微的弹跳,需经过一个短暂的时间才会可靠地接触。若在簧片抖动时进行扫描就可能得出不正确的结果。因此,在程序中要考虑防抖动的问题。最简单的办法是在检测到有键按下时,等待(延迟)一段时间再进行“行扫描”,延迟时间为1020ms。这可通过调用子程序来解决,当系统中有显示子程序时,调用几次显示子程序也能同时达到消除抖动的目的。2、数码管的驱动模块的电路 图3-3数码管驱动模块电路3、LED灯的驱动模块电路 图3-4LED灯的驱动电路四、软件设计1、单片机选择AT89C51是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,片内含4K bytes的

10、可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(ROM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元。功能强大AT89C51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。此设计中就采用AT89C51。单片机小系统的电路图如图所示: 图4-1信号输入电路单片机AT89C51的主要特征: 与 MCS51 兼容,4K 字节可编程闪烁存储灵活的在线系统编程,掉电标识和快速编程特性; 寿命为 1000 次写/擦周期,数据保留时间可 10 年以上;全静态工作模式:

11、0HZ33HZ; 三级程序存储器锁定;1288 位内部 RAM,32 位可编 I/O 线;两个 16 位定时器/计数器,5 个中断源,4 个 8 位并行的 I/O 接口,1 个全双工 I/O 接口。2、系统软件设计分析模块的划分:(1)键盘的设置、启动、停止、加一、减一;(2)数码管显示通道号和定时时间;(3)定时时间到后对应通道号的LED灯点亮。程序流程图如下: 图4-1程序流程图3、主要功能实现的程序(1)通道号的设置uchar set_thax() /设置通道函数 key_set(); if(set_2=2) delay(10); if(k3=0) /K3加1 delay(30); if

12、(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 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(

13、k4=0) delay(300); minu-; if(minu=-1) minu=99; 五、调试说明仿真结果和分析:1、未启动仿真时,初始状态: 图5-1未启动仿真时,初始状态2、开始启动仿真后: 图5-2开始启动仿真后3、通过按下K2切换至一、二、三、四通道和定时值的设置: 图5-3通过按下K2切换至一、二、三、四通道和定时值的设置4、定时时间到后对应通道号LED灯点亮: 图5-4定时时间到后对应通道号LED灯点亮六 心得体会 作为一名电气工程及其自动化专业的大二学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握

14、的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。在两个周的学习工作中,通过查阅相关资料了解了直流调速系统,加深了对直流电机调速控制系统的认识,熟悉了单片机在控制系统中的运用。并且在所学知识的基础上,利用已有的直流调速系统设计,尝试了自己的一些研究。并且使我将以前所学的知识系统化,理论化,实用化。对如何使用已有知识及获取相关资料方面的能力又有了提高。根据课题要求,利用所学的相关知识,查询相关的资料。根据课程条件,找到适合的方案,找到需要的元器件。根据课程设计的要求和自己所要增加的功能写好程序

15、流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序。然后再进行程序调试和相应的修改,以达到能够实现所要求的功能的目的。除编写实现设计要求外的程序,还要根据课程设计的实际情况,添加些额外程序来使系统更加的稳定,如开关的去抖(采用延迟)。该课程设计的程序可以参考MCS-51系列单片机,也可自己根据自己熟悉的方法来编程如单片机C语言或汇编语言。在设计控制开关时,注意2个中断的打开和关闭的先后顺序,否则就会出错。这次的单片机课程设计重点是理论与实际的相结合。该设计从头到尾都要自己参与,熟悉了整个设计的过程,更充分的锻炼了自己。在此要感谢我的指导老师,感谢老师给我这样的机会锻炼。在整个设计过程中

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

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

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

19、,200111 吴亦峰 . 单片机原理与接口技术M.北京:电子工业出版社九、附录#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按键,加1sbit k4=P13; /k4按键,减1sbit led4=P30; /LED灯sbit led3=P31;sbit led2=P32;sbit led1=P33

20、;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(uint); /延时函数void key_change(); / 扫描K1void key_set(); / 扫描K2void disp(uchar,uchar,

21、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; /通道个位 mis=minu/10; /显示时间十位 mig=minu%10; key_set(); /扫描K2 key_change(); /扫描K1 if(set_1=

22、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(); if(set_2=1) delay(10); set_time(); key_set(); if(set_2=2) delay(10); set_thax

23、(); 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;elseif(a=2)led1=1;led2=0;led3=1 ;led4=1;elseif(a=3)led1=1;led2=1;led3=0 ;led4=1;elseif(a=4)led1=1;led2=1;led3=1

24、;led4=0;elseminu-; 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) 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;

25、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=1; QB2=1; QB3=1; QB4=1; P0=tabless; /第2个数码管不显示 delay(10);void set_time() /设置时间函数 key_set(); if(set_2=1) delay(10

26、); 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 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; void delay(uint k) /延时函数 uint i,j; for(i=k;i0;i-) for(j=80;j0;j-);专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁