C51单片机实现电子闹钟_第1页
C51单片机实现电子闹钟_第2页
C51单片机实现电子闹钟_第3页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、课程名称 :单片机原理与接口技术实践 设计课题:基于 MCS51 单片机实现电子闹 钟功能的设计 学院:电子与信息工程学院 专业:通信工程 小组成员: 电子闹钟在科学技术高度发展的今天 , 千家万户都少不了它 , 所以很多家庭 个人都需要有一个电子闹钟,为人们提供报时方便 , 但普通电子闹钟不够方便实 用。本文给出了一种基于MCS5单片机实现电子闹钟功能的设计方法,从而给人 们带来更为方便的工作与生活。一 . 电子闹钟简介我们设计的电子闹钟是以 MCS51单片机中的计时器作为时钟,用 8位数码 管显示当前时间,并且可以设置闹钟时间,并在设置的时间点发出闹铃。 简易闹钟具有以下功能:1. 时钟能

2、准确地走时,并可以通过数码管进行显示2. 复位后可以进行当前时间的设置3. 可以随意设置闹钟时间,闹钟会在设置时间响铃 整个系统的任务要求:1)输入数字按键的功能。保证数字的输入。2)复位电路的功能。所有时间回到初始化状态 ,用于启动设定时间参数 (调时或设定闹钟时间) ;3)显示电路的功能。当输入数字时显示 24 小时时间功能。4)闹铃功能设置闹铃的时间后 . 能按设置好的时间准时闹铃。. 系统方案的设计要求根据以上各模块并结合显示屏的功能及元器件材料的情况,决定采用AT89C5伪内核显示设计方案。先进行系统的整体规划确定整个系统的功能, 然后按照每个功能的具体 要求,进行各个模块的实物设计

3、并逐个调试,待全部通过后,进行整个系统 的联调,最终实现一个完整的系统。整个系统的设计步骤如下: 在单片机最小系统的基础上,完成按键电路和复位电路的设计。 完成显示电路、数字按键、单片机时钟电路。I硬件设计系统硬件的设计可以根据系统的各个功能, 把整个系统划分成若干个模 块,分别对这些模块来进行设计,然后在通过单片机程序来实现对各个硬件 模块功能的调度。本系统涉及到的硬件模块有:按键电路、数码管显示电路、单片机时钟 电路、蜂鸣器电路。各部分实现功能如下: 按键电路:提供按键信号。 单片机时钟电路、复位电路:提供内部时钟。 数码管驱动显示电路:显示当前时间。蜂鸣器电路:闹钟报时。H软件设计本系统

4、的软件部分主要完成功能: 时分秒的进位算法处理、 数码管的时间显 示、时间调整设置、闹钟功能。根据软件的功能划分软件设计模块结构,如下所示 其中各个模块具体任务如下: 按键驱动模块:对各个按键的功能进行相关的定义。LED驱动模块:根据系统需要显示相应的数字时间;时间处理模块:时、分、秒的进位算法处理三 . 系统硬件电路的设计1 根据确定的硬件方案设计硬件框图,如下图所示:蜂鸣器电路晶振电路单<=按键电路片复位电路机数码管驱动Sj及显示2系统原理图的设计系统总的硬件电路如下图所示实际要用到5个按键,受空间限制仿真电路中只画出 4个。单片机管脚资源分配:P0 口为数码管段选信号输出口。P3

5、口为数码管位选信号输出口。P1.0、P1.1、P1.2、P1.3、P1.4 为键盘的输入信号。P3.6为蜂鸣器信号的输出口。下面分别介绍各个电路。(1)数码管驱动及显示电路本设计采用8位7段共阳极数码管用来显示时间。为了将时间在LED数码 管上显示可采用动态显示法。通过对每位数码管的依次扫描,使对应数码管亮; 同时向该数码管送对应的字码使其显示数字。由于数码管扫描周期很短,而且 人眼有视觉暂留效应,所以数码管看起来总是亮的从而实现了数字的同时显示。数码管主要包括位选和段选信号线。位选是用来选通数码管的,只有位选信 号有效该数码管才会亮并显示要现实的数字; 段选是选择数码管7段的那一笔 亮,从而

