单片机课程设计设计并实现可编倒计时装置.doc

上传人:laozhun 文档编号:4147606 上传时间:2023-04-07 格式:DOC 页数:20 大小:8.50MB
返回 下载 相关 举报
单片机课程设计设计并实现可编倒计时装置.doc_第1页
第1页 / 共20页
单片机课程设计设计并实现可编倒计时装置.doc_第2页
第2页 / 共20页
单片机课程设计设计并实现可编倒计时装置.doc_第3页
第3页 / 共20页
单片机课程设计设计并实现可编倒计时装置.doc_第4页
第4页 / 共20页
单片机课程设计设计并实现可编倒计时装置.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《单片机课程设计设计并实现可编倒计时装置.doc》由会员分享,可在线阅读,更多相关《单片机课程设计设计并实现可编倒计时装置.doc(20页珍藏版)》请在三一办公上搜索。

1、课程设计任务书学生姓名: 专业班级: 电信1306班 指导教师: 工作单位: 信息工程学院 题 目: 设计并实现可编倒计时装置 初始条件:一台PC机,PC机上装有单片机开发软件;实验室提供单片机实验箱,该实验箱具有各种通用接口供同学们选择,同学们也可以购置单片机最小系统开发板作为开发基础,也可以全部购置分立元件组装。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、 设计任务一周内完成可编倒计时装置的软硬件设计、仿真、调试及制作。2、 技术要求按秒倒计时,由键盘预置分、秒各两位数,键控启动计时开始,倒计时秒数用数码管显示,计时器归零时输出一音频信号作为倒计时

2、结束的提示信号。3、 课程设计说明书要求课程设计说明书应包括方案设计、硬件电路设计、软件设计、资源分配表、调试及结果、性能分析、总结几大部分。其中性能分析主要分析精度和误差来源,也可分析装置的反应速度、成本等。最后附参考文献。设计说明书格式应符合武汉理工大学课程设计工作规范要求。时间安排:第 1-2 天:查阅相关资料,熟悉接口实验平台及其软件开发平台,完成方案设计。第 3-4 天:完成硬件设计,画出硬件电路图。第 5-6 天:软件设计、仿真。第 7天:制作、调试。第8天:撰写课程设计说明书。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录1 电路方案的设计与硬件选择111

3、电源提供方案11.2 系统主体部分方案12 硬件模块的设计22.1数码显示模块32.2控制部分及蜂鸣器报警模块32.3输入模块43 软件设计53.1软件设计流程图53.2软件设计思路及原理63.3资源分配表64 程序代码及课程设计效果74.1 设计的源程序74.2设计效果展示135 设计中遇到问题的解决及性能分析155.1设计中遇到的问题及解决155.2 性能分析166 总结与体会167 参考文献171 电路方案的设计与硬件选择11 电源提供方案 为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案 方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都

4、采用独立电源,会使系统复杂,且可能影响电路电平。 方案二:采用单片机控制模块提供电源。方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。 综上所述,我们选择第二种方案。1.2 系统主体部分方案本次单片机课程设计要求设计可编程倒计时装置,其中分和秒都是两位数字显示,键盘预先设置要倒计时的时间,按键启动倒计时装置,数码管动态显示倒计时的画面,当倒计时归零后,发出声音,提示倒计时结束。在电路中利用AT89S52单片机作为倒计时器的核心控制器,针对需要倒计时的场合实现可调时间的倒计时功能。具体的我们利用单片机的芯片的P3口作为按键的扫描接口,P2,P0口作为数码管位选和段选接口,定时器T0作为每

5、1秒减一的定时器。当“开始”按键按下时开始倒计时,三个预置键设置数码管分秒数初值。按键启动后,数码管会动态的进行显示时间,直到最后归零。倒计时完成后,通过蜂鸣器发出指示报警音,基本完成了题目要求实现的功能。由以上分析,我们可分为三个部分进行具体的设计,即输入模块、显示模块、控制模块。第一部分是输入部分,这个部分是用于倒计时的时间设置,采用四个按键实现。特点是需要元件少而且经济。第二部分是显示部分,本设计采用4个共阴数码管显示倒计时时间。由于七段数码管需要选通4个,故采用轮询方式对每一个应该点亮的数码管进行操作,按键延时采用数码管显示模块填充,从根本上防止抖动。第三部分是控制部分,利用CPU的中

6、断,在中断服务程序中执行倒计时,在倒计时完成后,采用蜂鸣器指示计时时间到与否。以上便是对倒计时装备的三大部分的设计思路,按照上面各个部分的设计,进行具体的设计来细化和实现相关功能。12M晶振独立按键数码显示管STC89C52蜂鸣器图1-1 系统硬件结构框图2 硬件模块的设计图2-1总体设计硬件电路图其中包括输入部分、显示部分和控制部分,这正好是设计思想的体现。2.1数码显示模块显示部分由两个4位数码管组成。采用动态扫描的方式像是输出的数字,当扫描的速度控制合理的时候,由于人眼的暂留效应和数码管二极管发光的余晖效应能动态显示输出的时间。 图2-1数码显示电路2.2控制部分及蜂鸣器报警模块 此模块

