![C51单片机实现电子闹钟_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-10/10/4e5fdf39-0474-4c75-9a3e-8e55744890f7/4e5fdf39-0474-4c75-9a3e-8e55744890f71.gif)
![C51单片机实现电子闹钟_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-10/10/4e5fdf39-0474-4c75-9a3e-8e55744890f7/4e5fdf39-0474-4c75-9a3e-8e55744890f72.gif)
![C51单片机实现电子闹钟_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-10/10/4e5fdf39-0474-4c75-9a3e-8e55744890f7/4e5fdf39-0474-4c75-9a3e-8e55744890f73.gif)
![C51单片机实现电子闹钟_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-10/10/4e5fdf39-0474-4c75-9a3e-8e55744890f7/4e5fdf39-0474-4c75-9a3e-8e55744890f74.gif)
![C51单片机实现电子闹钟_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-10/10/4e5fdf39-0474-4c75-9a3e-8e55744890f7/4e5fdf39-0474-4c75-9a3e-8e55744890f75.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程名称:单片机原理与接口技术实践 设计课题: 基于MCS 51单片机实现电子闹钟功能的设计学 院:电子与信息工程学院专 业:通信工程小组成员:电子闹钟在科学技术高度发展的今天,千家万户都少不了它,所以很多家庭个人都需要有一个电子闹钟,为人们提供报时方便,但普通电子闹钟不够方便实用。本文给出了一种基于MCS51单片机实现电子闹钟功能的设计方法,从而给人们带来更为方便的工作与生活。一.电子闹钟简介我们设计的电子闹钟是以MCS 51单片机中的计时器作为时钟,用8位数码管显示当前时间,并且可以设置闹钟时间,并在设置的时间点发出闹铃。简易闹钟具有以下功能:1.时钟能准确地走时,并可以通过数码管进行显示
2、2.复位后可以进行当前时间的设置3.可以随意设置闹钟时间,闹钟会在设置时间响铃整个系统的任务要求:1)输入数字按键的功能。保证数字的输入。2)复位电路的功能。所有时间回到初始化状态,用于启动设定时间参数(调时或设定闹钟时间);3)显示电路的功能。当输入数字时显示24小时时间功能。4) 闹铃功能设置闹铃的时间后.能按设置好的时间准时闹铃。二.系统方案的设计要求 根据以上各模块并结合显示屏的功能及元器件材料的情况,决定采用AT89C51为内核显示设计方案。先进行系统的整体规划确定整个系统的功能,然后按照每个功能的具体要求,进行各个模块的实物设计并逐个调试,待全部通过后,进行整个系统的联调,最终实现
3、一个完整的系统。整个系统的设计步骤如下:在单片机最小系统的基础上,完成按键电路和复位电路的设计。完成显示电路、数字按键、单片机时钟电路。硬件设计系统硬件的设计可以根据系统的各个功能,把整个系统划分成若干个模块,分别对这些模块来进行设计,然后在通过单片机程序来实现对各个硬件模块功能的调度。本系统涉及到的硬件模块有:按键电路、数码管显示电路、单片机时钟电路、蜂鸣器电路。各部分实现功能如下:按键电路:提供按键信号。单片机时钟电路、复位电路:提供内部时钟。数码管驱动显示电路:显示当前时间。蜂鸣器电路:闹钟报时。 软件设计本系统的软件部分主要完成功能:时分秒的进位算法处理、数码管的时间显示、时间调整设置
4、、闹钟功能。根据软件的功能划分软件设计模块结构,如下所示其中各个模块具体任务如下:按键驱动模块:对各个按键的功能进行相关的定义。LED驱动模块:根据系统需要显示相应的数字时间;时间处理模块:时、分、秒的进位算法处理三.系统硬件电路的设计1根据确定的硬件方案设计硬件框图,如下图所示:单片机蜂鸣器电路晶振电路复位电路按键电路数码管驱动及显示2系统原理图的设计系统总的硬件电路如下图所示 实际要用到5个按键,受空间限制仿真电路中只画出4个。单片机管脚资源分配:P0口为数码管段选信号输出口。P3口为数码管位选信号输出口。P1.0、P1.1、P1.2、P1.3、P1.4为键盘的输入信号。P3.6为蜂鸣器信
5、号的输出口。下面分别介绍各个电路。(1)数码管驱动及显示电路本设计采用8位7段共阳极数码管用来显示时间。为了将时间在LED数码管上显示可采用动态显示法。通过对每位数码管的依次扫描,使对应数码管亮;同时向该数码管送对应的字码使其显示数字。由于数码管扫描周期很短,而且人眼有视觉暂留效应,所以数码管看起来总是亮的从而实现了数字的同时显示。 数码管主要包括位选和段选信号线。位选是用来选通数码管的,只有位选信号有效该数码管才会亮并显示要现实的数字;段选是选择数码管7段的那一笔亮,从而显示不同的数字。本设计中单片机P0口输出段选数据,P3口输出位选数据。数码管与单片机相连的电路如下图所示:电路中使用了芯片
6、74ls245,该芯片用来驱动LED。其片选引脚要接地,使其一致为低电平,芯片一直可以工作。(2)晶振电路晶体以及电容C1、C2构成并联谐振电路,接在放大器的反馈回路中构成内部单片机内部时钟。晶体可在1.2MHz-12MHz之间任选,电容C1、C2的典型值为通常选择为30pF左右,这时对应的始终频率为12MHz。单片机内部晶振电路图及连接电路如下:(3)按键电路本设计采用行列式按键电路,它由行线和列线组称成,按键位于行列的交叉点。一个4*4的行列结构可以构成一个16个按键的键盘,如下图所示。在按键数目较多的场合,行列式按键可以节省很多的I/O口线。 按键的识别是通过扫描来实现的。单片机会依次扫
7、描每一行和每一列,通过行线和列线的电平高低即可判断哪个按键被按下。 本设计中用到四个按键,P1.0、P1.1、P1.2、P1.3 、P1.4,分别用于时间校准设置、定闹设置、秒分时切换、加1调整、减1调整。按键与单片机相连电路如下:由原理图可以明显看出,当按键未被按下时,对应引脚为高电平;按键被按下时为低电平。通过扫描即可辨别哪一个按键被按下。本题画出的虽然是独立按键,但是内部驱动依然是行列式按键的驱动,这里只是为了画图方便。(4)复位电路当按下复位键时单片机进入复位状态,可以进行时间的设置等。电路图如下所示:四.系统软件部分的设计本设计的软件系统用来配合硬件电路实现特定的功能。程序主要包含键
8、盘扫描模块、时间处理模块、和数码管显示程序3大部分。程序大致流程如下:开始 否 是否按下设置键 是设置时间和闹钟的时间 时钟开始正常走时 否当前时间等于闹钟时间?是 闹铃响1.时间处理模块单片机晶振频率为12MHz,一个机器周期等于12个振荡脉冲周期,因此机器时序频率是振荡频率的1/12,即1MHz,所以一个机器周期为1s。本设计用的是计时器0的方式1,对于方式1,计数个数M与计数初值N的关系为 M=216 N,定时时间t与计数个数M和初值N的关系为 t = M*机器周期 =(216-N)*时钟周期*12。计时过程中,秒sec等于60时清零,分min加一;分min等于60时清零,小时hour加
9、一;当小时大于24时,置为0。时分秒的进位算法代码如下:void timecontrol() sec+; if(sec=60) /秒sec到60清零,分min加一 sec=0; min+; if(min=60)/分min到60清零,时hour加一 min=0; hour+; if(hour=24)/小时hour等于24时清零 hour=0; 定时器的先关设置:void main() TMOD=0x01; /定时器0工作在方式1 TH0=(65536-45872)/256; /装初值,50ms TL0=(65536-45872)%256; EA=1; /总中断允许 ET0=1; /T0中断允许
10、TR0=1; /开定时器0 while(1) keyscan_settime(); keyscan_time(); buz(); 2.数码管显示模块 本设计中以P0口作为数码管的段选输出,P3口为位选信号输出。由于所用数码管为共阳极连接,所以要点亮的数码管位选端为高电平1.位选信号的I/O口声明#include#define uchar unsigned char#define uint unsigned int sbit s1=P30; /数码管位选控制端的定义sbit s2=P31;sbit s3=P32;sbit s4=P33;sbit s5=P34;sbit s6=P35;sbit s
11、7=P36;段码表:uchar code mum=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /共阳数码管0-9编码数码管显示函数如下:void display(uchar zs,uchar zm, uchar zh) /数码管显示函数 s1=1;/P3即S系列输出位选信号P0=mumzh/10; /P0输出段选信号 ,显示小时的十位 delayms(5);s1=0; s2=1;P0=mumzh%10&0x7f; /显示时的个位加上小数点delayms(5);s2=0; s3=1;P0=mumzm/10; /显示分的十位delayms(
12、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时分秒选择,k4加数字,k5减数字。*/sbit k1=P10; sbit k2=P11;sbit k3=P12;sbit k4=P13;sbit k5=P14;键盘
13、扫描以进行时间设置void keyscan_settime() /时间设置模块 uchar st,mt,ht; if(k1=0) delayms(10); /延迟一段时间再次扫描以达到软件消抖的目的 if(k1=0) st=sec,mt=min,ht=hour; TR0=0; /关闭定时器 while(k1=0) /等待用户按键 display(st,mt,ht); if(k3=0) delayms(10); if(k3=0) while(!k3); ss+; if(ss=3) ss=0; /*通过ss选择时分秒设置*/ if(k4=0) /加数 delayms(10); if(k4=0) w
14、hile(!k4); switch(ss) case 0:st+;if(st=60)st=0;break; case 1:mt+;if(mt=60)mt=0;break; case 2:ht+;if(ht=24)ht=0;break; default :; if(k5=0) /减数 delayms(10); if(k5=0) while(!k5); switch(ss) case 0:if(st0)st-; else st=0;break; case 1:if(mt0)mt-; else mt=0;break; case 2:if(ht0)ht-; else ht=0;break; defau
15、lt : ; TR0=1; /设置完毕,开启定时器 sec=st,min=mt,hour=ht; display(sec,min,hour);用户定闹钟时间模块void keyscan_time() /用户定时模块 if(k2=0) delayms(10); if(k2=0) s=sec;m=min;h=hour; while(k2=0) /开始定时设置 display(s,m,h); if(k3=0) delayms(10); if(k3=0) while(!k3); ss+; if(ss=3) ss=0; /*通过ss选择时分秒设置*/ if(k4=0) /加一 delayms(10);
16、if(k4=0) while(!k4); switch(ss) case 0:s+;if(s=60)s=0;break; case 1:m+;if(m=60)m=0;break; case 2:h+;if(h=24)h=0;break; default :; if(k5=0) /减一 delayms(10); if(k5=0) while(!k5); switch(ss) case 0:if(s0)s-; else s=0;break; case 1:if(m0)m-; else m=0;break; case 2:if(h0)h-; else h=0;break; default : ; 4
17、.其他程序 (1)delay延时函数 void delayms(uint k) /延时函数 uint i,j; for(i=k;i0;i-) for(j=110;j0;j-); 该函数是一个循环,对于输入的k值,本程序将循环k*110次以达到延时的目的。 (2)闹铃函数 void buz()if(hour=h)&(min=m)&(sec=s) s7=0; delayms(20); s7=1; 当闹钟走时与用户设置的闹钟时间相等时(时分秒都相等),s7对应的I/O口输出低电平,蜂鸣器响。一段时间后s7输出变为高电平,停止响。 (3)中断入口程序 void T0_ms() interrupt 1 /中断入口程序 TH0=(65536-45872)/256; /重新装初值 TL0=(65536-45872)%256; count+; if(count=20) /判定1s时间是否已到 count=0; timecontro
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版历史八年级上册(2017年新编)《第6课戊戌变法》(听课评课记录)
- 苏科版数学八年级上册听评课记录《4-3实数(1)》
- 新版华东师大版八年级数学下册《18.1平行四边形的性质2》听评课记录
- 苏科版数学七年级下册听评课记录12.2证明1
- 人教版部编历史七年级上册《第12课 汉武帝巩固大一统王朝》听课评课记录2
- 2022版新课标七年级上册道德与法治第五课交友的智慧第二课时网上交友新时空听课评课记录
- 创业糕点店创业计划书
- 专利技术许可证合同范本
- 厂房出租安全生产管理协议书范本
- 高额质押典当合同范本
- 《VAVE价值工程》课件
- 四川政采评审专家入库考试基础题复习试题及答案(一)
- 分享二手房中介公司的薪酬奖励制度
- 安徽省2022年中考道德与法治真题试卷(含答案)
- GB 4793-2024测量、控制和实验室用电气设备安全技术规范
- 项目人员管理方案
- 重大火灾隐患判定方法
- 挖掘机售后保养及维修服务协议(2024版)
- 2024年电工(高级技师)考前必刷必练题库500题(含真题、必会题)
- 2024年全国各地中考语文试题汇编:名著阅读
- 公司组织架构与管理体系制度
评论
0/150
提交评论