6、显示不同的数字。本设计中单片机P0 口输出段选数据,P3 口输出位选数据数码管与单片机相连的电路如下图所示:电路中使用了芯片74IS245,该芯片用来驱动LED其片选引脚要接地,使其一 致为低电平,芯片一直可以工作。(2)晶振电路晶体以及电容C1、C2构成并联谐振电路,接在放大器的反馈回路中构成内部 单片机内部时钟。晶体可在1.2MHZ-12MHZ之间任选,电容C1、C2的典型值为通 常选择为30pF左右,这时对应的始终频率为12MHz单片机内部晶振电路图及连接电路如下:(3)按键电路本设计采用行列式按键电路,它由行线和列线组称成,按键位于行列的交叉 点。一个4*4的行列结构可以构成一个16个

7、按键的键盘,如下图所示。在按键 数目较多的场合,行列式按键可以节省很多的 I/O 口线。按键的识别是通过扫描来实现的。单片机会 由原理图可以明显看出,当按键未被按下时,对应引脚为高电平;按键被按下时 为低电平。通过扫描即可辨别哪一个按键被按下。依次扫描每一行和每一列,通过行线和列线的电平高低即可判断哪个按键被按下。本设计中用到四个按键,P1.0、P1.1、P1.2、P1.3、P1.4,分别用于时间校准设置、定闹设置、秒分 时切换、力卩1调整、减1调整。按键与单片机相连电路如下:U1L111J-III1K1K2o心1kJK4144P3.07RXDP3.1/TXDP3 2/INTGP3.3/WP3

8、.4fTOP3 5/T1P2.0/AEP2 1/A9P2.2/A10PSENP2.3/A11ALEP2.4/A12EAP2.6/A13!P2.6/A14P2.7/A15>>CTAL1XTAL2RST.0.4.5.6.7 Ji - ,旷Ji p p p p p p p p呂M1/丄3/17 /29/10/11/$PO.Q/ADO P0.VAD1P0.2/AD2P0.3/AD3PG.4/AD4P0.6/AD5P0.6/AD6PO.7/AD7393826P3.7/RD本题画出的虽然是独立按键,但是内部驱动依然是行列式按键的驱动, 这里只是 为了画图方便。复位电路当按下复位键时单片机进入复

9、位状态,可以进行时间的设置等。 电路图如下所示:四.系统软件部分的设计本设计的软件系统用来配合硬件电路实现特定的功能。程序主要包含键盘扫描模块、时间处理模块、和数码管显示程序 3大部分。程序大致流程如下:开始 *单片机晶振频率为12MHz 个机器周期等于12个振荡脉冲周期,因此机 器时序频率是振荡频率的1/12,即1MHz所以一个机器周期为1卩S。本设计用的是计时器0的方式1,对于方式1,计数个数M与计数初值N的 关系为M=2a& N,定时时间t与计数个数M和初值N的关系为t=M*机器周期 =(2A16-N)* 时钟周期 *12。计时过程中,秒sec等于60时清零,分min加一;分mi

10、n等于60时清零,小时 hour加一;当小时大于24时,置为0。时分秒的进位算法代码如下:voidtimeco ntrol()?sec+;?if(sec=60)/秒 sec到 60 清零,分 min 加一二1?sec=0;?min+;?if(min=60)/ 分 min 到 60 清零,时 hour 加一?min=O;?hour+;?if(hour=24)/ 小时 hour 等于 24 时清零?hOUr=0;?定时器的先关设置:voidmai n()?TMOD=0x01;?定时器 0 工作在方式 1 ?TH0=(65536-45872)/256;?装初值,50ms ?TL0=(65536-45

11、872)%256;?EA=1;?/ 中断允许?ET0=1;?/T中 断允许?TR0=1;?开定时器 0?while(1)?keysca n_settime();?keysca n_time();?buz();?2. 数码管显示模块本设计中以P0 口作为数码管的段选输出,P3口为位选信号输出。由于所用数码管为共阳极连接,所以要点亮的数码管位选端为高电平1.位选信号的I/O 口声明#in clude<reg51.h>#defi neuchar un sig nedchar#defi neui ntu nsig ned in t?sbits仁P39?数码管位选控制端的定义sbits2=P

12、3A1;sbits3=P3A2;sbits4=P3A3;sbits5=P3A4;sbits6=P3A5;sbits7=P3A6;段码表:ucharcodemum=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;共阳数码管0-9编码数码管显示函数如下:voiddisplay(ucharzs,ucharzm,ucharzh)?数码管显示函数?s1=1;P3即S系列输出位选信号?P0=mumzh/10;/P0输出段选信号,显示小时的十位?delayms (5);?s1=0;?s2=1;?P0=mumzh%10&0x7f;?显示时的个位加上小

