基于51单片机实现的简单闹钟设计

合集下载

(完整word版)C51单片机实现电子闹钟

(完整word版)C51单片机实现电子闹钟

课程名称:单片机原理与接口技术实践设计课题:基于MCS 51单片机实现电子闹钟功能的设计学院:电子与信息工程学院专业:通信工程小组成员:电子闹钟在科学技术高度发展的今天,千家万户都少不了它,所以很多家庭个人都需要有一个电子闹钟,为人们提供报时方便,但普通电子闹钟不够方便实用。

本文给出了一种基于MCS51单片机实现电子闹钟功能的设计方法,从而给人们带来更为方便的工作与生活。

一.电子闹钟简介我们设计的电子闹钟是以MCS 51单片机中的计时器作为时钟,用8位数码管显示当前时间,并且可以设置闹钟时间,并在设置的时间点发出闹铃。

简易闹钟具有以下功能:1.时钟能准确地走时,并可以通过数码管进行显示2.复位后可以进行当前时间的设置3.可以随意设置闹钟时间,闹钟会在设置时间响铃整个系统的任务要求:1)输入数字按键的功能。

保证数字的输入。

2)复位电路的功能。

所有时间回到初始化状态,用于启动设定时间参数(调时或设定闹钟时间);3)显示电路的功能。

当输入数字时显示24小时时间功能。

4)闹铃功能设置闹铃的时间后.能按设置好的时间准时闹铃。

二.系统方案的设计要求根据以上各模块并结合显示屏的功能及元器件材料的情况,决定采用AT89C51为内核显示设计方案。

先进行系统的整体规划确定整个系统的功能,然后按照每个功能的具体要求,进行各个模块的实物设计并逐个调试,待全部通过后,进行整个系统的联调,最终实现一个完整的系统。

整个系统的设计步骤如下:在单片机最小系统的基础上,完成按键电路和复位电路的设计。

完成显示电路、数字按键、单片机时钟电路。

Ⅰ硬件设计系统硬件的设计可以根据系统的各个功能,把整个系统划分成若干个模块,分别对这些模块来进行设计,然后在通过单片机程序来实现对各个硬件模块功能的调度。

本系统涉及到的硬件模块有:按键电路、数码管显示电路、单片机时钟电路、蜂鸣器电路。

各部分实现功能如下:按键电路:提供按键信号。

单片机时钟电路、复位电路:提供内部时钟。

基于51单片机的简易数字钟系统设计

基于51单片机的简易数字钟系统设计

简易数字钟系统设计完成一个简易数字时钟系统设计。

要求:用3个独立按键调整时间。

一个按键控制启动运行。

在调整结束后按运行键后开始运行。

1,开机时,显示00:00:00时间从零开始调整。

2,P10控制秒的调整,每按一次加1s。

3,p11控制分的调整,每按一次加1min。

4,p12控制时的调整,每按一次加1h。

5,p13控制运行和停止。

程序:#include<reg52.h>sbit key1=P3^4;sbit key2=P3^5;sbit key3=P3^6;sbit key4=P3^7;#define uchar unsigned char#define uint unsigned intuchar shi,ge,aa,num,num1,num2,tt;uint n;uchar q1,q2,b1,b2;sbit dula=P2^6;sbit wela=P2^7;void keyscan();void delay(uint);void display();uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void keyscan(){if(key1==0){ num2++;if(num2==24)num2=0;while(!key1);if(key2==0){num1++;if(num1==60)num1=0;while(!key2);}if(key3==0){num++;if(num==60)num=0;while(!key3);}if(key4==0){ TR0=~TR0;while(!key4);}}void main(){TMOD=0x00;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;while(1){ k eyscan();display();}}void time0()interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt++;if(tt==100){ tt=0;num++;if(num==60){ num=0;num1++;if(num1==60){ num1=0;num2++;if(num2==24)num2=0;}}}}void display(){q1=num2/10;q2=num2%10;b1=num1/10;b2=num1%10;shi=num/10;ge=num%10;wela=1;P0=0xfe;wela=0;P0=0xff;P0=table[q1]; dula=0; delay(1);wela=1;P0=0xfd; wela=0;P0=0xff; dula=1;P0=table[q2]; dula=0; delay(1);wela=1;P0=0xfb; wela=0;P0=0xff; dula=1;P0=table[b1]; dula=0; delay(1);wela=1;P0=0xf7; wela=0;P0=0xff; dula=1;P0=table[b2]; dula=0; delay(1);wela=1;P0=0xef; wela=0;P0=0xff; dula=1;P0=table[shi]; dula=0; delay(1);wela=1;P0=0xdf;P0=0xff;dula=1;P0=table[ge];dula=0;delay(1);}void delay(uint x){uint i,j;for(i=x;i>0;i--)for(j=110;j>0;j--); }。

