基于单片机控制的数字钟设计

合集下载

基于单片机的数字时钟设计

基于单片机的数字时钟设计

单片机控制的数字钟设计摘要数字电子钟一般由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路等组成。

秒信号是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。

将秒信号送入秒计数器,它是六十进制计数器。

每累计六十秒发出一个“分脉冲”信号,这个信号作为“分计数器”的时钟脉冲。

“分计数器”也是六十进制计数器,它每累计六十分钟,发出一个“时脉冲”信号,此信号将被送到“时计数器”。

“时计数器”采用二十四进制计数器,可以实现一天二十四小时的累计。

译码显示电路将“时”、“分”、“秒”计数器的输出状态经七段显示译码器译码,通过六位LED显示器显示出来。

校时电路是用来对“时”、“分”、“秒”显示数字进行校对调整的。

本文的系统设计功能:用液晶或LED显示器显示时、分、秒等;含有闹铃功能,可以设定闹铃时间;闹钟时间到的时候蜂鸣器报警,可以关掉警报。

本设计采用AT89C51单片机和CD4511晶体管LED显示来实现数字时钟的的显示。

关键字:数字钟,AT89C51,CD4511目录1绪论 (1)1.1课题描述 (1)1.2 基本工作原理 (1)2 硬件介绍 (2)2.1 AT89C51的介绍 (2)2.2 CD4511介绍 (3)3 程序设计 (5)总结 (6)致谢 (7)参考文献 (8)附录 (9)1绪论1.1课题描述数字钟被广泛用于个人家庭,车站, 码头、办公室等公共场所,成为人们日常生活中的必需品。

由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,运用超过老式钟表, 而且大大地扩展了钟表原先的报时功能。

诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。

因此,研究数字钟及扩大其应用,有着非常现实的意义。

1.2 基本工作原理1. 显示原理[10]电路原理见下图1。

基于单片机的数字钟毕业设计(附程序全)

基于单片机的数字钟毕业设计(附程序全)

基于单片机的数字钟毕业设计(附程序全) 电子时钟设计随着现代人类生活节奏的加快,人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。

对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码管为显示器的时钟比指针式的时钟表现出了很大的优势。

数码管显示的时间简单明了而且读数快、时间准确性更高~数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。

数字钟的精度、稳定度远远超过老式机械钟。

在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,并且由单片机的定时器计数。

在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。

数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。

关键词:数字钟;单片机;数码管;时间;准确性1目录第一章绪论1. 数字电子钟的意义和应用…………………………………………………………………… 3 第二章整体设计方案2.1 单片机的选择…………………………………………………………………………… 3 2.2 单片机的基本结构……………………………………………………………………… 5 第三章数字钟的硬件设计3.1 最小系统设计…………………………………………………………………………… 9 3.2 LED显示电路…………………………………………………………………………… 12 3.3 键盘控制电路…………………………………………………………………………… 14 第四章数字钟的软件设计4.1 系统软件设计流程图…………………………………………………………………… 15 4.2 数字电子钟的原理图…………………………………………………………………… 18 4.3 主程序…………………………………………………………………………………… 19 4.4 时钟设置子程序………………………………………………………………………… 20 4.5 定时器中断子程序……………………………………………………………………… 20 4.6 LED显示子程序………………………………………………………………………… 21 4.7 按键控制子程序………………………………………………………………………… 23 第五章系统仿真5.1 PROTUES软件介绍................................................................................. 24 5.2 电子钟系统PROTUES仿真........................................................................ 24 结束语. (2)5 参考文献 (26)2第一章绪论1.数字电子钟的意义和应用数字钟是采用数字电路实现对时、分、秒数字显示的计时装置,广泛用于个人家庭、车站、码头、办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

基于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--); }。

基于单片机的数字钟毕业设计(附程序全)

基于单片机的数字钟毕业设计(附程序全)

基于单片机的数字钟毕业设计(附程序全) 电子时钟设计随着现代人类生活节奏的加快,人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。

对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码管为显示器的时钟比指针式的时钟表现出了很大的优势。

数码管显示的时间简单明了而且读数快、时间准确性更高~数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。

数字钟的精度、稳定度远远超过老式机械钟。

在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,并且由单片机的定时器计数。

在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。

数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。

