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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

电子时钟系统设计.docx

1、电子时钟系统设计课 程 设 计 任 务 书题目 电子时钟系统设计 专业、班级 电信11-02 学号 541101030218 姓名 李瑞 主要内容、基本要求、主要参考资料等:一、主要内容:熟悉单片机应用系统的设计方法和规范,达到综合的目的。学习文件检索和查找数据手册的能力、学习protel软件的使用。学会整理和总结设计文档报告。二、基本要求: 以MCS-51系列单片机为核心,组成一个电子时钟系统、 系统显示由6位数码管显示组成,分别显示时间值的时、分、秒。 能够随时对当前时间进行调整。 能够随时输入定时(闹钟)时间。 定时(闹钟)时间到,发出闹钟提醒信号。 闹钟提醒信号的声音为断续形式,最长不

2、超过1分钟。三、主要参考资料: 张毅坤等 单片微型计算机原理及应用 西安 西安电子科技大学出版社 李建忠编著 单片机原理及应用 西安 西安电子科技大学出版社完 成 期 限:2015年1月17日 指导教师签名: 课程负责人签名: 2015年 1月 4 日摘 要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用特别广泛、发展特别快。Intel公司生产的MCS-8051系列单片机是各单片机中最为典型和最有代表性的一种。本次设计以MCS8051芯片为核心,辅助以必要的外围电路,设计了一个结构简单功能齐全的数值时钟、在硬件方面,单片机外接12MHz芯片进行驱动。通过数码管

3、能够准确明亮的显示时、分、秒;四个简单的按键实现对时间的调整;蜂鸣器实现闹钟响铃功能;软件方面采纳c语言编程。整个电子钟系统能完成时间的显示、调试和一组定时闹钟的功能。关键词:51单片机 定时器 闹钟 数码管1 设计方案选择1、1 单片机选型 依照选题芯片采纳MCS-8051单片机,Intel公司生产的 51 系列 8 位单片机,凭借其成熟的技术标准和特别高的性价比得到了广泛的普及与应用,其功能强大,用来做电子表硬件易实现,编程规范。1、2 按键模块 方案一:44行列式键盘假如选择此方案,那么在修改时钟或设置闹铃时间时就能够直截了当从键盘输入,方便、快捷。缺点也特别明显,一是浪费按键,用全键盘

4、来实现设定时间的小功能不免大材小用;二是从实用性考虑,全键盘体积大,明显不经济不方便。故放弃。 方案二:独立式按键假如设置过多按键,将会占用较多I/O口,而且会给布线带来不便,同时浪费按键,不高效,程序繁琐、本次设计适用于按键较少的情况。为了尽量实现按键的高效性,此次设计采纳四个独立式按键,分别定义为key_mode、key_add、key_move,key_confirm,依次是模式键、加数键、移位键、确认键。1、3 显示模块方案一:液晶显示器LCD假如选择此方案,将会降低系统的功耗,能够用电池供电,便于携带,但液晶显示器的驱动电路复杂,使用起来有一定的难度。 方案二:数码管LED数码管的驱

5、动电路简单,使用方便,假如选择了此方案,那么在夜间看时间的时候就不需要有光源,特别方便、其缺点是功耗较大。 依照此次任务书设计要求,选择两个4位一体七段数码管用于显示。1。4 计时参考模块方案一:专用时钟芯片假如使用时钟芯片,系统就不怕掉电且时间精确,但这种芯片比较贵,浪费资源不经济、方案二:单片机内部定时/计数器由于本次设计本主要是为了学习单片机程序的编写和调试,以及设计硬件电路的一些方法,因此采纳软件的方法来计时、本次设计用单片机内部定时/计数器T0作为电子时钟参考、1、5 显示器驱动模块 由于通过数码管公共极的电流较大,单片机I/O口驱动能力是不够的,故LED驱动模块必不可少、为幸免过多

6、地使用分立元件,本次设计采纳一片 74LS245来驱动位码,用P2口进行位选扫描。 图1 74LS245元件封装图74LS245是常用来驱动LED或者其他的设备,它是 8 路同相三态双向总线收发器,可双向传输数据,74LS245还具有双向三态功能。片选端,接低电平时传输数据,接高电平常A、B均为高阻态。方向选择端AB/,接高电平常信号由A向B传输(发送),接低电平常信号由B向A传输(接收)、1、6 闹钟响铃模块 通过三极管放大后驱动蜂鸣器工作,单片机I/O接三极管基极。1。7 电源模块本系统采纳了数码管作为显示器,功耗较大,不便于使用电池供电、况且本系统的体积较大,即使使用电池供电也不便于随身