基于51单片机的简易电子时钟

基于51单片机的简易电子时钟

基于51单片机的简易电子时钟设计摘要今天,电子时钟是生活中不可或缺的一部分。

电子时钟通过数码管显示,具有整点报时等功能,可以使得我们的生活变得更加有序。

电子时钟也通过不断地改进,变得功能越来越强大。

本次设计的电子时钟利用单片机STC89C51进行控制的,利用单片机自身的定时器功能,采用数码管显示,可对电子时钟进行调整校准。

此设计具有相当重要的现实意义和实用价值。

基于单片机STC89C51的电子时钟,采用数码管显示“时“分“秒”而且可用按键进行调整校准。

此次设计与传统的机械表相比,它具有走的更精准,显示更直观等特点,而且单片机的数字时钟具有灵活编程,便于功能扩充等特点。

本次所设计主要有三个模块:显示模块,按键模块,闹铃模块。

该时钟采用STC89C51单片机自身定时器进行计时,按键模块采用独立式键盘(4个按键),闹铃部分由8550三极管和蜂鸣器构成,显示时、分、秒用两个四位共阴极数码管显示,具有可调整时间功能和设定闹钟功能,在设计过程中硬件和软件应同时进行。

关键词:电子时钟,单片机,闹钟,蜂鸣器SIMPLE ELECTRONIC CLOCK DESIGN BASED ON 51MCUABSTRACTToday , the electronic clock is an integral part of life . Through the digital display electronic clock , with the whole point timekeeping function , can make our life more orderly . The electronic clock also through continuous improvement , has become more and more powerful .The design of the electronic clock using STC89C51 MCU to control the use of single-chip , self timer function , the use of digital tube display , can adjust the calibration of the electronic clock . Has very important realistic significance and practical value of this design .The electronic clock based on MCU STC89C51 , using digital tube display " when " " seconds " and the button can be used to adjust the calibration . And the design of the traditional mechanical watch , it has to go more accurate , more intuitive display characteristics , and the digital clock has flexible programming , easy to function expansion and so on .This design has three main modules : the display module , keyboard module , alarm module . The clock uses STC89C51 microcontroller timer timing , key module with separate keyboard (4 buttons), the alarm is composed of 8550 transistors and a buzzer , when the display is divided bytwo seconds , four common cathode digital display , which can adjust the time and set the alarm function , hardware and software in the design process should be carried out at the same time .Key Words : electronic clock , microcontroller , alarm clock , a buzzer目录第一章绪论....................................................... - 1 -1.1 课题背景及意义.............................................. - 1 -1.2 课题内容.................................................... - 1 -1.2.1 题目及要求 ............................................ - 1 -1.2.2 主要部分 .............................................. - 2 - 第二章方案....................................................... - 3 -2.1 功能要求.................................................... - 3 -2.3 数码管显示方案.............................................. - 3 - 第三章电子时钟的硬件设计......................................... - 5 -3.1 电子时钟的组成.............................................. - 5 -3.2 单片机最小系统图............................................ - 5 -3.3 STC89C51引脚功能 ........................................... - 6 -3.4 数码管显示模块.............................................. - 7 -3.5 闹铃部分.................................................... - 7 -3.6 按键模块.................................................... - 8 - 第四章电子时钟的软件设计......................................... - 9 -4.1 电子时钟程序流程框图........................................ - 9 -4.2 按键调整流程图............................................. - 10 -4.3 子程序的设计............................................... - 11 -4.3.1 数码管显示模块 ....................................... - 11 -4.3.2 按键子模块 ........................................... - 11 -4.3.3 主程序 ............................................... - 12 - 第五章硬件的制作与测试分析...................................... - 13 -5.1 电子时钟的硬件制作......................................... - 13 -5.2 硬件测试................................................... - 13 -5.3 软件调试................................................... - 13 -5.4 测试结果分析与结论......................................... - 14 -5.4.1 数码管测试结果分析 ................................... - 14 -5.4.2 按键测试结论 ......................................... - 14 -5.4.3测试结论.............................................. - 15 - 总结与致谢....................................................... - 17 - 参考文献......................................................... - 19 - 附录............................................................. - 21 - 附录一分组表.................................................. - 21 - 附录二程序.................................................... - 22 - 附录三电子时钟实物图.......................................... - 33 -第一章绪论1.1 课题背景及意义二十一世纪的今天,电子时钟已经融入到千千万万户家庭中,它已经成为了人们生活中不可或缺的一部分。