关键词:数字钟;单片机;数码管;时间;准确性1目录第一章绪论1. 数字电子钟的意义和应用…………………………………………………………………… 3 第二章整体设计方案2.1 单片机的选择…………………………………………………………………………… 3 2.2 单片机的基本结构……………………………………………………………………… 5 第三章数字钟的硬件设计3.1 最小系统设计…………………………………………………………………………… 9 3.2 LED显示电路…………………………………………………………………………… 12 3.3 键盘控制电路…………………………………………………………………………… 14 第四章数字钟的软件设计4.1 系统软件设计流程图…………………………………………………………………… 15 4.2 数字电子钟的原理图…………………………………………………………………… 18 4.3 主程序…………………………………………………………………………………… 19 4.4 时钟设置子程序………………………………………………………………………… 20 4.5 定时器中断子程序……………………………………………………………………… 20 4.6 LED显示子程序………………………………………………………………………… 21 4.7 按键控制子程序………………………………………………………………………… 23 第五章系统仿真5.1 PROTUES软件介绍................................................................................. 24 5.2 电子钟系统PROTUES仿真........................................................................ 24 结束语. (2)5 参考文献 (26)2第一章绪论1.数字电子钟的意义和应用数字钟是采用数字电路实现对时、分、秒数字显示的计时装置,广泛用于个人家庭、车站、码头、办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

单片机课程设计实验报告 基于单片机的数字时钟 含完整实验代码..

单片机课程设计实验报告 基于单片机的数字时钟 含完整实验代码..

单片机课程设计报告基于单片机的数字时钟姓名:班级:学号:一、前言利用实验板上的4个LED数码管,设计带有闹铃、秒表功能的数字时钟。

功能要求:a)计时并显示(LED)。

由于实验板上只有4位数码管,可设计成显示“时分”和显示“分秒”并可切换。

b)时间调整功能。

利用4个独立按钮,实现时钟调整功能。

这4个按钮的功能为工作模式切换按钮(MODE),数字加(INC),数字减(DEC)和数字移位(SHITF)。

c)定闹功能。

利用4个独立按钮设定闹钟时间,时间到以蜂鸣器响、继电器动作作为闹铃。

d)秒表功能。

最小时间单位0.01秒。

二、硬件原理分析1.电源部分电源部份采用两种输入接口(如上图)。

a)外电源供电,采用2.1电源座,可接入电源DC5V,经单向保护D1接入开关S1。

b)USB供电,USB供电口输入电源也经D1单向保护,送到开关S1。

注:两路电源输入是并连的,因此只选择一路就可以了,以免出问题。

S1为板子工作电源开关,按下后接通电源,提供VCC给板子各功能电路。

电路采用两个滤波电容,给板子一个更加稳定的工作电源。

LED为电源的指示灯,通电后LED灯亮。

2.蜂鸣器蜂鸣器分为有源和无源两种,有源即两引脚有一个直流电源就可以长鸣,无源则需要一个1K左右的脉冲才可以蜂鸣,因此对于按键的提示音及报警蜂鸣使用有源来得方便。

有源也可以当无源使用,而无源则不能当有源使用,当然用有源蜂鸣器作音乐发声会失真厉害。

如上图:单片机P15输出高低电平经R21连接三极管B极,控制三极管的导通与截止,从而控制蜂鸣器的工作。

低电平时三极管导通,蜂鸣器得电蜂鸣,高电平时三极管截止,蜂鸣器失电关闭蜂鸣。

电路使用一个四位共阳型数码管,四个公共阳级由三极管放大电流来驱动,三极管由P10-P13控制开与关。

数码管的阴级由P0口经过电阻限流连接。

例如,要十位的数码管工作,P12输出0,使三极管Q12导通,8脚得电,当P0口相应位有输出0时,点亮相应的LED灯组合各种字符数字。

基于单片机的数字钟的设计--毕业设计(论文)

基于单片机的数字钟的设计--毕业设计(论文)

毕业设计(论文)题目:基于单片机的数字钟的设计学院:自动化学院专业:自动化起止时间:2010年 3月 21日至2010年 6月 25日摘要这次毕业设计通过对单片机的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它主要通过DP-51PROC单片机综合仿真实验仪实现,通过数码管能够准确显示时间,调整时间,它的计时周期为24小时,从而到达学习、设计、开发软、硬件的能力。

主要实现功能为显示时间,时间校准调时(采用手动按键调时),闹铃功能(设置定时时间,到点后闹铃发出响声)。

通过键盘可以进行校时、定时。

闹铃功能使用I/O 口定时翻转电平驱动的无源蜂鸣器。

