电子时钟系统设计 精品.doc_第1页
电子时钟系统设计 精品.doc_第2页
电子时钟系统设计 精品.doc_第3页
电子时钟系统设计 精品.doc_第4页
电子时钟系统设计 精品.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 设计方案选择1.1 单片机选型 根据选题芯片采用MCS-8051单片机,Intel公司生产的 51 系列 8 位单片机,凭借其成熟的技术标准和很高的性价比得到了广泛的普及与应用,其功能强大,用来做电子表硬件易实现,编程规范。1.2 按键模块 方案一:44行列式键盘如果选择此方案,那么在修改时钟或设置闹铃时间时就可以直接从键盘输入,方便、快捷。缺点也很明显,一是浪费按键,用全键盘来实现设定时间的小功能不免大材小用;二是从实用性考虑,全键盘体积大,明显不经济不方便。故放弃。 方案二:独立式按键如果设置过多按键,将会占用较多I/O口,而且会给布线带来不便,同时浪费按键,不高效,程序繁琐。本次设计适用于按键较少的情况。为了尽量实现按键的高效性,此次设计采用四个独立式按键,分别定义为key_mode、key_add、key_move,key_confirm,依次是模式键、加数键、移位键、确认键。1.3 显示模块方案一:液晶显示器LCD如果选择此方案,将会降低系统的功耗,可以用电池供电,便于携带,但液晶显示器的驱动电路复杂,使用起来有一定的难度。 方案二:数码管LED数码管的驱动电路简单,使用方便,如果选择了此方案,那么在夜间看时间的时候就不需要有光源,非常方便。其缺点是功耗较大。 按照此次任务书设计要求,选择两个4位一体七段数码管用于显示。1.4 计时参考模块方案一:专用时钟芯片如果使用时钟芯片,系统就不怕掉电且时间精确,但这种芯片比较贵,浪费资源不经济。方案二:单片机内部定时/计数器由于本次设计本主要是为了学习单片机程序的编写和调试,以及设计硬件电路的一些方法,因此采用软件的方法来计时。本次设计用单片机内部定时/计数器T0作为电子时钟参考。1.5 显示器驱动模块 由于通过数码管公共极的电流较大,单片机I/O口驱动能力是不够的,故LED驱动模块必不可少。为避免过多地使用分立元件,本次设计采用一片 74LS245来驱动位码,用P2口进行位选扫描。 图1 74LS245元件封装图74LS245是常用来驱动LED或者其他的设备,它是 8 路同相三态双向总线收发器,可双向传输数据,74LS245还具有双向三态功能。片选端,接低电平时传输数据,接高电平时A、B均为高阻态。方向选择端AB/,接高电平时信号由A向B传输(发送),接低电平时信号由B向A传输(接收)。1.6 闹钟响铃模块 通过三极管放大后驱动蜂鸣器工作,单片机I/O接三极管基极。1.7 电源模块本系统采用了数码管作为显示器,功耗较大,不便于使用电池供电。况且本系统的体积较大,即使使用电池供电也不便于随身携带,因此用5V外部稳压电源来供电。2 硬件接线及设计8位七段LED显示器MCS-8051段码驱动晶 振复位电路位码驱动按 键蜂鸣器图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.5 显示模块电路设计显示设备为共阳7段数码管(LED),用单片机P0口作为LED段选控制端,用单片机P2口作为LED位选控制端,并采用集成块74LS245作为位驱动模块。片选端接地,方向选择端AB/接电源。3 软件部分3.1 主函数流程图开 始初始化定时器T0循环中断计时主循环键盘扫描闹钟判定显示响应闹钟响应结 束图7 主函数程序流程图开 始3.2 定时器T0中断服务程序流程图T0重装初值t+1t=20?t=0, sec+1sec=60??sec=0, min+1min=60??min=0, hour+1hour=24??hour=0结 束图8 定时器T0中断服务程序流程图3.3 闹钟响应程序流程图开 始闹钟判定闹钟定时到?闹钟打开?key_confirm按下?响铃一分钟关闭蜂鸣器结 束图9 闹钟响应程序流程图3.4 键盘扫描程序流程图开 始键盘扫描有键按下?键盘抖动?key_confirmkey_movekey_addkey_modeconfirm();mov+1add( );moshi+1moshi2?mov2?moshi=0mov=0结 束 图10 键盘扫描程序流程图4 系统综述4.1 上电界面电子表上电后自动初始化,接着从 00-00-00 开始走时,显示正常走时界面,此时闹钟默认关掉。按下key_mode键,可依次切换到调时界面、调闹钟界面、正常走时界面,如此循环往复。上电初始化后,调时初值为00 00-00,闹钟初值为00-00 00。4.2 调时界面调时界面,从左至右依次显示时、分、秒,数字右下角小点代表调整位到达位置。在调时界面下,按下key_move键可以移动调整位,数字下标小点用以指示当前操作的数位,按下key_add键可以对调整位进行加数操作。当且仅当在调时界面下,按下key_confirm键可确认设定,电子表按设定时间更新并走时,同时自动清零设定时间。此时再按 key_mode键切换回正常走时界面即能看到时间已经更新。如果调时后没有按下key_confirm键确认,而是直接按key_mode键切换回正常走时界面,则设置时间被保存,当前时间并不更新。4.3 闹钟设定界面闹钟设定界面,从左至右依次显示时、分、秒,数字右下角小点代表调整位到达位置。在闹钟设定界面下,按下key_move键可以移动调整位,数字下标小点用以指示当前操作的数位,按下key_add键可以对调整位进行加数操作。闹钟设置好后直接按key_mode键返回正常正常走时界面即可,无需按key_confirm键确认,闹钟设定值会自动保存。4.4 正常走时界面正常走时界面,从左至右依次显示时、分、秒,小点亮灭代表闹钟开闭。在正常走时界面下,按下key_add键和key_move键不产生操作,LED显示无变化;按下key_confirm键可循环开闭闹钟,LED显示对应变换提示闹钟的开闭;按下key_mode键可依次切换到调时模式、闹钟设定模式、正常走时模式,循环往复。4.5 闹钟响应当正常走时到达闹铃设定值后,闹铃响应,正常情况下持续蜂鸣一分钟后自动关闭蜂鸣器。闹铃响铃过程中,若按下key_confirm键可立刻关闭蜂鸣器。闹铃响应后自动等待下次响应。附 录附录1 总体设计电路图附录2 PCB图附录3 元件清单序号元件名称规格型号/参数数量(个)1单片机AT89C5112显示驱动三极管Q113晶振12MHz14电容33pF210F15按键S116排阻10217电阻10K14.7K18蜂鸣器LS119数码管4BIT_8SEG_LED210驱动芯片74LS2451附录4 总程序/*头文件及宏定义*#include #define uchar unsigned char#define uint unsigned int/*软件延时程序*void delay(uint ii) while(-ii); /*定义数码管驱动码*uchar duan=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; /闹钟开关变量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 keyscan(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();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) / (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;/*正常时间显示程序*void show(void) uchar i=0; temp0=sec%10;temp1=sec/10;temp2=10; temp3=min%10; temp4=min/10;temp5=10;temp6=hour%10;temp7=hour/10; for(i=0;i8;i+) P2=weii; P0=duantempi; delay(100); /*调时模式显示程序*void show1(void) uchar i=0; temp10=sec1%10;temp11=sec1/10;temp12=10; temp13=min1%10; temp14=min1/10;temp15=11;temp16=hour1%10;temp17=hour1/10; for(i=0;i8;i+) P2=weii; P0=duantemp1i; delay(100); /*闹钟设定模式显示程序*void show2(void) uchar i=0; temp20=sec2%10;temp21=sec2/10;temp22=11; temp23=min2%10; temp24=min2/10;temp25=10;temp26=hour2%10;temp27=hour2/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=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; 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) cas

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论