51单片机电子闹钟程序(亲自编写,可用)

51单片机电子闹钟程序(亲自编写,可用)

学校电子钟,有闹钟功能,按键可调时间,可调打铃时间,打铃时间长短显示,每个模块有功能注释。

其中正常时间显示和闹钟时间显示可用一个开关来调整。

芯片选择STC89C52程序:#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//定义显示段码uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};uchar codebbtime[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar clock[]={0,0,0,0};uchar clock1[]={12,30,0};uchar weikong[6];uchar bbduration=4;uchar lingtime=9;//学校打铃时间组uchar shangwu1[]={8,30};uchar shangwu2[]={10,0};uchar shangwu3[]={10,20};uchar shangwu4[]={11,50};uchar xiawu1[]={13,30};uchar xiawu2[]={15,00};uchar xiawu3[]={15,15};uchar xiawu4[]={16,45};//按键定义sbit mode=P1^7;sbit sec_clr=P1^0;sbit min_set_add=P1^3;sbit min_set_sub=P1^4;sbit hour_set_add=P1^1;sbit hour_set_sub=P1^2;sbit bb_set_add=P1^5;sbit bb_set_sub=P1^6;sbit speaker=P2^6;//延时函数void delay(unsigned int t){while(t--);//时钟进位函数void clockjinwei(){clock[0]++;if(clock[0]==20){clock[1]++;clock[0]=0;if(clock[1]==60){clock[2]++;clock[1]=0;if(clock[2]==60){clock[3]++;clock[2]=0;if(clock[3]==24)clock[3]=0;}}}}//定时器0中断服务函数void timer0(void) interrupt 1 using 1 {TMOD=0x01;TH0=0x3c;TL0=0xb0;clockjinwei();}//时钟分位显示函数void fenwei(){weikong[0]=clock[3]/10;weikong[1]=clock[3]%10;weikong[2]=clock[2]/10;weikong[3]=clock[2]%10;weikong[4]=clock[1]/10;weikong[5]=clock[1]%10;}//闹钟分位显示函数void naofen(){weikong[0]=clock1[0]/10;weikong[1]=clock1[0]%10;weikong[2]=clock1[1]/10;weikong[3]=clock1[1]%10;weikong[4]=clock1[2]/10;weikong[5]=clock1[2]%10; }//闹钟定时显示函数void naozhongdisplay(){uchar z,s;uchar x=0x01;naofen();for(z=0;z<6;z++){P2=0;P0=table[weikong[z]];P2=x;x=_crol_(x,1);for(s=0;s<255;s++);}}//时钟显示函数void display(){uchar i,j;uchar x=0x01;fenwei();for(i=0;i<6;i++){P2=0;P0=table[weikong[i]];P2=x;x=_crol_(x,1);for(j=0;j<255;j++);}}//总显示函数void zhongxian(){if(mode==1)delay(100);if(mode==1)display();if(mode==0)delay(100);if(mode==0)naozhongdisplay();}//按键处理程序void key_set(){zhongxian();P1=0xff;if(min_set_add==0){delay(100);if(min_set_add==0){if(mode==1){clock[2]++;if(clock[2]==60){clock[2]=0;}while(min_set_add==0)zhongxian();}}if(mode==0){clock1[1]++;if(clock1[1]==60){clock1[1]=0;}while(min_set_add==0)zhongxian();}}//if(min_set_sub==0){delay(100);if(min_set_sub==0){if(mode==1){clock[2]--;if(clock[2]==0)clock[2]=59;}while(min_set_sub==0)zhongxian();if(mode==0){clock1[1]--;if(clock1[1]==0)clock1[1]=59;}while(min_set_sub==0)zhongxian();}}//if(hour_set_add==0){delay(100);if(hour_set_add==0){if(mode==1){clock[3]++;if(clock[3]==24){clock[3]=0;}while(hour_set_add==0)zhongxian();}if(mode==0){clock1[0]++;if(clock1[0]==24){clock1[0]=0;}while(hour_set_add==0)zhongxian();}}}//if(hour_set_sub==0){delay(100);if(hour_set_sub==0){if(mode==1){clock[3]--;if(clock[3]==0)clock[3]=23;}while(hour_set_sub==0)zhongxian();if(mode==0){clock1[0]--;if(clock1[0]==0)clock1[0]=23;}while(hour_set_sub==0)zhongxian();}}//if(sec_clr==0){delay(100);if(sec_clr==0){clock[1]=0;}while(sec_clr==0)zhongxian();}}//闹钟响铃函数void bb(){if(clock[1]<=bbduration){speaker=1;delay(100);speaker=0;}else speaker=0;}//打铃函数void daling(){if(clock[1]<=lingtime){speaker=1;delay(100);speaker=0;}else speaker=0;}//时间比较函数void bijiao(){if(clock[3]==shangwu1[0]){if(clock[2]==shangwu1[1])daling();}if(clock[3]==shangwu2[0]){if(clock[2]==shangwu2[1])daling();}if(clock[3]==shangwu3[0]){if(clock[2]==shangwu3[1])daling();}if(clock[3]==shangwu4[0]){if(clock[2]==shangwu4[1])daling();}if(clock[3]==xiawu1[0]){if(clock[2]==xiawu1[1])daling();}if(clock[3]==xiawu2[0]){if(clock[2]==xiawu2[1])daling();}if(clock[3]==xiawu3[0]){if(clock[2]==xiawu3[1])daling();}if(clock[3]==xiawu4[0]){if(clock[2]==xiawu4[1])daling();}}//闹钟比较void naobijiao(){if(clock[3]==clock1[0]){if(clock[2]==clock1[1]||clock[2]==clock1[1]+1||clock[2]==clock1[1]+2) bb();}}//响铃时长显示函数void bbtimeshow(){P3=bbtime[bbduration];if(bbduration>15)bbduration=0;}//响铃按键处理函数void bbtime_set(){bbtimeshow();if(bb_set_add==0){delay(100);if(bb_set_add==0)bbduration++;while(bb_set_add==0)bbtimeshow();}if(bb_set_sub==0){delay(100);if(bb_set_sub==0)bbduration--;while(bb_set_sub==0)bbtimeshow();}}//主程序void main(){EA=1;ET0=1;TR0=1;while(1){key_set();bijiao();bbtime_set();naobijiao();}}电路图:分四部分显示:如果在学习这个程序过程中有什么问题,可以发邮件到******************询问。