7、携带,因此用5V外部稳压电源来供电、2 硬件接线及设计图2 系统硬件框图2。1 单片机晶振配置图3 单片机晶振配置和复位电路晶振选择 12MHz ,接到如图所示引脚。2。2复位电路设计图4 复位电路复位电路兼具上电复位功能以及按键复位功能,接到如图所示引脚。2、3 按键电路设计图5 按键电路采纳4个独立按键配以4个上拉电阻实现对时钟和闹钟的设定及修改。四个独立式按键分别定义为key_mode、key_add、key_move、key_confirm,依次是模式键、调时加键、调时移位键、确认键。2、4 蜂鸣器驱动电路设计图6 蜂鸣器驱动电路蜂鸣器采纳NPN三极管放大电路驱动,接到如图所示引脚。2

8、。5 显示模块电路设计显示设备为共阳7段数码管(LED),用单片机P0口作为LED段选控制端,用单片机P2口作为LED位选控制端,并采纳集成块74LS245作为位驱动模块、片选端接地,方向选择端AB/接电源。3 软件部分3。1 主函数流程图图7 主函数程序流程图3、2 定时器T0中断服务程序流程图图8 定时器T0中断服务程序流程图3。3 闹钟响应程序流程图图9 闹钟响应程序流程图3、4 键盘扫描程序流程图图10 键盘扫描程序流程图4 系统综述4、1 上电界面电子表上电后自动初始化,接着从 00-00-00 开始走时,显示正常走时界面,此时闹钟默认关掉。按下key_mode键,可依次切换到调时界

9、面、调闹钟界面、正常走时界面,如此循环往复。上电初始化后,调时初值为00 00-00,闹钟初值为0000 00。4、2 调时界面调时界面,从左至右依次显示时、分、秒,数字右下角小点代表调整位到达位置。在调时界面下,按下key_move键能够移动调整位,数字下标小点用以指示当前操作的数位,按下key_add键能够对调整位进行加数操作。当且仅当在调时界面下,按下key_confirm键可确认设定,电子表按设定时间更新并走时,同时自动清零设定时间。此时再按 key_mode键切换回正常走时界面即能看到时间差不多更新。假如调时后没有按下key_confirm键确认,而是直截了当按key_mode键切换

10、回正常走时界面,则设置时间被保存,当前时间并不更新。4。3 闹钟设定界面闹钟设定界面,从左至右依次显示时、分、秒,数字右下角小点代表调整位到达位置。在闹钟设定界面下,按下key_move键能够移动调整位,数字下标小点用以指示当前操作的数位,按下key_add键能够对调整位进行加数操作。闹钟设置好后直截了当按key_mode键返回正常正常走时界面即可,无需按key_confirm键确认,闹钟设定值会自动保存。4、4 正常走时界面正常走时界面,从左至右依次显示时、分、秒,小点亮灭代表闹钟开闭。在正常走时界面下,按下key_add键和key_move键不产生操作,LED显示无变化;按下key_con

11、firm键可循环开闭闹钟,LED显示对应变换提示闹钟的开闭;按下key_mode键可依次切换到调时模式、闹钟设定模式、正常走时模式,循环往复。4。5 闹钟响应当正常走时到达闹铃设定值后,闹铃响应,正常情况下持续蜂鸣一分钟后自动关闭蜂鸣器。闹铃响铃过程中,若按下key_confirm键可立刻关闭蜂鸣器。闹铃响应后自动等待下次响应。总 结在这次课程设计中,运用到了特别多往常的专业知识,尽管过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率特别高,这是我做这次课程设计的一大收获、另外,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,明白该单片机内有

12、哪些资源;要有一个清楚的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白您的思路,如此也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是特别正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,然而从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各

13、样的问题。在设计的过程中发现了自己的不足之处,对往常所学过的知识理解得不够深刻,掌握得不够牢固,不能灵活运用、参考文献1郑君里,应启珩,杨为理。 信号与系统(第二版)上册M、 高等教育出版社,20002郑君里,应启珩,杨为理。 信号与系统(第二版)下册M。 高等教育出版社,20003谭浩强、 C程序设计(第二版)M。 清华大学出版社,20034 于京、51系列单片机C程序设计与应用案例M、北京:中国电力出版社,2006、5 孙育才、ATMEL新型AT89S52系列单片机及其应用M、北京:清华大学出版社, 2005、6吴坚,刘高平。基于GPRS网络的点对点图像传输方案J。计算机应用研究,2004