7、作为定时时间到后的提示音作用,直接接单片机的端口输出即可。本次采用的是无源的蜂鸣器,不用接独立的电源。图2-2 蜂鸣器报警电路图2-3 控制部分仿真图AT89S52对输入和输出进行对应的控制,同时蜂鸣器可以根据方波的频率发出声音信号,由此根据它对计时到与否进行判断。该设计中蜂鸣器在计时时间到后会一直响。2.3输入模块 本次控制的按键只有4个,分别为倒计时开始按键,加按键、减按键和切换分秒按键。本次采用的是独立按键,直接用电平高低控制。图2-3 独立按键电路3 软件设计3.1软件设计流程图本次使用C52芯片进行编程,首先初始化将主程序所用的到的子程序、变量等定义。输出报警信号开始其次还有数码显示

8、程序、独立按键程序、时钟程序和倒计时程序,系统软件的程序流程图和显示部分流程图如下:系统初始化YN按键设置倒计时时间开始数码管开始倒计时倒计时时间是否归零YN 图3-1 软件设计流程图3-2 显示子程序流程图3.2软件设计思路及原理首先,按下电源开关接通电源,通过独立按键的加、减、切换按键设置倒计时初始时间。设置完毕后按下开始键,开始倒计时。倒计时的显示采用动态扫描,显示后需要延时。打开第一个数码管,显示数字,短暂延时后,关闭数码管,再打开下一个数码管,显示数字,延时,关闭该数码管,以此类推不断地重复扫描,显示。利用定时器中断程序,在中断服务程序中进行每秒一次的计时减运算,不断扫描显示的过程其

9、实也就是等待中断的过程。通过不断对独立按键所接I/O口的扫描,按键按下相当于对应端口接地,对应端口为低电平,故检测到对应端口为低电平时执行相应的操作来完成预置数和开始计时操作。本次可编程倒计时装置采用的是外置独立的12M晶振。蜂鸣器需要输出报警音频,即需编写两种频率的报警程序,使其更像警报声,蜂鸣器是否工作也仅需一个I/O口来控制。3.3资源分配表P0口数码管段选P3.6蜂鸣器P3.4分秒切换P3.2减P2.0P2.3数码管位选P3.5独立按键开始P3.3加表3-1 资源分配表4 程序代码及课程设计效果4.1 设计的源程序#include #define uchar unsigned char

10、 sbit P2_0 = P20;sbit P2_1 = P21;sbit P2_2 = P22;sbit P2_3 = P23; /四位数码管位选sbit KEY_DEC=P32; /减sbit KEY_ADD=P33; /加sbit KEY_CHANGE=P34; /切换分,秒sbit KEY_STA RT=P35; /开始 (一共四位独立按键)sbit BEEP=P36; /蜂鸣器报警装置static unsigned char second,minute,hour; /定义分、秒、时和一些变量unsigned int tcount;unsigned int a;unsigned cha

11、r m;bit t;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f; /09数字void delay500(void) /报警器延时 uchar i; for(i=230;i0;i-);void DelayUs2x(unsigned char b) /按键消抖延时 while(-b);void DelayMs(unsigned char b) while(b-) /大致延时1mS DelayUs2x(245); DelayUs2x(245); void delay(uchar i) /显示延时 uchar

12、j,k; for(j=i;j0;j-) for(k=125;k0;k-);void display() /数码管显示子程序 P0=tableminute/10; P2_0 = 0; delay(5); P2_0 = 1; P0=(tableminute%10& 0x7f); P2_1 = 0; delay(5); P2_1 = 1; P0=tablesecond/10; P2_2 = 0; delay(5); P2_2 = 1; P0=tablesecond%10; P2_3 = 0; delay(5); P2_3 = 1; void main(void)/主程序 while(1) for(a

13、=100;a0;a-) /初始显示四个0 display(); if(!KEY_CHANGE) /判断分,秒转换键是否按下 DelayMs(10); if(!KEY_CHANGE) /延时去抖 t=t; if(t) if(!KEY_ADD) /判断分种加按键是否按下DelayMs(10);if(!KEY_ADD) /延时去抖if(minute0)minute-; if(!t) if(!KEY_ADD) /判断秒钟加按键是否按下 DelayMs(10);if(!KEY_ADD) /延时去抖if(second0)second-; if(!KEY_START) /判断开始按键是否按下 DelayMs

14、(10); if(!KEY_START) /延时去抖break; TMOD=0x02; /计时器T0初始化及开中断 TH0=0x06; TL0=0x06; TR0=1; ET0=1; EA=1; while(1)/循环显示且等待中断 for(a=100;a0;a-) display(); void t0(void) interrupt 1 using 0 /计时器T0中断服务程序即计时部分 tcount+; if(tcount=4000) tcount=0; second-;if(minute=0)&(second=0)/蜂鸣器报警 uchar j; while(1) for(a=100;a0

15、;a-) display(); for(j=200;j0;j-) BEEP=BEEP; /输出频率1KHz delay500(); /延时500us for(j=200;j0;j-) BEEP=BEEP; /输出频率500Hz delay500(); /延时1ms delay500(); if(second=0Xff) second=59; minute-; 4.2设计效果展示 将编写好的源程序用keil软件进行编程,编译,最终生成hex文件,烧写进单片机内,并在proteus上进行仿真,最后按程序连接电路图。图4-1 仿真结果最终效果图如下:开始时 00.00图4-2开始计时效果图预置时间