基于51单片机内部定时器的简易闹钟课程设计论文

基于51单片机内部定时器的简易闹钟课程设计论文

基于51单片机内部定时器的简易闹钟摘要现代社会电子闹钟已广泛用于各种私人和公众场合,成为我们生活、工作和学习中不可缺少的好帮手,因此研究实用性更强的电子闹钟具有十分重要的意义。

本设计是基于单片机的电子钟设计,不仅具有时分秒的显示功能,还具有双闹铃和倒计时的功能,实用性非常强。

电子钟的计时部分采用AT89S52单片机内部定时器实现,而显示功能是采用液晶模块LCD1602来实现,该电子闹钟可以让使用者通过按键来轻松选择的功能菜单和调节时间,具有非常良好地人机界面。

关键词:电子闹钟;倒计时;AT89S52;液晶LCD1602;按键AbstractIn modern society, the electronic alarm clock has been widely used in various occasions and become indispensable to life.It is a good helper to our work and learning. So,there is very important significance to research more practical electronic alarm clock.This design is based on single chip microcomputer,It has display function of hours,minutes and seconds,dual alarm and countdown.The internal timer of AT89S52 achieve the part of time.The liquid crystal LCD1602 achieve the part of display.The users can use the push-buttons to choice the menu of functions and adjust the time.The man-machine interface is very good.Key words: electronic alarm; countdown; AT89S52; liquid crystal LCD1602; button目录引言 (1)1 设计要求 (2)2 方案论证 (2)2.1 计时方案的选择 (2)2.2 显示方案的选择 (2)2.3 按键功能方案设计 (3)2.4 指示灯和响铃方案设计 (3)3 系统组成 (3)4 硬件设计 (4)4.1 单片机最小系统设计 (4)4.2 显示电路设计 (1)4.3 蜂鸣器电路设计 (1)4.4 按键电路设计 (2)5 软件设计 (2)5.1 走时部分 (2)5.2 闹铃检测部分 (3)5.3 键盘扫描部分 (3)5.4 液晶部分 (4)5.5 流程图 (4)6 仿真设计 (8)7 系统调试及结果 (8)7.1 软件调试 (8)7.2 硬件调试 (10)7.3 调试结果 (10)8 总结 (10)谢辞 (11)参考文献........................................... 错误!未定义书签。