本文主要介绍了工作原理及调试过程。

关键词:单片机电子时钟单片机综合仿真实验仪AbstractThe MCU through graduation learning applications to AT89S51 chip as the core, supplemented by the necessary circuitry to design a simple electronic clock, it is mainly through the DP-51PROC Single Chip Experimental Device to achieve, through the digital control can be accurately show time, adjustment time, it's time period is 24 hours, so get to learn, design, development hardware and software capabilities. Main achieved function to show time, the time when calibration transfer (using the manual button adjustment time), alarm clock (set the regular time, the point to issue after the alarm sound). When the keyboard can be school, regularly. Alarm clock using the I / O port level drivers regularly turn passive buzzer.This paper describes the working principle and the debugging process.Keywords:MCU electronics clock DP-51PROC目录摘要 (2)Abstract (3)第一章概述 (5)第二章方案论证与比较 (6)2.1数字时钟方案 (6)2.2数码管显示方案 (6)2.3闹铃方案 (6)2.4校准方案 (7)第三章系统设计 (7)3.1总体设计 (7)3.1.1系统说明 (7)3.2模块设计 (7)3.2.1电源部分 (8)3.2.2复位电路 (8)3.2.3程序下载接口 (8)3.2.4位选部分 (9)3.2.5数码管的连接电路 (9)3.2.6控制部分 (10)3.2.7蜂鸣器驱动电路 (11)第四章原理 (12)4.1系统总体方案选择与说明 (12)4.2工作原理 (13)4.3各单元硬件设计说明及计算方法 (14)4.4软件设计与说明 (14)第五章软件设计 (15)5.1主程序流程 (15)5.2闹铃程序..................................................................................................... 错误!未定义书签。

基于单片机的多功能数字钟的设计

基于单片机的多功能数字钟的设计

一、概述现代社会,时间被视为人们生活的重要组成部分。

而数字钟作为时间的一种展现形式,已经成为人们生活中不可或缺的一部分。

基于单片机的多功能数字钟设计,将为人们提供更加准确、便捷、多功能的时间展现方式,满足人们对时间的精准要求,同时也为人们的生活带来更多便利。

二、设计目标1. 实现精准的时间显示功能,包括时、分、秒的显示;2. 实现对日期的显示,包括年、月、日的显示;3. 实现多种报时功能,如定时报时、闹钟报时等;4. 实现多种显示效果,如渐变显示、闪烁显示等;5. 实现对时间的调整功能,包括校时、调整日期等;6. 实现对亮度的调节功能,适应不同环境下的使用需求。

三、设计思路1. 硬件设计1.1 硬件采用单片机作为核心控制器,通过外部晶振提供时钟信号;1.2 采用数码管作为显示设备,通过单片机控制数码管进行时间、日期的显示;1.3 通过按钮、旋钮等输入设备,实现时间调节、报时设置等操作;1.4 通过EEPROM等存储设备,实现时间、设置的存储和读取功能;1.5 通过光敏电阻等光敏传感器,实现对环境光强的检测,调节数码管显示亮度。

2. 软件设计2.1 设计合理的时钟系统,确保时间的准确显示;2.2 设计报时功能模块,实现定时报时、闹钟报时等功能;2.3 设计显示控制模块,实现数字、日期的显示效果控制;2.4 设计操作响应模块,实现对按钮、旋钮等输入设备的操作响应;2.5 设计存储管理模块,实现时间、设置数据的存储和读取功能;2.6 设计光敏控制模块,实现对数码管显示亮度的实时调节。

四、实现方法1. 硬件设计1.1 选择合适的单片机作为核心控制器,根据需要进行外围电路的设计;1.2 选择合适的数码管作为显示设备,设计驱动电路以及显示控制电路;1.3 选择合适的按钮、旋钮等输入设备,设计输入电路以及操作响应电路;1.4 选择合适的EEPROM芯片,设计存储管理电路实现数据的存储和读取;1.5 选择合适的光敏电阻或光敏二极管,设计光敏控制电路实现显示亮度的调节。

基于51单片机的数字钟设计与制作

基于51单片机的数字钟设计与制作

一.基于52单片机制作的数字钟1.设计任务⑴时间显示: 上电后,系统自动进入时钟显示,从00:00:00开始计时,此时可以设定当前时间.⑵时间调整:按下k1,k2,k3键可以顺序设置秒、分、时,并在相应数码管上显示设置值,直至6位设置完毕。