16、03.05图4-3 预置初始时间效果图倒计时开始:倒计时到02.46图4-4 倒计时运行效果图5 设计中遇到问题的解决及性能分析5.1设计中遇到的问题及解决 问题一:程序编写完成后,在keil软件上进行编译、调试生成hex文件进行仿真,一开始数码管显示不出完整的数字,但能实现设定初值和倒计时功能。原因及解决方案:经再次检查程序,发现程序中的0到9的数码管编码用的共阳型的,而实际仿真与实物里都选用了共阴数码管,导致显示不完整,把程序中数码管编码改掉之后就成功显示了。问题二:程序烧写完成后,打开单片机,数码管不显示数字,预置数可以完成,但是预置数的过程看不到。原因及解决方案:因为在刚开始预置数阶段

17、扫描独立按键时,没有在循环内编写数码管显示程序。故在扫描独立按键循环内加入如下程序,问题解决。for(a=100;a0;a-) /初始显示四个0 display(); 问题三:独立按键预置数时,按键不灵敏需较长时间按下才会起作用。原因及解决方案:按键去抖延时过长,将去抖延时适当缩短,此问题有所改善。问题四:计时器归零时,输出音频报警信号,但是此时数码管显示乱码。原因及解决方案:在蜂鸣器报警循环程序中没有写入合适的数码管显示程序,导致出现乱码。在蜂鸣器报警循环中,写入显示四个零的程序即可解决,在报警的同时,数码管显示四个零。5.2 性能分析本次课程设计为设计并实现可编倒计时装置,通过查阅资料,对

18、比选择方案,最终确定选用四个独立按键控制的倒计时程序。第一步程序调试成功后,生成hex文件,再进行第二步电路仿真,仿真成功后将编写的代码烧写到单片机内,检测的性能结果基本满足任务书要求。开机显示的是00-00,可以通过加、减、切换按键设置倒计时的初始时间,按下开时按键倒计时开始。倒计时归零后,蜂鸣器也会发出报警声音。不足之处在于按键的灵敏度在修改消抖延时后有所改善,但是还是不能达到理想的预期效果,按键有时会不灵敏。初步估计原因在于独立按键本身按下接触不良好以及独立按键的焊接问题。6 总结与体会作为电子信息工程专业的大三的学生,课程设计对我们来说并不陌生。通过对本次课程设计,我对自己以前所修的C

19、语言和单片机都有了更加系统的认识。更重要的是,本次课程设计让我初次接触到了keil软件和proteus仿真软件,熟系使用这两个软件对我们今后的专业学习和课设都有很大帮助。同时,在做课设的过程中我认识到自己的很多不足之处,在实际动手操作能力的不足,在进行程序编程时,自己需要,认真审题,看懂题目的要求。课程设计的出发点就是实现它要求的性能,根据课题要求,复习相关的知识,查询相关的资料。由课设条件,找到适合的方案,找到需要的元器件及工具。具体的大致为根据课程设计的要求和自己所要增加的功能写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序和增加额外的功能程序。然后再进行程序调试和相应的

20、修改,以达到能够实现所要求的功能的目的。还要根据自己设计过程中的实际情况,添加些额外程序来使系统更加的稳定,如开关的去抖(采用延迟)。一般设计的程序会比较长,因此程序要最好在后面加注释,这样在程序出错的检查过程中可以更容易查找的到,也更简洁,更明白易懂。本次课程设计的程序采用的单片机C语言。在实验过程遇到了很多小问题,比如蜂鸣器不响,数码管显示不完整等,但是不管怎样最后都通过查阅资料反复调试以及请教学长得到了期望的性能,这是最让我开心的事。理论与实际的相结合让学习变得更加有趣。课程设计是对我们综合能力的锻炼与检验,它让我熟悉了整个设计的过程,更系统的锻炼了自己。在以后的学习生活中我会努力更加深

21、入的学习专业知识,注重动手能力的培养。7 参考文献1 郭天祥编著.51单片机C语言教程-入门、提高、开发、拓展全攻略.电子工业出版社,2010.052 李群芳.单片机原理、接口及应用M.北京:清华大学出版社,20113 何光明.C语言程序设计与应用开发M.北京:清华大学出版社,20134 杨居义.单片机课程设计实例教程M.北京:清华大学出版社,20105 赵传申.单片机原理与接口技术应用教程M.北京:清华大学出版社,20106 皮大能.单片机课程设计指导书M.北京:北京理工大学出版社,2010本科生课程设计成绩评定表姓 名胡容性 别女专业、班级电子信息工程1306班课程设计题目:可编程倒计时装置课程设计答辩或质疑记录:成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备2025010119号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000987号