基于51的电子闹钟设计报告(附原理图、PCB图、程序)

基于51的电子闹钟设计报告(附原理图、PCB图、程序)

基于51的电⼦闹钟设计报告(附原理图、PCB图、程序)成都信息⼯程学院第五届嵌⼊式创新技术⼤赛基于MCS51的智能电⼦闹钟设计报告姓名学院班级实物图⽬录1.电⼦时钟的设计原理和⽅法 (1)1.1设计原理 (1)1.2 硬件电路的设计 (1)1.2.1 STC89C51RC简介 (1)1.2.2 键盘电路的设计 (2)1.2.3蜂鸣器驱动电路 (3)1.2.4 数码管驱动电路 (3)1.2.5 电源电路 (4)1.3软件部分的设计 (4)1.3.1主程序部分的设计 (4)1.3.2中断计时器及时间进位 (5)1.3.3 闹钟⼦函数 (7)1.3.4 按键扫描 (8)1.3.5 时钟闹钟设置 (9)1.3.6 显⽰数字函数 (10)1.3.7 显⽰界⾯函数 (10)1.3.8 闹钟记录及读取 (11)2.硬件调试 (13)附录A:电路原理图 (15)附录B:电路PCB图 (16)附录C:源程序 (17)1.电⼦时钟的设计原理和⽅法1.1设计原理系统框图1.2硬件电路的设计1.2.1 STC89C51RC简介STC89C52R CSTC89C51RC是⼀种带8K闪烁可编程可擦除只读存储器(FPETOM-FlashProgrammabalandErasableReadOnlyMemory )的低电压、⾼性能CMOS8位微型处理器,即单⽚机芯⽚。

单⽚机的可擦除只读存储器可以反复擦除1000次,内部FLASH 擦写次数为100000次以上。

该芯⽚使⽤⾼密度⾮易失存储制造技术,与⼯业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU 和闪烁存储器集成在单个芯⽚中,使得STC89C51RC 成为了⼀种性价⽐极⾼的微型处理器芯⽚,在许多电路设计中都得到了应⽤。

STC89C51RC 单⽚机特点:⼯作电压:5.5V-3.4V ⼯作频率:0-40MHz ⽤户应⽤程序空间:8K ⽚上集成128*8RAMISP (在系统可编程)/IAP (在应⽤可编程),⽆需专⽤编程器/仿真器可通过串⼝(P3.0/P3.1)直接下载⽤户程序EEPROM 功能共3个16位定时器/计数器,其中定时0还可以当成2个8位定时器使⽤外部中断4路通⽤异步串⾏⼝(UART ),还可⽤定时器软件实现多个UART ⼯作温度范围:0-75℃引脚说明:VCC:供电电压 GND :接地P0:P0是⼀个8位漏级开路双向I/O ⼝,低8位地址复⽤总线端⼝。

基于51单片机内部定时器的简易闹钟课程设计论文