2.系统基本方案选择和论证本时钟的设计具体有两种方法。

一是通过单纯的数字电路来实现;二是使用单片机来控制实现。

本次设计选取了较为简单的单片机控制;而选择这一方法后还要进行各个芯片的选择。

以下是我在这次设计中所用的方案。

2.1 芯片的选择方案一:采用AT89C51芯片,其为高性能CMOS 8位单片机,该芯片内含有4k bytes的可反复擦写的只读程序存储器(PEROM)、128 bytes的随机存取数据存储器(RAM)、 32位可编程I/O口线、2个16位定时/计数器、6个中断源、可编程串行UART通道及低功耗空闲和掉电模式,但是由于AT89C51芯片可擦写的空间不够大,且中断源提供的较小,为防止运行过程中出现不必要的问题,我们不选用AT89C51。

方案二:采用AT89C52芯片,它除了具备AT89C51的所有功能与部件外,其最大的优势就是AT89C52提供了8K字节可擦写Flash闪速存储器空间、8个中断源、及256*8字节内部存储器(RAM),解决了我们对可反复擦写的Flash闪速存储器空间大小与中断源的不够问题的担心。

2.2显示模块选择方案和论证方案一:采用LCD,电路比较简单,且在软件设计上也相对简单,具有低功耗功能。

价格贵。

方案二:采用LED数码管显示,显示较为清楚。

价格便宜。

所以本方案采用LED数码管显示。

2.3 时钟信号的选择方案和论证直接采用单片机定时计数器提供的秒信号,使用程序实现年、月、日、周、时、分、秒计数。

采用此种方案可减少芯片的使用,节约成本,实现的时间误差较小。

2.4 电路设计最终方案决定综上各方案所述,对此次数字时钟的方案选定为: 采用AT89C52作为主控制系统; 并由其定时计数器提供时钟; LED作为显示电路来实现功能。

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

基于单片机控制的数字钟课程设计任务书1.设计目的与要求设计出一个数字钟。

准确地理解有关要求,独立完成系统设计,要求所设计的电路具有以下功能:(1)显示:可以显示时、分和秒(2)调时功能:时(0-24)、分和秒(0-60)可以连续可调2.设计内容(1)画出电路原理图,正确使用逻辑关系;(2)确定元器件及元件参数;(3)进行电路模拟仿真;(4)SCH文件生成与打印输出;3.编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。

基于单片机控制的数字钟摘要:本设计是由89c51单片机和74hc245构成的多功能数字钟,它可以实现小时、分钟、秒的连续可调。

操作特别方便硬件电路简单。

并且采用具有发光亮度很好的七段数码管显示,特别具有可视性。

关键词:数字钟;单片机表;多功能表目录1引言 (1)2总体设计方案 (1)2.1设计思路 (1)2.2总体设计框图 (1)3设计原理分析 (2)3.1时钟电路的硬件设计分析 (2)3.2时钟电路的软件设计分析 (2)4程序设计 (2)4.1主程序 (2)4.2显示子程序 (3)4.3定时器/计数器T0中断服务程序 (3)4.4按键处理子程序 (3)5 结束语. (3)参考文献 (3)附录1 (4)附录2 (5)1 引言在人们的日常生活中,数字钟占有相当大的比重,可以说它是人们日常生活中不可缺少的东西。

它扮演着时间老人的角色,这次设计是基于单片机制作而成的数字钟,以24小时为一周期,显示时、分、秒,而且可以实现连续可调。

在具体处理过程中非常简单,用内部定时器进行定时处理,按键全部采用独立键盘非常方便快捷。

2 总体设计方案2.1 设计思路:利用单片机内部定时器进行时间定时。

刚开始的时候让数码管显示12点,进入调试模式后在主程序中不停的进行显示和按键扫描,当调整键按下时进入按键扫描程序进入后利用调整键按下的次数进行区分时分秒。

当确定按下次数后,递增键和递减键分别对时间进行加或者减的操作,完毕后在对调整键操作就立刻退出调试进行正常显示。

2.2总体设计框图:图1(总体设计框图)3 设计原理分析3.1 时钟电路的硬件设计分析:单片机P0口经过74HC245直接去驱动六个数码管,六个数码管接成并口动态显示。

再利用P2口的P2.0到P2.5进行位选。

三个按键分别接着P1.0到P1.2进行时间设置。