13、数点?delayms (5);?s2=0;?s3=1;?P0=mumzm/10;? 显示分的十位?delayms (5);?s3=0;?s4=1;?P0=mumzm%10&0x7f;?/分的个位加上小数点?delayms (5);?s4=0;?s5=1;?P0=mumzs/10; 秒的十位?delayms (5);?s5=0;?s6=1;?P0=mumzs%10; / 秒的个位?delayms (5);?s6=0;3. 键盘扫描模块首先要声明各个按键的功能以及对应的I/O 口,然后驱动程序将对按键进行扫描 以识别被按下的键。按键对应I/O 口声明/*k1设置时间,k2定时,k3时分秒选

14、择,k4加数字,k5减数字。*/sbitk 1=P1A0;?sbitk2=P1A1;sbitk3=P1A2;sbitk4=P1A3;sbitk5=P1A4;键盘扫描以进行时间设置voidkeysca n_settime()? 时间设置模块?ucharst,mt,ht;?if(k 仁=0)?delayms(10);/延迟一段时间再次扫描以达到软件消抖的目的?if(k 仁=0)?st=sec,mt=mi n,ht=hour; ?TRO=O;?关 闭定时器 ?while(k1=0)? 等待用户按键 ?display(st,mt,ht);? ?if(k3=0)?delayms(10); ?if(k3=

15、0)?while(!k3); ?ss+;?if(ss=3)?ss=0; ?/*通过ss选择时分秒设置*/ ?if(k4=0)?/加数 ?delayms(10); ?if(k4=0) ? ?while(!k4); ?switch(ss) ?case1?case2?case0:st+;if(st=60)st=0;break; mt+;if(mt=60)mt=0;break; ht+;if(ht=24)ht=0;break;?default:;? ? ?if(k5=0)?/减数 ?delayms(10); ?if(k5=0) ? ?while(!k5); ?switch(ss) ?case0:if(

16、st>0)st-; ?else?st=0;break; ?case1:if(mt>0)mt-;?case2:if(ht>0)ht-;?e|se?ht=o;break;?default:;? ?TR0=1;/设置完毕,开启定时器?sec=st,m in=mt,hour=ht;?display(sec,mi n,hour);用户定闹钟时间模块voidkeysca n_time()? 用户定时模块?if(k2=0)?delayms(10);?if(k2=0)?s=sec;m=mi n; h=hour;?while(k2=0)? 开始定时设置?display(s,m,h);?if(k

17、3=0)?delayms(10);?if(k3=0)?while(!k3);?ss+;?if(ss=3)?ss=0;?/*通过ss选择时分秒设置*/?if(k4=O)?/加一?delayms(10);?if(k4=0)?while(!k4);?switch(ss)?case0:s+;if(s=60)s=0;break; ?case1:m+;if(m=60)m=0;break;?case2:h+;if(h=24)h=0;break;? ?default:;?if(k5=0)?/减一?delayms(10);?if(k5=0)?while(!k5);?switch(ss)?caseO:if(s&g

18、t;O)s-;?else?s=O;break;?case1:if(m>0)m-;?else?m=O;break;?case2:if(h>0)h-;?else?h=O;break;?default:;?4. 其他程序(1) delay延时函数voiddelayms(uintk)? 延时函数?ui nti,j;?for(i=k;i>0;i-)?for(j=110;j>0;j-);该函数是一个循环,对于输入的k值,本程序将循环k*110次以达到延时的目的(2) 闹铃函数voidbuz()if(hour=h)&&( mi n=m)&&(sec=s)?s7=0;?delayms(20);?s7=1;?当闹钟走时与用户设置的闹钟时间相等时(时分秒都相等),s7对应的I/O 口输 出低电平,蜂鸣器响。一段时间后s7输出变为高电平,停止响。(3) 中断入口程序voidTO_ms()interruptl?/ 中断入口程序?TH0=(65536-45872)/256;? 重新装初值?TL0=(65536-45872)%256;?cou nt+;?if(cou nt=20)? 判定 1s 时间是否已

温馨提示

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

评论

0/150

提交评论