基于51单片机内部定时器的简易闹钟课程设计论文

基于51单片机内部定时器的简易闹钟摘要现代社会电子闹钟已广泛用于各种私人和公众场合,成为我们生活、工作和学习中不可缺少的好帮手,因此研究实用性更强的电子闹钟具有十分重要的意义。

本设计是基于单片机的电子钟设计,不仅具有时分秒的显示功能,还具有双闹铃和倒计时的功能,实用性非常强。

电子钟的计时部分采用AT89S52单片机内部定时器实现,而显示功能是采用液晶模块LCD1602来实现,该电子闹钟可以让使用者通过按键来轻松选择的功能菜单和调节时间,具有非常良好地人机界面。

关键词:电子闹钟;倒计时;AT89S52;液晶LCD1602;按键AbstractIn modern society, the electronic alarm clock has been widely used in various occasions and become indispensable to life.It is a good helper to our work and learning. So,there is very important significance to research more practical electronic alarm clock.This design is based on single chip microcomputer,It has display function of hours,minutes and seconds,dual alarm and countdown.The internal timer of AT89S52 achieve the part of time.The liquid crystal LCD1602 achieve the part of display.The users can use the push-buttons to choice the menu of functions and adjust the time.The man-machine interface is very good.Key words: electronic alarm; countdown; AT89S52; liquid crystal LCD1602; button目录引言 (1)1 设计要求 (2)2 方案论证 (2)2.1 计时方案的选择 (2)2.2 显示方案的选择 (2)2.3 按键功能方案设计 (3)2.4 指示灯和响铃方案设计 (3)3 系统组成 (3)4 硬件设计 (4)4.1 单片机最小系统设计 (4)4.2 显示电路设计 (5)4.3 蜂鸣器电路设计 (5)4.4 按键电路设计 (6)5 软件设计 (6)5.1 走时部分 (6)5.2 闹铃检测部分 (7)5.3 键盘扫描部分 (7)5.4 液晶部分 (8)5.5 流程图 (8)6 仿真设计 (11)7 系统调试及结果 (11)7.1 软件调试 (11)7.2 硬件调试 (12)7.3 调试结果 (13)8 总结 (13)谢辞 (14)参考文献........................................... 错误!未定义书签。

基于51单片机的简易电子钟设计

基于51单片机的简易电子钟设计

基于51单片机的简易电子钟设计一、设计目的现代社会对于时间的要求越来越精确,电子钟成为家庭和办公场所不可缺少的设备之一、本设计基于51单片机,旨在实现一个简易的电子钟,可以显示当前的时间,并且能够通过按键进行时间的调整和设置闹钟。

二、设计原理本设计主要涉及到51单片机的IO口、定时器、中断、LCD显示技术等方面知识。

1.时钟模块时钟模块采用定时器0的中断进行时间的累加和更新。

以1秒为一个时间单位,每当定时器0中断发生,就将时间加1,并判断是否需要更新小时、分钟和秒的显示。

同时,根据用户按键的操作,可以调整时间的设定。

2.显示模块显示模块采用16x2字符LCD显示屏,通过51单片机的IO口与LCD连接。

可以显示当前时间和设置的闹钟时间。

初次上电或者重置后,LCD显示时间为00:00:00,通过定时器中断和键盘操作,实现时间的更新和设定闹钟功能。

3.键盘模块键盘模块采用矩阵键盘连接到51单片机的IO口上,用于用户进行时间的调整和设置闹钟。

通过查询键盘的按键状态,根据按键的不同操作,实现时间的调整和闹钟设定功能。

4.中断模块中断模块采用定时器0的中断,用于1秒的定时更新时间。

同时可以添加外部中断用于响应用户按键操作。

三、主要功能和实现步骤1.系统初始化。

2.设置定时器,每1秒产生一次中断。

3.初始化LCD显示屏,显示初始时间00:00:00。

4.查询键盘状态,判断是否有按键按下。

5.如果按键被按下,根据不同按键的功能进行相应的操作:-功能键:设置、调整、确认。

-数字键:根据键入的数字进行时间的调整和闹钟设定。

6.根据定时器的中断,更新时间的显示。

7.判断当前时间是否与闹钟设定时间相同,如果相同,则触发闹钟,进行提示。

