单片机定时闹钟设计

上传人:汽*** 文档编号:551733844 上传时间:2023-09-07 格式:DOC 页数:45 大小:176KB
返回 下载 相关 举报
单片机定时闹钟设计_第1页
第1页 / 共45页
单片机定时闹钟设计_第2页
第2页 / 共45页
单片机定时闹钟设计_第3页
第3页 / 共45页
单片机定时闹钟设计_第4页
第4页 / 共45页
单片机定时闹钟设计_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《单片机定时闹钟设计》由会员分享,可在线阅读,更多相关《单片机定时闹钟设计(45页珍藏版)》请在金锄头文库上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date单片机定时闹钟设计单片机课程Proteus课程定时闹钟的设计专业: 电子信息科学与技术 学号: 0908050106 姓名: 陈宇 摘要本次课程设计是在单片机授课结束的情况下,通过老师的指导和小组同学的协助,独立自主的完成项目设计,我们小组选定的是定时闹钟的设计,下面简单阐述一下该项目的设计思路。利用动态数码管作为显示器,K20-K27作为输入按键,蜂鸣器作为声音输出

2、制作一个定时闹钟。最后结果要求做到:1、正确显示时分。2、可以利用按钮调整时间和设定闹钟时间。3、当时间到达设定的闹钟时间时,蜂鸣器发出嘀、嘀、嘀的报警声。4、通过串口在PC上设定时间和闹钟。关键字:定时闹钟 目录1. 设计思想2. STC89C52RC单片机简要介绍3. 内部定时器计数器中断系统简介4. 键盘和LED数码管显示器简介5. 程序流程图及设计相关事宜6. 课程设计感悟总结附录:7. 参考文献8. Proteus软件仿真图9. 基于C语言的程序设计STC89C52RC单片机简要介绍单片机应用系统由硬件系统和软件系统两部分组成。硬件系统是指单片机以及扩展的存储器、IO接口、外围扩展的

3、功能芯片以及接口电路。软件系统包括监控程序和各种应用程序。 在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和IO接口,使单片机应用系统能够运行。 在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED指示灯就可以进行处理了。在单片机应用系

4、统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。显示器可以是LED指示灯,也可以是LED数码管,也可以是LCD显示器,还可以使用CRT显示器。单片机应用系统中键盘一般用的比较多是矩阵键盘,显示器用的比较多的是LED数码管还LCD显示器。内部定时器计数器中断系统1、MCS-51系列中51子系列有两个16位的可编程定时计数器可:定时计数器T0和定时计数器T1。它由加法计数器、方式寄存器TMOD、控制寄存器TCON等组成。方式寄存器用于设定定时计数器T0和T1的工作方式,控制寄存器用于对定时计数器启动、停止进行控制。 2、每个定时计数器既可以对系统时钟计数实现定时,也可以外部信号计数实现计数功能通

5、过编程设定来实现。 3、每个定时计数器都有多种工作方式,其中T0有四种工作方式,T1有三种工作方式,T2有三种工作方式。通过编程可设定工作于某种方式。四种工作方式为:13位定时计数器、16位定时计数器、8位自动重置定时计数器、两个8位定时计数器(只有T0有) 4、每一个定时计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。中断系统:1、MCS-51单片机提供5个硬件中断源,2个外部中断源,2个定时计数器T0和T1的溢出中断TF0和TF1,1个串行口发送TI和接收RI中断。2、MCS-51单片机中没有专门的开中断和关中断指令,对各个中断源的允许和屏蔽是由内部的中断

6、允许寄存器IE的各位来控制的。中断允许寄存器IE的字节地址为A8H,可以进行位寻址。系统复位时,中断允许寄存器IE的内容为00H,如果要开放某个中断源,则必须使IE中的总控置位和对应的中断允许位置“1”。3、MCS-51单片机有5个中断源,为了处理方便,每个中断源有两级控制,高优先级和低优先级。通过由内部的中断优先级寄存器IP来设置,中断优先级寄存器IP的字节地址为B8H,可以进行位寻址。如果某位被置“1”,则对应的中断源被设为高优先级;如果某位被清零,则对应的中断源被设为低优先级。对于同级中断源,系统有默认的优先权顺序,从高到低优先权顺序为外部中断0、定时计数器T0中断、外部中断1、定时计数