14、,附 录附录1 总体设计电路图附录2 PCB图附录3 元件清单序号元件名称规格型号/参数数量(个)1单片机AT89C5112显示驱动三极管Q113晶振12MHz14电容33pF210F15按键S116排阻10217电阻10K14。7K18蜂鸣器LS119数码管4BIT_8SEG_LED210驱动芯片74LS2451附录4 总程序/*头文件及宏定义*include reg51、hdefine uchar unsigned char#define uint unsigned int/*软件延时程序*void delay(uint ii) while(-ii); /*定义数码管驱动码*uchar d

15、uan=0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF,0X7F; /段选,0 1 2 3 4 5 6 7 8 9 灭 。uchar wei=0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80;/位选,共阳,从右至左/*定义变量*uchar t=0,sec=0,min=0,hour=0; /正常走时时间变量uchar sec1=0,min1=0,hour1=0; /时间设定值变量uchar sec2=0,min2=0,hour2=0; /闹钟设定值变量uchar alarm_en=0; /闹钟开

16、关变量uchar alarm_flag=0; /闹钟定时到达标志变量uchar p3=0,moshi=0,mov=0; /P3口查询,模式值,调整位/显示缓冲区,依次为正常、调时、闹钟设定、调整位带点标记uchar temp8,temp18,temp28,temp38;/*函数声明*void initialize(void); /初始化void show(void); /正常走时显示void show1(void); /时间设定显示void show2(void); /闹钟设定显示void show3(void); /调整位标记void show4(void); /闹钟开关标记void key

17、scan(void); /键盘扫描void add(void); /调时调闹钟加数程序void confirm(void); /调时确认,闹钟开关void alarm_judge(void); /闹钟定时到达判定void beep(void); /闹钟响铃程序/*主函数*void main() initialize(); while(1) keyscan(); alarm_judge(); switch(moshi) case 0:show(); show4();break; /显示正常走时 case 1:show1();show3();break; /显示设置时间 case 2:show2(

18、);show3();break; /显示闹钟时间 if(alarm_flag=1 & alarm_en=1) /定时时间到达且闹钟打开 beep(); /*定时器初始化*void initialize(void) TMOD = 0x01; TH0 = 0X3C; TL0 = 0XB0; /50ms ET0 = 1; EA = 1;TR0 = 1; P1=0X7F; /初始化时关掉蜂鸣器 alarm_flag=alarm_en=0;/*定时器T0中断服务程序*void Timer0(void) interrupt 1 TL0 = 0XB0; TH0 = 0X3C; t+; if(t=20) /

19、(50ms*20=1s) t=0; sec+; if(sec=60) / 秒为60,则清零,分加1 sec=0; min+; if(min=60) / 分为60,则清零,时加1 min=0; hour+; if(hour=24) / 时为24,则清零 hour=0; if(sec1=60) sec1=0; min1+; if(min1=60) min1=0; hour1+; if(hour1=24) hour1=0; if(sec2=60) sec2=0; min2+; if(min2=60) min2=0; hour2+; if(hour2=24) hour2=0;/*正常时间显示程序*vo

20、id show(void) uchar i=0; temp0=sec10; temp1=sec/10; temp2=10; temp3=min10; temp4=min/10; temp5=10; temp6=hour10; temp7=hour/10; for(i=0;i=3) moshi=0; while(p3=0XFE) / key_mode键按下到弹起期间 p3=P3; switch(moshi) case 0:show(); break; /显示正常走时 case 1:show1();break; /显示设置时间 case 2:show2();break; /显示闹钟时间 if(p3

21、=0XFD) /key_add键 delay(10); if(p3=0XFD) add(); while(p3=0XFD) / key_add键按下到弹起期间 p3=P3; switch(moshi) case 0:show(); break; /显示正常走时 case 1:show1();break; /显示设置时间 case 2:show2();break; /显示闹钟时间 if(p3=0XFB) /key_move键 delay(10); if(p3=0XFB) mov+; if(mov=3) mov=0; while(p3=0XFB) / key_move键按下到弹起期间 p3=P3;

22、 switch(moshi) case 0:show(); break; /显示正常走时 case 1:show1();break; /显示设置时间 case 2:show2();break; /显示闹钟时间 if(p3=0XF7) /key_confirm键 delay(10); if(p3=0XF7) confirm(); while(p3=0XF7) / key_confirm键按下到弹起期间 p3=P3; switch(moshi) case 0:show(); break; /显示正常走时 case 1:show1();break; /显示设置时间 case 2:show2();br

23、eak; /显示闹钟时间 /*调时调脑钟增数程序*void add(void) /模式1,调时模式,调时增数 if(moshi=1 mov=0) sec1+; if(moshi=1 & mov=1) min1+; if(moshi=1 mov=2) hour1+; /模式2,闹钟设定模式,闹钟增数 if(moshi=2 & mov=0) sec2+; if(moshi=2 & mov=1) min2+; if(moshi=2 & mov=2) hour2+; /*确认键服务函数*void confirm(void) if(moshi=1) /模式1,调时环境下校正时间 t=TF0=0; sec=sec1; min=min1; hour=hour1; sec1=

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

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