8.循环执行步骤4-7,实现连续的时间显示和按键操作。

四、系统总结和改进使用51单片机设计的简易电子钟可以显示当前时间,并且实现时间的调整和闹钟设定功能。

但是由于硬件资源有限,只能实现基本的功能,不能进行其他高级功能的扩展,例如闹铃的音乐播放、温度、湿度的显示等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【摘要】众所周知闹钟对我们日常生活来讲是一个很重要的工具,因而我利用单片机AT89C52制作一个简单的倒计时定时闹钟。

本设计利用单片机的内部中断资源和按键的基本使用方法构思而成。

利用按键设定需要定时的时间长短,利用中断设置20次中断定义一秒,然后利用程序设计时间倒数。

并使用4个8段数码管显示分和秒,并且定时结束后使用电铃警示。

硬件系统利用proteus仿真,在仿真中就能观察到系统的实际运行情况。

【关键字】单片机AT89C51 倒计时定时中断 protues仿真一、设计项目简介基于51单片机进行简单闹钟设计。

四位数码管从左往右分别代表十分位,分位,十秒位,秒位。

按动对应按键能增加各个位的数值,按动开始计时按键能开始倒计时。

二、硬件设计1.总体设计思路控制芯片使用比较熟悉的AT89C52单片机芯片,数码管使用四位相连的8段共阴数码管,并且使用74HC573锁存器控制数码管的显示。

在定时过程使用s1控制十分位,s2控制分位,s3控制十秒位,s4控制秒位,s5开始倒计时。

基本思路设计如下:2. AT89C52芯片介绍80C52是INTEL 公司MCS-51系列单片机中基本的产品,它采用INTEL 公司可靠的CHMOS 工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS 产品。

它结合了HMOS 的高速和高密度技术及CHMOS 的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。

80C52内置8位中央处理单元、256字节内部数据存储器RAM 、8k 片内程序存储器(ROM )32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡控制按键AT89C52控制芯片74HC573锁存器段位数码管电路。

此外,80C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。

在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。

掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。

80C52有PDIP(40pin)和PLCC(44pin)两种封装形式。

8051片内有 ROM,无须外接外存储器和373,更能体现“单片”的简练。

3.74HC573芯片介绍74HC573的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。

当使能为低时,输出将锁存在已建立的数据电平上。

输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。

这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。

特别适用于缓冲寄存器,I/O 通道,双向总线驱动器和工作寄存器。

数据锁存当输入的数据消失时,在芯片的输出端,数据仍然保持;这个概念在并行数据扩展中经常使用到。

锁存器接单片机芯片如下:4.单片机内部中断原理内部中断是指单片机内部的功能模块产生中断信号,只要是单片机内部在CPU外围能独立工作的功能模块都会提供中断功能,常见的内部中断类型有时钟Timer、串口UART、模数转换ADC等。

内部中断的工作流程和外部中断没太多区别,只是中断请求信号是在单片机内部进行传输,中断信号不是管脚上的电平状态,而是一个寄存器里面的相应标志位,通常当某个内部中断产生中断请求时就会将相应标志位置为1,CPU响应中断时将这个标志位清0。

5.设计原理图三、软件设计C语言源程序#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit dula=P2^6; //段码和位码设置。

sbit wela=P2^7;sbit s1=P3^0; //设置按键,s1代表十分位,s2分位,s3十秒位,s4秒位。

sbit s2=P3^1;sbit s3=P3^2;sbit s4=P3^3;sbit s5=P3^4;sbit beep=P2^3; //设置电铃uchar code seg_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 共阴极8位段码表,带点和不带点。

uchar code seg_table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};void delay(uint t); //各个子函数的申明。