7、器T1中断、串行口中断。通过设置中断优先级寄存器IP能够改变系统默认的优先级顺序。4、MCS-51单片机响应中断的条件为:中断源有请求且中断允许。键盘和LED数码管显示器简介键盘是单片机应用系统中最常用的输入设备,在单片机应用系统中,操作人员一般都是通过键盘向单片机系统输入指令、地址和数据,实现简单的人机通信。键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。键盘的结构形式一般有两种:独立式键盘和矩阵式键盘。矩阵式键盘的工作方式有3种:查询工作方式、定时扫描工作方式和中断工作方式。LED数码管显示器在单片机应用系统中,经常用到LED数码管作为显示输出设备,LED

8、数码管显示器虽然显示信息简单,但它具有显示清晰、亮度高、使用电压低、寿命长、与单片机接口方便等特点,基本上能够满足单片机应用系统的需要,所以在单片机应用系统中经常用到。LED数码管显示器是由发光二极管按一定的结构组合起来的显示器件。在单片机应用系统中通常使用的是8段式LED数码管显示器,它有共阴极和共阳极两种。所谓译码方式是指由显示字符转换得到对应的字段码的方式。对于LED数码管显示器,通常的译码方式有两种:硬件译码方式和软件译码方式。LED数码管在显示时,通常有两种显示方式:静态显示方式和动态显示方式。在使用时可以把它们组合起来。在实际应用时,如果数码管个数较少,通常用硬件译码静态显示,在数

9、码管个数较多时,则通常用软件译码动态显示。主程序流程图定时器/计数器T0用于时间计时。选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把它们的值放到存储单元的指定位置。定时器/计数器T0中断服务程序流程图,如图,见下页开始现场保护,重置初值启动下一个50ms50ms 计数器加1秒单元加1,50ms计数器清0,秒写入秒个位和秒十位50ms 计数器=20?是

10、分单元加1,秒单元清0,分写入分个位和分十位秒单元=60?分单元=60?中断返回否否否是是设计思想及操作用定时计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,设初值。形成定时时间为50ms。用片内RAM的7BH单元对50ms计数,计20次产生秒计数器78H单元加1,秒计数器加到60则分计数器79H单元加1,。然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。显示格式为分十位、分个位-秒十位、秒个位。在处理过程中加上了按键判断程序,能对按键处理。按键处理设置为:如没有按键,则时钟正常走时。当按下K0按键时,进入调分状态,时钟停止走动;按K

11、1可K2按键可进行加1或减1操作;继续按K0键可分别进行分的调整;最后按K0键将退出调整状态,时钟开始计时运行。1、在PROTEUS中设计硬件PROTEUS软件使用过程如下:1)选择元器件2)放置元器件3)连线4)添加程序5)运行仿真2、在KEIL51中编写程序,编译、连接形成HEX文件。3、在PROTEUS中把HEX文件加载到单片机芯片上。4、运行仿真看结果。参考程序#include #define uint unsigned int#define uchar unsigned charuchar code segcode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d

12、,0x07,0x7f,0x6f; /09uchar code segcode2=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef; /带小数点09uchar buffer=0,0,0,0;uchar buffer2=0,0,0,0; /闹钟uint hou,min,sec;uint hou2,min2=0; /闹钟uint i,status,num;bit flag,flag1,keyrelease;sbit alarm=P37;uchar buf,keyinput;void display();void keyscan();void keyp

13、rocess(unsigned char key);void delayMS(uint t)uint i;while(t-)for(i=0;i125;i+);void init() /初始keyrelease=1;buf=0x0f;min2=2; /避免打开就鸣叫,设闹钟分=2flag=0;TMOD=0x21;TH0=(65536-5000)/256;TL0=(65536-5000)%256;TH1=0xfd;TL1=0xfd;SCON=0x50;PCON=0x00;TR1=1;IP=0x10;TR0=0;IE=0x92; /开总、定时器0,串口中断void main()init();whil

14、e(1)keyscan();display();if(hou=hou2&min=min2&sec5) /仿真使用alarm=alarm;/ if(hou=hou2&min=min2&sec5) /实际硬件使用/ / alarm=0;/ / else/ alarm=1;void keyscan() /键盘扫描keyinput=P2&0x0f;if(keyinput!=0x0f)delayMS(5);if(keyinput!=0x0f)if(keyrelease=1) /不可缺keyrelease=0; /按住不放buf = keyinput; /buf 用来暂时存放键值else /没按下while(keyinput!=0x0f);/如果不松手就停在此处keyrelease=1;keyprocess(buf);buf=0x0f;/按键处理函数void keyprocess(unsigned char key) /键值处理,正常计时,设置时分秒 switch (key)case 0x0e:num+ ; /

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号