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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(完整word版倒计时秒表.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

完整word版倒计时秒表.docx

1、完整word版倒计时秒表单片机课程设计课题:倒计时秒表系 别:电气与控制工程学院 专 业:姓 名: 学 号: 成 绩: 河南城建学院2018年 01月 3日一, 设计目的通过课程设计,使自己深刻理解并掌握基本概念,掌握单片机的基本应用程序设计及综合应用程序设计的方法。通过做倒计时秒表这个题目,达到对所学知识的消化、理解并提高解决问题的能力的目的。任选一款51单片机来做这个倒计时秒表,显示方式可以自选,成品必须可以实现正常秒表的所有功能,包括启动、暂停、复位等,可以自由设定倒计时时间,并进行倒计时。做好之后可以扩展功能,在秒表的基础上增加时钟功能,倒计时完成时加入报警单元,如声音、灯光等。二,设

2、计任务及要求1、可以以实现正常秒表的所有功能,包括启动、暂停、复位等;2、可以自由设定倒计时时间(10s、20s、30s),并进行倒计时;3、显示方式自选;4、任选一款51单片机;5、扩展功能:在秒表的基础上增加时钟功能,倒计时完成时加入报警单元,如声音、灯光等。三,方案设计倒计时数字秒表的设计主要考虑以下几个问题:一,LED如何显示数字09;二,如何用单片机来控制LED的显示;三,单片机最小模式下的设计。处理好这些问题此设计才能完整,为此必须先了解LED的显示原理和接线方 图1系统结构框图法,再了解单片机的组成原理和控制方法。硬件电路的绘制和软件程序的编写是此次设计的关键和基础,只有硬件电路

3、的设计是正确的、合理的,软件设计才可以根据硬件电路编程,以下的设计才能够进行。系统结构框图如图1。四,硬件设计1)CPU部分如图2所示 XTAL1与XTAL2跟时钟振荡模块链接P0.0-P0.7与排阻相连,做上拉电阻P1.2口是“设置模式”num10,num20,num30,num50,num100P1.1口是“开始”倒计时端口 P1.0口是“暂停”口P2.3口是给轰鸣器送触发信号口图2 CPU引脚接图2)时钟振荡模块 时钟振荡电路用于产生单片机正常工作时所需要的时钟信号,电路由两个20pF的瓷片电容和一个12MHz的晶振组成,并接入到单片机的XTAL1和XTAL2引脚处,使单片机工作于内部振

4、荡模式。此电路在加电后延迟大约10ms振荡器起振,在XTAL2引脚产生正弦波时钟信号,其振荡频率主要由石英晶振的频率决定。电路中两个电容C1、C2的作用使电路快速起振,提高电路的运行速度。时钟振荡电路图如图3所示。图3时钟振荡电路图3)数码管显示部分 数码管是一种显示屏,可以通过对其不同的管脚输入相对的电流 并使其发亮,发光从而显示出数字能够显示出时间、日期、温度 等所有可用数字表示的参数。由于它的价格便宜,使用简单,在电器,特别是家电领域应用极为广泛。在空调,热水器,冰箱,等等绝大多数,热水器用的都是数码管,其他家电 也用液晶屏与,荧光屏等等。在做倒计时秒表的时候选用的是SMG_2型号的数码

5、管。A到DP依次接单片机的的P0.0P0.7口,如图4所示。图4数码管显示电路图4)蜂鸣器部分如图5所示。蜂鸣器部分选用的电阻的大小是1K,三极管的型号是9032。9012是现在常用的PNP三极管,放大倍数一般在160210之间。PNP型三极管,由2块P型半导体中间夹着1块N型半导体所组成的三极管,称为PNP型三极管。晶体三极管按材料分有两种:锗管和硅管。而每一种又有NPN和PNP两种结构形式,但使用最多的是硅NPN和PNP两种三极管,两者除了电源极性不同外,其工作原理都是相同的。图5蜂鸣器报警电路图5)硬件总体电路图如图6所示。单片机的P0.0-P0.7与排阻连接,P1.0口连接暂停键,P1

6、.1口连接开始键,P1.2连接设置按钮,P2.3连接蜂鸣器报警模块。XTAL1与XTZL2与时钟振荡模块连接。时钟振荡模块电路连接两个20PF的电容和一个12MHz的晶振,电路中两个电容C1、C2的作用使电路快速起振,提高电路的运行速度。数码管A到DP依次接单片机的的P0.0P0.7口。图6硬件总体电路图五,软件设计软件流程图,如图7所示。1)本电路应用TIMER0 MODE 16位计数器的计时中断法。 2)1秒等于1000000微秒,而每一计时脉冲是1微秒,因此需输入100000个计时脉冲,方可达到1秒的时间。本设计中,设定中断每次溢出时间50ms。3)由上式得知,循环20次即可达到1秒定时

7、,即: N=t/Tcy=0.05s/0.000001=5000X=65536-5000=15536=3CB0H4)由上式得知5000个脉冲,首先需设定TL0=3CH,TH0=0B0H,此时第1次只要输入5000个脉冲输入,就会溢出;第2次至第20次,则需每1000000个计时脉冲,定时1秒。5)上电时,显示60,开始倒数计时按下开关实现复位。图7软件流程图六,仿真及调试 Proteus中的仿真如图8所示。单片机的P0.0-P0.7与排阻连接,P1.0口连接暂停键,P1.1口连接开始键,P1.2连接设置按钮,P2.3连接蜂鸣器报警模块。XTAL1与XTZL2与时钟振荡模块连接。时钟振荡模块电路连