int display1();void display2(uint k);void init_t0();uint NUM;uint SEC;uint S;uint M;uint k1;uint k2;uint k3;uint k4;void main(){NUM=0,SEC=0 ,S=0,M=0,k1=0,k2=0,k3=0,k4=0,wela=0,dula=0,wela=1,P1=0x00,wela=0,dula=1,P1=seg_table[NUM],dula=0;while(1){display1(); //运行开始设置时间函数if(s5==0){goto start; //当s5按键按下,开始倒计时。

}}start: init_t0();while(1){ display2(M); //显示函数}}int display1()//按动按键开始设置时间{if(s1==0){delay(150);if(s1==0) //设置十分位{k1++;if(k1==6){ k1=0;}wela=1;P1=0xf7;wela=0;dula=1;P1=seg_table[k1];dula=0;delay(1);}}if(s2==0) //设置分位{delay(150);if(s2==0){k2++;if(k2==10){k2=0;}wela=1;P1=0xfb;wela=0;dula=1;P1=seg_table[k2];dula=0;delay(1);}}if(s3==0) //设置十秒位{delay(150);if(s3==0){k3++;if(k3==6){k3=0;}wela=1;P1=0xfd;wela=0;dula=1;P1=seg_table[k3];dula=0;delay(1);}}if(s4==0) //设置秒位{delay(150);if(s4==0){k4++;if(k4==10){k4=0;}wela=1;P1=0xfe;wela=0;dula=1;P1=seg_table[k4];dula=0;delay(1);}}S=k1*600+k2*60+k3*10+k4;return S; //返回全局变量}void delay(uint t) //延时函数{uint x,y;for(x=t;x>0;x--){for(y=120;y>0;y--){}}}void display2(uint k) //倒计时时间显示函数{uint miao,shimiao,fen,shifen;shifen=k/600;fen=k%600/60;shimiao=k%60/10;miao=k/10;wela=1;P1=0xfe;wela=0;dula=1;P1=seg_table[miao];dula=0;delay(1);wela=1;P1=0xf7;wela=0;dula=1;P1=seg_table[shifen];dula=0;delay(1);wela=1;P1=0xfb;wela=0;dula=1;P1=seg_table1[fen];dula=0;delay(1);wela=1;P1=0xfd;wela=0;dula=1;P1=seg_table[shimiao];dula=0;delay(1);}void init_t0() //内部中断T0初始化{TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void t0() interrupt 1 //中断函数,使用方式一中断{TH0=(65536-50000)/256;TL0=(65536-50000)%256;NUM++;if(NUM==20){NUM=0;SEC++;M=S-SEC;if(M==0){TR0=0;beep=0;delay(1000);beep=1;}}}四、调试1、调试方法本设计使用Proteus软件绘制电路图,装载keil软件编写编译完成的源程序生成的hex文件,进行仿真测试检查系统运行情况,观察实验现象是否与理论一致。

2、调试步骤打开已经画好的Proteus DSN文件,双击图中的AT89S52芯片,就弹出一个窗口,在program file项中通过路径选择在keil中生成hex 文件,双击选中后确定,这样仿真图中的AT89S52芯片就已经读取了本设计中的hex文件。

然后进行仿真。

3、调试问题在调试过程中发现定时完成以后,按动开始定时按键s5发现数码管显示不正常,秒位显示不正常。

但功能使用正常,初步判断是延时出现问题,通过改变数码管显示延迟的长久,问题仍未解决。

调试图:五、心得体会本设计的数字秒表是由AT89S52单片机、共阴极数码管和控制按键等器件组成的,设有四位计时显示。

系统设计合理,线路简单,性能稳定、程序简单。

给出了较为详尽的电路设计方法。

本系统以单片机为核心,但仅单片机方面的知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软硬件结合,以作完善。

单片机应用的越来越广泛,也要求了我们对单片机知识要有更深的体会,更好的掌握单片机的相关应用。

不仅掌握理论知识,还要有相应的动手能力。

这次的课程设计便是对我们平时学习的一次很好的检测,同时也是一种复习与巩固。

通过这次的设计,我发现对单片机的认识仅仅停留在课本上的知识还是远远不够的。

那只是帮助我们认识单片机,更多的知识还要靠我们自己去发现在不断地尝试设计和实验中领悟。

这次设计在实际生活中可能切实的用处不是很大,但对我们来说却是非常有用的,不管是学习知识还是对以后的就业工作都会有很大的价值。

【参考文献】百度百科(74HC573,AT89C52管脚资料)高显生《我和单片机的21天之旅》视频资料李全利.《单片机原理及接口技术(第2版)》。

北京:高等教育出版社。

相关文档
最新文档