3.2 时钟电路的软件设计分析:在单片机通电后首先给显示赋初值让数码管显示12点,然后进入程序先对定时器0进行初始化,之后进入大循环主函数由显示函数和按键扫描两条语句构成。

显示函数由正常的动态扫描显示部分组成进行位和段的分时显示,当无按键按下时也对按键扫描进行扫描但由于没按键按下会立刻跳出扫描程序。

当有按键按下时进入按键扫描程序,按键扫描程序由两部分组成一部分对调整键次数进行区分看是按下一次还是两次或是三次然后进人递增键和递减键的扫描对时分秒进行操作,最后回到主程序进行扫描当调整键按下四次时跳出按键扫描程序恢复到正常显示。

4程序设计4.1主程序主程序流程如图2所示,主程序先定时器0进行初始化,然后对显示函数和按键扫描函数进行扫描。

在中断中对时分秒进行设置等待显示,当有按键按下时,则转入相应的按键处理程序进行按键扫描。

图2(主流程图)4.2显示子程序这次设计共用了6个数码管,时、分、秒各占两位,显示程序中首先对时、分、秒进行分离然后在对时、分、秒进行为选和段选的分时传送让数码管进行动态扫描显示。

4.3定时器/计数器T0中断服务程序进入中断后现对定时器进行初始化然后在对一秒钟进行累计处理在其中完成对时分秒的累计清零处理。

4.4按键处理子程序当调整键按下时进入按键处理程序,处理过程图3。

图3(按键扫描流程图)5 结束语经过了三周的学习实践,我得到了很大的锻炼让我对单片机有更深的认识。

也使我对我的专业更加热爱,我爱我的专业。

在编程过程中我也得到了我们宿舍和同学的帮助让我和他们的关系更加密切。

在此期间我又学了很多我以前没有学到的知识,我特别的高兴,在以后短短的岁月中我会对我的专业倾注更多爱。

感谢曾经帮助过我的老师、同学、和所有帮助过我的所有人参考文献[1] 李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,2005[2] 谭浩强.c程序设计[M].北京:清华大学出版社,2005[3] 张桂红.单片机原理与应用[M].福建:福建科技技术出版社,2007[4] 张鹏.单片机原理与应用实例教程[J].海军出版社,2007附录1:总体电路图0123456S 5附录2:程序清单#include<reg51.h>#define uint unsigned int#define uchar unsigned charsbit key0=P1^0;//调整键sbit key1=P1^1;//时间增加键sbit key2=P1^2;//时间减少键sbit key3=P1^3;uchar code table[]={0x7e,0x48,0x3d,0x6d,0x4b,0x67,0x77,0x4c,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar temp,tt,shi,ge,aa=1,bb=2,cc,dd,temp1,temp2=12,con=0,con1,con2; void delay(uint z);void initt0();void display();void keyscan();void main(){ initt0();while(1){ display();keyscan();}}void timer0() interrupt 1//50ms定时中断{ TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt++;if(tt==20)//一秒钟程序{tt=0;temp++;if(temp==60){temp=0;temp1++;if(temp1==60){temp1=0;temp2++;if(temp2==25){temp2=0;}} }}}void display()//显示子程序{ aa=temp2/10;bb=temp2%10;cc=temp1/10;dd=temp1%10;shi=temp/10;ge=temp%10;P2=0xdf;P0=table[aa];delay(1);P2=0xef;P0=table[bb]|0x80;delay(1);P2=0xf7;P0=table[cc];delay(1);P2=0xfb;P0=table[dd]|0x80;delay(1);P2=0xfd;P0=table[shi];delay(1);P2=0xfe;P0=table[ge];delay(1);}void delay(uint z)//延时1ms {uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void initt0()//定时器的初始化{ TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void keyscan()//键盘扫描程序{if(key0==0){ delay(10);while(key0==0);con++;//按键次数TR0=0;if(con>3){con=0;TR0=1;}}if(key1==0){delay(10);if(con==1)temp++;if(con==2)temp1++;if(con==3)temp2++;if(con==3){con1=24;}else{con1=60;}if(temp>=con1)temp=0;if(temp1>=con1)temp1=0;if(temp2>=con1)temp2=0;while(key1==0);}if(key2==0){delay(10);if(con==3){con2=23;}else{con2=59;}if(con==1){temp--;if(temp<=0)temp=con2;}if(con==2){ temp1--;if(temp1<=0) temp1=con2;}if(con==3){temp2--;if(temp2<=0) temp2=con2;}while(key2==0); }}。

相关文档
最新文档