8、接两个20PF的电容和一个12MHz的晶振,电路中两个电容C1、C2的作用使电路快速起振,提高电路的运行速度。数码管A到DP依次接单片机的的P0.0P0.7口。图8仿真图实物效果图如图9所示。 焊接的时候,整个过程还是比较顺利的,但是在焊接电源按钮开关时出现了一些问题。电源开必须一直按着整个电路才能通电,按一下松开电路不会通电,经过几次试验仍然没有找到原因,只能把电源开关拆了重新焊接,仔细检查焊接的过程发现是开关的引脚没有穿过洞洞板,焊接的时候开关引脚没有与洞洞板相连,解决了这个问题之后整个电路才正常工作。电路的正常工作电压是5V,正常工作时通过的电流是2A。图9实物效果图7,设计总结通过这次

9、课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 焊接的时候,整个过程还是比较顺利的,但是在焊接电源按钮开关时出现了一些问题。电源开必须一直按着整个电路才能通电,按一下松开电路不会通电,经过几次试验仍然没有找到原因,只能把电源开关拆了重新焊接,仔细检查焊接的过程发现是开关的引脚没有穿过洞洞板,焊接的时候开关引脚没有与洞洞板相连,解决了这个问题之后整个电路才正常工作。电路的正常工作电压是5V,正常工作时通过的电流是2A。这毕竟第一次做的,难免会遇到过各种

10、各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好通过这次课程设计之后,一定把以前所学过的知识重新温故。参考文献1 张毅刚,俞洋,刘丹,邓立宝。单片机原理与应用设计,电子工业出版社2015.62 赵建领,薛圆圆。51单片机开发与应用,电子工业出版社,2009.13张迎辉 贡雪梅。单片机实训教程,北京大学出版社,2008.6附录:#include #define uchar unsigned char #define uint unsigned int /无符号整型 宏定义 变量范围06

11、5535#include uchar code smg_du=0x90,0xf5,0x1c,0x34,0x71,0x32,0x12,0xf4,0x10,0x30, 0xff; /断码/数码管位选定义sbit we2 = P25; sbit we1 = P27;uchar dis_smg8 = 0x90,0xf5,0x1c,0x34,0x71,0x32,0x12,0xf4; bit flag_500ms;sbit beep = P23;uchar a_a;uchar menu_1; /设置参数用uchar num; / 倒计时数uchar num_value; / 用做中间的变量bit flag

12、_num_en ; / 倒计时器开始计时使能标志位uchar set_num = 30; / 设置倒计时数的启始值 /*1ms延时函数*/void delay_1ms(uint q) uint i,j; for(i=0;iq;i+) for(j=0;j120;j+);/*数码管位选函数*/void smg_we_witch(uchar dat) switch(dat) case 1 : we1 = 0; we2 = 1; break; /打开个位 case 0 : we1 = 1; we2 = 0; break; /打开十位 /*定时器0初始化程序*/void time_init() EA =

13、 1; /开总中断 TMOD = 0X01; /定时器0、工作方式1 ET0 = 1; /开定时器0中断 TR0 = 1; /允许定时器0定时/*数码显示函数*/void display() uchar i; for(i=0;i= 2) menu_1 = 0; if(menu_1 = 0) /倒计时器按键操作开始 暂停 if(key_can = 2) /开始键 flag_num_en = 1; beep = 0; /打开蜂鸣器 delay_1ms(30); beep = 1; /关闭蜂鸣器 if(key_can = 3) /暂停键 flag_num_en = 0; beep = 0; /打开蜂

14、鸣器 delay_1ms(30); beep = 1; /关闭蜂鸣器 if(menu_1 = 1) /设置倒计时器开始数 if(key_can = 2) set_num + ; / 设置数加 if(set_num 99) set_num = 99; /最大加到99 dis_smg0 = smg_duset_num % 10; /取个数显示 dis_smg1 = smg_duset_num / 10 % 10 ; /取十位显示 if(key_can = 3) set_num - ; / 设置数减 if(set_num = 1) set_num = 1; /最大减到1 dis_smg0 = smg

15、_duset_num % 10; /取个数显示 dis_smg1 = smg_duset_num / 10 % 10 ; /取十位显示 num = set_num; /倒计时数等于设置数 /*主程序*/ void main() time_init(); num = set_num; /开机显示设置数 while(1) key(); /按键扫描函数 if(key_can 10) key_with(); /按键执行函数 if(menu_1 = 0) /扫描显示倒计时数 dis_smg0 = smg_dunum % 10; dis_smg1 = smg_dunum / 10; if(flag_500ms = 1) flag_500ms = 0; if(num = 10) value = 0; flag_500ms = flag_500ms; if(flag_num_en = 1) num_value +; if(num_value = 20) /1s钟 num -; /倒计数减一次 if(num = 0) beep = 1; /关闭蜂鸣器 num = set_num; /让显示最大数 flag_num_en = 0;

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

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