用51单片机做的电子时钟

合集下载

51单片机作的电子钟程序及电路图

51单片机作的电子钟程序及电路图

51单片机作的电子钟程序在很多地方已经有了介绍,对于单片机学习者而言这个程序基本上是一道门槛,掌握了电子钟程序,基本上可以说51单片机就掌握了80%。

常见的电子钟程序由显示部分,计算部分,时钟调整部分构成。

时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。

10秒位到5后,即59秒,分钟加1,10秒位回0。

依次类推,时钟最大的显示值为23小时59分59秒。

这里只要确定了1秒的定时时间,其他位均以此为基准往上累加。

开始程序定义了秒,十秒,分,十分,小时,十小时,共6位的寄存器,分别存在30h,31h,32h,33h,34h,35h单元,便于程序以后调用和理解。

6个数码管分别显示时、分、秒,一个功能键,可以切换调整时分秒、增加数值、熄灭节电等功能全部集一键。

以下是部分汇编源程序,购买我们产品后我们用光盘将完整的单片机汇编源程序和烧写文件送给客户。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 中断入口程序 ;; (仅供参考) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ORG 0000H ;程序执行开始地址LJMP START ;跳到标号START执行ORG 0003H ;外中断0中断程序入口RETI ;外中断0中断返回ORG 000BH ;定时器T0中断程序入口LJMP INTT0 ;跳至INTTO执行ORG 0013H ;外中断1中断程序入口RETI ;外中断1中断返回ORG 001BH ;定时器T1中断程序入口LJMP INTT1 ;跳至INTT1执行ORG 0023H ;串行中断程序入口地址RETI ;串行中断程序返回;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 主程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;START: MOV R0,#70H ;清70H-7AH共11个内存单元MOV R7,#0BH;clr P3.7 ;CLEARDISP: MOV @R0,#00H ;INC R0 ;DJNZ R7,CLEARDISP ;MOV 20H,#00H ;清20H(标志用)MOV 7AH,#0AH ;放入"熄灭符"数据MOV TMOD,#11H ;设T0、T1为16位定时器MOV TL0,#0B0H ;50MS定时初值(T0计时用)MOV TH0,#3CH ;50MS定时初值MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)MOV TH1,#3CH ;50MS定时初值SETB EA ;总中断开放SETB ET0 ;允许T0中断SETB TR0 ;开启T0定时器MOV R4,#14H ;1秒定时用初值(50M S×20)START1: LCALL DISPLAY ;调用显示子程序JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序SJMP START1 ;P3.7口为1时跳回START1 SETMM1: LJMP SETMM ;转到时间调整程序SETMM; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 1秒计时程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T0中断服务程序INTT0: PUSH ACC ;累加器入栈保护PUSH PSW ;状态字入栈保护CLR TR0 ;关闭定时器T0MOV A,#0B7H ;中断响应时间同步修正ADD A,TL0 ;低8位初值修正MOV TL0,A ;重装初值(低8位修正值)MOV A,#3CH ;高8位初值修正ADDC A,TH0 ;MOV TH0,A ;重装初值(高8位修正值)SETB TR0 ;开启定时器T0DJNZ R4, OUTT0 ;20次中断未到中断退出ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值MOV R0,#71H ;指向秒计时单元(71H-72H)ACALL ADD1 ;调用加1程序(加1秒操作)MOV A,R3 ;秒数据放入A(R3为2位十进制数组合)CLR C ;清进位标志CJNE A,#60H,ADDMM ;ADDMM: JC OUTT0 ;小于60秒时中断退出ACALL CLR0 ;大于或等于60秒时对秒计时单元清0MOV R0,#77H ;指向分计时单元(76H-77H)ACALL ADD1 ;分计时单元加1分钟MOV A,R3 ;分数据放入ACLR C ;清进位标志CJNE A,#60H,ADDHH ;ADDHH: JC OUTT0 ;小于60分时中断退出ACALL CLR0 ;大于或等于60分时分计时单元清0MOV R0,#79H ;指向小时计时单(78H-79H)ACALL ADD1 ;小时计时单元加1小时MOV A,R3 ;时数据放入ACLR C ;清进位标志CJNE A,#24H,HOUR ;HOUR: JC OUTT0 ;小于24小时中断退出ACALL CLR0 ;大于或等于24小时小时计时单元清0OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移MOV 73H,77H ;入对应显示单元MOV 74H,78H ;MOV 75H,79H ;POP PSW ;恢复状态字(出栈)POP ACC ;恢复累加器RETI ;中断返回; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 闪动调时程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T1中断服务程序,用作时间调整时调整单元闪烁指示INTT1: PUSH ACC ;中断现场保护PUSH PSW ;MOV TL1, #0B0H ;装定时器T1定时初值MOV TH1, #3CH ;DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次)MOV R2,#06H ;重装0.3秒定时用初值CPL 02H ;0.3秒定时到对闪烁标志取反JB 02H,FLASH1 ;02H位为1时显示单元"熄灭"MOV 72H,76H ;02H位为0时正常显示MOV 73H,77H ;MOV 74H,78H ;MOV 75H,79H ;INTT1OUT: POP PSW ;恢复现场POP ACC ;RETI ;中断退出FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制MOV 72H,7AH ;01H位为0时,"熄灭符"数据放入分MOV 73H,7AH ;显示单元(72H-73H),将不显示分数据MOV 74H,78H ;MOV 75H,79H ;AJMP INTT1OUT ;转中断退出FLASH2: MOV 72H,76H ;01H位为1时,"熄灭符"数据放入小时MOV 73H,77H ;显示单元(74H-75H),小时数据将不显示MOV 74H,7AH ;MOV 75H,7AH ;AJMP INTT1OUT ;转中断退出; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 加1子程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ADD1: MOV A,@R0 ;取当前计时单元数据到ADEC R0 ;指向前一地址SWAP A ;A中数据高四位与低四位交换ORL A,@R0 ;前一地址中数据放入A中低四位ADD A,#01H ;A加1操作DA A ;十进制调整MOV R3,A ;移入R3寄存器ANL A,#0FH ;高四位变0MOV @R0,A ;放回前一地址单元MOV A,R3 ;取回R3中暂存数据INC R0 ;指向当前地址单元SWAP A ;A中数据高四位与低四位交换ANL A,#0FH ;高四位变0MOV @R0,A ;数据放入当削地址单元中RET ;子程序返回; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 清零程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;............. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 时钟调整程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;当调时按键按下时进入此程序SETMM: cLR ET0 ;关定时器T0中断CLR TR0 ;关闭定时器T0LCALL DL1S ;调用1秒延时程序JB P3.7,CLOSEDIS ;键按下时间小于1秒,关闭显示(省电)MOV R2,#06H ;进入调时状态,赋闪烁定时初值SETB ET1 ;允许T1中断SETB TR1 ;开启定时器T1SET2: JNB P3.7,SET1 ;P3.7口为0(键未释放),等待SETB 00H ;键释放,分调整闪烁标志置1SET4: JB P3.7,SET3 ;等待键按下LCALL DL05S ;有键按下,延时0.5秒JNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态MOV R0,#77H ;按下时间小于0.5秒加1分钟操作LCALL ADD1 ;调用加1子程序MOV A,R3 ;取调整单元数据CLR C ;清进位标志CJNE A,#60H,HHH ;调整单元数据与60比较HHH: JC SET4 ;调整单元数据小于60转SET4循环LCALL CLR0 ;调整单元数据大于或等于60时清0CLR C ;清进位标志AJMP SET4 ;跳转到SET4循环CLOSEDIS: SETB ET0 ;省电(LED不显示)状态。

简单的51单片机电子时钟

简单的51单片机电子时钟

仿真图:C程序;#include<reg51.h>#define uint unsigned int#define uchar unsigned charsbit k1=P3^5;sbit k2=P3^6;sbit k3=P3^7;uchar code duan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40};//显示数组uchar hc[8]; //缓存数组uchar jishu,jishu1=0,k,set,shan,a,b,c,time; //变量定义char shi,fen,miao; //时分秒定义(必须为char不然按键会显乱码)//====延时子程序=====//void delay(uint t){uchar i;while(t--)for(i=110;i>0;i--);}//====按键子程序===//void key(){//====调节选择===//if(k1==0){delay(5);while(k1==0);if(++set==4) set=0;}//====时分秒,加调整=====// if(k2==0){delay(5);while(k2==0);if(set==1){if(++miao==60) miao=0;}if(set==2){if(++fen==60) fen=0;}if(set==3){if(++shi==24) shi=0;}}//====时分秒,减调整=====//if(k3==0){delay(5);while(k3==0);if(set==1){if(--miao<0) miao=59;}if(set==2){if(--fen<0) fen=59;}if(set==3){if(--shi<0) shi=23;}}//====调整闪烁====//if(set==1) a=0xff*shan; else{a=0;} if(set==2) b=0xff*shan; else{b=0;} if(set==3) c=0xff*shan; else{c=0;} }//=====中断初始化===//void init(){TMOD=0x01;TH0=(65535-5000)/256;TL0=(65535-5000)%256;EA=1;ET0=1;TR0=1;}//=====选择中断方式1=====//void tint(void) interrupt 1{TH0=(65535-5000)/256;TL0=(65535-5000)%256;//===10秒无操作跳出时间调整====//if(set!=0){if((k1==0)||(k2==0)||(k3==0)) time=0;if(time>=10) {set=0;time=0 ; }}//====时分秒即时==//jishu++;if(jishu==40){jishu=0;shan=!shan; //控制闪烁变量if(++k==4){ k=0;time++;if(++miao==60){miao=0;if(++fen==60){fen=0;if(++shi==24)shi=0;}}}}//=====显示位分离,存入缓存数组====//hc[0]= c|shi/10;hc[1]= c|shi%10;hc[2]=10;hc[3]=b|fen/10;hc[4]=b|fen%10;hc[5]=10;hc[6]=a|miao/10;hc[7]=a|miao%10;jishu1++;if(jishu1==8)jishu1=0;P2=(P2+1)%8; //138位扫描P0=duan[hc[jishu1]]; //显示段扫描}void main(){init(); //中断初始化P2=0x00; //138初始位校正(去掉显示会后移一位)while(1){key(); //按键程序}}。

基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计1. 本文概述随着现代科技的发展,电子时钟已成为日常生活中不可或缺的一部分。

本文旨在介绍一种基于51单片机的多功能电子钟的设计与实现。

51单片机因其结构简单、成本低廉、易于编程等特点,在工业控制和教学实验中得到了广泛应用。

本文将重点阐述如何利用51单片机的这些特性来设计和实现一个具有基本时间显示、闹钟设定、温度显示等功能的电子钟。

本文的结构安排如下:将详细介绍51单片机的基本原理和特点,为后续的设计提供理论基础。

接着,将分析电子钟的功能需求,包括时间显示、闹钟设定、温度显示等,并基于这些需求进行系统设计。

将详细讨论电子钟的硬件设计,包括51单片机的选型、时钟电路、显示电路、温度传感器电路等。

软件设计部分将介绍如何通过编程实现电子钟的各项功能,包括时间管理、闹钟控制、温度读取等。

本文将通过实验验证所设计的电子钟的功能和性能,并对实验结果进行分析讨论。

通过本文的研究,旨在为电子钟的设计提供一种实用、经济、可靠的方法,同时也为51单片机的应用提供一个新的实践案例。

2. 51单片机概述51单片机,作为一种经典的微控制器,因其高性能、低功耗和易编程的特性而被广泛应用于工业控制、智能仪器和家用电器等领域。

它基于Intel 8051微处理器的架构,具备基本的算术逻辑单元(ALU)、程序计数器(PC)、累加器(ACC)和寄存器组等核心部件。

51单片机的核心是其8位CPU,能够处理8位数据和执行相应的指令集。

51单片机的内部结构主要包括中央处理单元(CPU)、存储器、定时器计数器、并行IO口、串行通信口等。

其存储器分为程序存储器(ROM)和数据存储器(RAM)。

程序存储器通常用于存放程序代码,而数据存储器则用于存放运行中的数据和临时变量。

51单片机还包含特殊功能寄存器(SFR),用于控制IO端口、定时器计数器和串行通信等。

51单片机的工作原理基于冯诺伊曼体系结构,即程序指令和数据存储在同一块存储器中,通过总线系统进行传输。

利用51单片机制作的电子时钟

利用51单片机制作的电子时钟

利用51单片机制作的电子时钟最近研究起来了单片机,用的是国产STC98C52 芯片。

STC89C52 是STC公司生产的一种低功耗、高性能CMOS8 位微控制器,具有8K 在系统可编程Flash 存储器。

STC89C52 使用经典的MCS-51 内核,但做了很多的改进使得芯片具有传统51 单片机不具备的功能。

在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

买了很长时间了可是一直在那里放着,今天重新拿出来写了一段电子时钟的C++程序,利用充电宝供电,当作电子时钟挺不错的。

功能:4 个七段数码管作为时钟显示的主体两个显示小时,两个显示分钟,8 个LED 灯作为秒数的闪烁,4 个独立按键分别为hour+1,hour+10,minute+1,minute+10。

查询LED 电路,接入端为P1到P1。

数码管采用了驱动芯片,接入端为P2到P2。

按键的接入端如图所示。

有了各种电路的接入端,我们利用keil 进行编程。

/* * Copyright (c) 2015,烟台大学计算机学院* All right reserved. * 作者:邵帅* 文件:temp.c* 完成时间:2015 年05 月29 日*/ #include #define uchar unsigned char sbit P2_0 = P2;sbit P2_1 = P2;sb it P2_2 = P2 ;sbit P2_3 = P2;sb it key1=P3 ;//按键sbit key2=P3;sb it key3=P3;sb it key4=P3 ;static unsigned char second,minute,hour;unsigned int tcount;unsigned char m;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void delay(uchar。

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

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

基于51单片机的电子时钟设计
摘要:本文论述了基于51单片机的电子时钟设计,包括硬件设计与软件编程。

其中,硬件设计包括基本指示灯、DS1302时钟芯片等的选择与连接,时钟电路、晶振电路的设计等。

软件编程包括时钟显示的实现,时钟校准、闹钟等功能的实现等。

本设计具有精度高、操作简便、易于实现等特点,可广泛应用于各种场合。

关键词:51单片机;电子时钟;硬件设计;软件编程
前言
随着人们生活水平的提高,电子时钟已经成为人们生活中必不可少的物品,目前市场上各种类型的电子时钟层出不穷。

本文以51单片机为基础,设计了一款高精度、易于操作的电子时钟,采用DS1302时钟芯片作为时钟驱动芯片,实现了时钟的准确显示、校准、闹钟等功能。

硬件设计
硬件设计主要包括控制器、时钟驱动、显示装置以及电源。

本设计采用了AT89C51单片机作为控制器,一块DS1302时钟芯片作为时钟驱动,LED数字管作为显示装置。

同时,本设计采用了USB供电方式,其电源电压为5V。

软件编程
软件编程主要包括时钟显示、时钟校准、闹钟功能的实现等。

时钟显示采用了动态显示方式,实现了时间的精确定位。

同时,本设计还具有时钟校准功能,在程序接通时,可自动对时钟进行校准,保证时钟的精确度。

此外,本设计还具有设置闹钟的功能,用户可在指定时间响起闹钟。

结论本文以51单片机为基础,设计了一款高精度、易于操作的电子时钟。

通过对硬件设计、软件编程的设计与实现,使得该产品能够准确显示时间,保证了时钟的稳定性,满足了时间的要求,目前已
得到广泛应用。

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

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

基于51单片机的电子时钟设计51单片机是一种广泛应用于嵌入式系统的微控制器,由于其性能稳定、易于编程和成本相对较低的特点,被广泛应用于各种电子设备中。

在现代社会,电子时钟已经成为人们日常生活中不可或缺的工具。

随着科技的不断发展,电子时钟在功能和外观上都得到了极大的提升,如今的电子时钟不仅可以显示时间,还能设置闹钟、定时、显示温湿度等功能。

本文通过对51单片机的应用和实践,设计了一款功能丰富的电子时钟,旨在探讨如何利用51单片机实现电子时钟的设计与制作过程。

首先,我们将介绍51单片机的基本原理和特点。

51单片机是一种8位微控制器,由Intel公司于1980年推出,至今已有数十年的历史。

它采用哈佛结构,具有较高的工作速度和稳定性,适合用于各种嵌入式系统。

51单片机的指令系统简单,易于学习和掌握,因此被广泛用于各种嵌入式应用中。

除此之外,51单片机的外围设备丰富,可以通过外部扩展模块实现各种功能,如串口通信、定时器、数模转换等,这也为我们设计电子时钟提供了便利。

其次,我们将详细介绍基于51单片机的电子时钟的设计和实现过程。

电子时钟主要由时钟模块、显示模块、闹钟模块等部分组成,通过合理的接线和程序设计实现各种功能。

首先,我们设计时钟模块,通过外部晶振产生时钟信号,并利用51单片机的定时器模块实现时间的精确计算和显示。

同时,我们还设计了显示模块,采用数码管或液晶屏显示时间和日期信息,通过数字或字符的组合,使信息直观清晰。

此外,闹钟模块也是电子时钟的重要功能之一,我们可以设置闹钟时间,并在设定时间触发闹钟功能,提醒用户。

通过合理的程序设计,我们可以实现电子时钟的各种功能,并提升用户体验。

最后,我们将讨论基于51单片机的电子时钟在实际生活中的应用前景和发展趋势。

随着智能家居的快速发展,电子时钟作为家庭必备的电子设备,其功能和外观需求也在不断提升。

未来,基于51单片机的电子时钟将会更加智能化,可以与手机、电视等智能设备联动,实现更多个性化的功能。

基于51单片机的电子时钟

基于51单片机的电子时钟
本次设计采用八位数码管显示原理和单个LED的显示原理完全相同。
闹钟提醒电路
本次设计是通过蜂鸣器来完成闹钟提醒的功能的,蜂鸣器与芯片的P2.0相连。
按键控制电路
键盘是最常用的输入设备,是实现人机对话的纽带,具体来说键盘接口应完成以下操作功能: (1)键盘扫描,以判定是否有键被按下; (2)键识别,以确定闭合键的位置; (3)排除多建、复键及去抖。 以上这些功能通常是以软硬件结合的方式来完成的,即在软件的配合下由接口电路来完成。
键盘显示方案
AT89C52的P0口和P1口外接八个LED数码管(LED7~LED0)构成显示 器 , 用 P0 口 LED 的 段 码 输 出 口 , P1 口 做 八 个 LED 数 码 管 的 位 选 输 出 口 , P3.0~P3.2外接三个按键K1、K2、K3构成键盘电路。
硬件电路
显示电路
void time() interrupt 1
//定时器中断
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
if(tt==20)
{ tt=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
}
}
write_n_sfm(n_shi,n_fen,n_miao);
else
write_sfm(shi,fen,miao);
if(n_shi==shi&&n_fen==fen)

基于51单片机,电子显示时钟带闹钟、整点报时、日期、星期

基于51单片机,电子显示时钟带闹钟、整点报时、日期、星期
void xianshishuzu()
{ StrTab[1]=second/10; //秒十位
StrTab[0]=second%10; //秒个位
StrTab[2]=10; //间隔符-
StrTab[4]=minute/10; //分十位
StrTab[3]=minute%10; //分个位
StrTab[5]=10; //间隔符-
void display(uchar w[32])
{ unsigned int i,j,c=0;
if(a==0)//正常时间显示
{ for(i=0;i<8;i++) //依次将数组w中八个数取出,并显示
{ P2=weikong_code[i]; //位选
j=w[i]; //取出要显示的数码
P0=tab[j]; //取出段选编码
if(month==13)
{month=1; year++;
if(year==10000)
year=0;}}
week++;//星期走
if(week==8)
week=1;
data1();
week1();
while(second==err);
}
}
/**********************键盘扫描子程序*************************/
{if(dБайду номын сангаасy==30); //闰年29天
{day=1; month++;
if(month==13)
{month=1; year++;
if(year==10000)
year=0;}}}

基于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单片机设计的简易电子钟可以显示当前时间,并且实现时间的调整和闹钟设定功能。

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

51单片机电子时钟设计

51单片机电子时钟设计

51单片机电子时钟设计电子时钟是一种非常实用的电子设备,它可以准确地显示时间,并拥有一系列的功能,如闹钟、日历等。

使用51单片机设计电子时钟,可以实现这些功能,同时还能够进行功能扩展,更好地满足用户需求。

首先,我们需要硬件上的准备工作。

51单片机需要与时钟(晶振)和显示器(LCD模块)进行连接。

晶振是提供单片机时钟脉冲的源头,LCD模块用于显示时间和各种功能。

同时,在电路中还需要进行一些扩展,如实时时钟模块(RTC模块)、按键模块等。

在软件设计方面,主要需要考虑以下几个方面:1.时钟脉冲:通过配置晶振的频率,可以生成单片机所需的时钟脉冲。

这个脉冲控制了单片机的运行速度,从而影响到时钟的准确性。

需要根据晶振频率进行相关配置。

2.时间的获取和计算:通过RTC模块可以获取当前的时钟数据(包括年、月、日、时、分、秒)。

在程序中,需要通过相应的接口获取这些数据,并进行计算。

比如,在显示时钟的时候,可以通过获取秒数、分钟数和小时数,并将其转换为相应的字符串进行显示。

3.菜单和按键功能:为了实现更多的功能,我们可以通过按键来实现菜单切换和功能选择。

在程序中,需要对按键进行扫描,判断按键的状态,然后进行相应的操作。

比如,按下菜单键可以进入菜单界面,通过上下键选择不同的功能,再通过确定键进行确认。

4.闹钟功能:闹钟功能是电子时钟中常见的功能之一、通过设置闹钟时间,并进行闹钟的开启或关闭,可以在指定的时间点触发相应的报警动作。

在程序中,需要编写逻辑判断闹钟是否到达指定的时间,然后触发报警。

5.日历功能:除了显示时间,电子时钟还可以显示当前的日期,包括年、月、日。

在程序中,需要编写相关的逻辑来获取日期数据,并进行显示。

通过以上的步骤,我们可以基本实现一个简单的电子时钟功能。

当然,根据用户的需求,还可以进行更多的功能扩展,比如添加温湿度监测、自动调光等功能。

总结起来,51单片机电子时钟的设计主要包括硬件和软件两个方面。

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

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

基于51单片机的电子时钟的设计电子时钟已经成为我们日常生活中不可或缺的设备之一。

随着科技的不断发展,电子时钟也越来越智能化,功能也越来越强大。

然而,简单的电子时钟也非常实用,可以帮助我们准确地把握时间,安排生活。

本文将基于51单片机,介绍一个简单的电子时钟的设计。

第一步,硬件设计。

要实现电子时钟,我们需要用到一个时钟模块,它可以为我们提供一个准确的时间基准。

同时,我们还需要将时间显示在一个数码管上,所以在硬件设计中我们需要使用数码管。

此外,为了方便调试,我们需要一个串口模块,它可以将调试信息输出到PC端,供我们观察。

具体的硬件设计如下:1.时钟模块我们使用的是DS1302时钟模块,它可以提供准确的时间计算。

DS1302时钟模块有六个引脚,分别是:VCC、GND、CLK、DAT、RST、DS。

其中,VCC和GND分别连接电源正负极,CLK是时钟,DAT是数据,RST是复位,DS是时钟数据存储器。

2.数码管我们使用共阴数码管,它有12个引脚,其中11个引脚是段选线,另外一个引脚是位选线。

为了方便连接,我们可以使用数码管驱动芯片,如74HC595。

它可以将51单片机的串行数据转为并行数据,以驱动数码管。

3.串口模块串口模块是用于通信的模块,它有4个引脚,分别是:VCC、GND、TX、RX。

其中,VCC 和GND连接电源正负极,TX是发送端口,RX是接收端口。

第二步,软件设计。

软件设计主要包括三个部分,分别是时钟模块的驱动程序、数码管的驱动程序和主程序。

我们需要编写一个DS1302时钟模块的驱动程序。

通过驱动程序,我们可以读取当前时间,并将其设置为时钟模块的初始时间。

同时,我们还需要实现定时器中断,以更新时钟显示。

数码管驱动程序是通过74HC595芯片实现的。

我们需要编写一个函数,将当前时间转换为段选数据,再通过74HC595芯片输出到数码管上。

3.主程序主程序主要包括时钟的初始化、时钟的设置、时钟的显示等功能。

51单片机的电子时钟设计

51单片机的电子时钟设计

51单片机的电子时钟设计一、引言随着科技的发展和人们对时间的准确度的要求日益提高,电子时钟成为了人们生活中不可缺少的一部分。

本文将介绍一种基于51单片机的电子时钟设计。

二、硬件设计1.主控部分本设计使用了51单片机作为主控芯片,51单片机具有丰富的接口资源和强大的处理能力,非常适合用于电子时钟的设计。

2.显示部分采用了数码管显示屏作为显示部分。

为了提高显示的清晰度,我们选用了共阳数码管。

使用4位数码管即可显示时、分和秒。

3.时钟部分时钟部分由振荡器和RTC电路构成。

振荡器提供时钟脉冲信号,RTC 电路实现对时钟的准确计时。

4.按键部分按键部分采用矩阵按键,以实现对时间的设置和调整。

三、软件设计1.系统初始化在系统初始化阶段,需要对硬件进行初始化设置。

包括对I/O口的配置,定时器的初始化等。

2.时间设置用户可以通过按键设置当前的时间。

通过矩阵按键扫描,检测到用户按下了设置键后,进入时间设置模式。

通过按下加减键,可以增加或减少时、分、秒。

通过按下确认键,将设置的时间保存下来。

3.时间显示在正常运行模式下,系统将会不断检测当前的时间,并将其显示在数码管上。

通过对时钟模块的调用,可以获取当前的时、分、秒并将其显示出来。

4.闹钟功能在时间设置模式下,用户还可以设置提醒闹钟的功能。

在设定时间到来时,系统会发出蜂鸣器的声音,提醒用户。

四、测试与验证完成软硬件设计后,进行测试与验证是必不可少的一步。

通过对硬件的连线接触检查和软件的功能测试,可以确保整个设计的正确性和可靠性。

五、总结通过本次设计,我对51单片机的使用和原理有了更清晰的认识,同时也对电子时钟的设计和制作有了更深入的了解。

电子时钟作为一种常见的电子产品,在我们的日常生活中发挥了重要的作用。

这次设计过程中,我遇到了许多问题,但通过查阅资料并与同学一起探讨,最终解决了问题。

相信通过不断的学习和实践,我可以在未来的设计中取得更好的成果。

基于51单片机的电子时钟的设计与实现综述

基于51单片机的电子时钟的设计与实现综述

基于51单片机的电子时钟的设计与实现综述基于51单片机的电子时钟是一种常见的嵌入式系统设计项目。

它通过使用51单片机作为核心处理器,结合外部电路和显示设备,实现了时间的计时和显示功能。

本文将对基于51单片机的电子时钟的设计和实现进行综述,包括硬件设计和软件设计两个部分。

一、硬件设计1.时钟电路时钟电路是电子时钟的核心部分,它提供稳定的时钟信号供给单片机进行计时。

常用的时钟电路有晶振电路和RTC电路两种。

晶振电路通过外接晶体振荡器来提供时钟信号,具有较高的精度和稳定性;RTC电路则是通过实时时钟芯片来提供时钟信号,具有较高的时钟精度和长期稳定性。

2.显示电路显示电路用于将时钟系统计算得到的时间信息转换为人们可以直接观察到的显示结果。

常用的显示器有数码管、液晶显示屏、LED显示屏等。

显示电路还需要与单片机进行通讯,将计时的结果传输到显示器上显示出来。

3.按键电路按键电路用于实现对电子时钟进行设置和调节的功能。

通过设置按键可以实现修改时间、调节闹钟等功能。

按键电路需要与单片机进行接口连接,通过读取按键的输入信号来实现对时钟的操作。

4.供电电路供电电路为电子时钟提供电源,通常使用直流电源。

供电电路需要满足单片机和其他电路的电源需求,同时还需要考虑电源的稳定性和保护措施等。

二、软件设计1.系统初始化系统初始化主要包括对单片机进行外设初始化、时钟初始化和状态变量初始化等。

通过初始化将各个外设配置为适合电子时钟功能运行的状态,并设置系统初始时间、闹钟时间等。

2.计时功能计时功能是电子时钟的核心功能,通过使用定时器和中断技术来实现。

通过设置一个固定时间间隔的定时器中断,单片机在每次定时器中断时对计时寄存器进行增加,实现时间的累加。

同时可以将计时结果转化为小时、分钟、秒等形式。

3.显示功能显示功能通过将计时结果传输到显示器上,实现时间信息的显示。

通过设置显示器的控制信号,将时间信息依次发送到各个显示单元上,实现数字或字符的显示功能。

基于51单片机的多功能电子时钟设计

基于51单片机的多功能电子时钟设计

设计研发2021.07基于51单片机的多功能电子时钟设计杨洁,叶晶晶(黔南民族师范学院物理与电子科学学院,贵州都匀,558000 )摘要:单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、深受初学者喜欢。

以STC90C58为核心控制芯片,DS1302为时钟芯片,DS18B20釆集温度,完成多功能电子时钟的设计。

该设计能够准确显示年、月、日、星期、时、分、秒及温度,通过按键可以调整年、月、日、星期、时、分、秒、12/24小时转换、整点提示以及闹钟,还可显示阴阳历。

关键词:电子时钟;单片机;阴阳历转换;DS1302 ; DS18B20Design of Multi-function Clock Based on 51 MCUYang Jie, Ye Jingjing(College of physics and electronic science, Qiannan Normal University for N&tionalities, DuyunGuizhou, 558000)Abstract : MCU is small in size, light in weight, strong in anti-interference ability, low in environmentai requirements, low in price, high in reliability, good in flexibility, and is popular among beginners. Stc90c58 as the core control chip, DS1302 as the clock chip, DS18B20 temperature acquisition, complete the design of multi —functional electronic clock. The design can accurately display the year, month, day, week, hour, minute, second and temperatore. Through the button, you can adjust the year, month, day, week, hour, minute, second, 12/24-hour conversion, whole point prompt and alarm clock, and display the lunar calendar.Keywords : Electronic clock ; MCU ; The lunar conversion ; DS 1302 ; DS18B200引言目前单片机的使用已经十分广泛,本次设计的多功能电 子钟能完成年、月、日、星期、时、分、秒的显示与调整,并且还 添加了温度、阴阳历转换显示及闹钟、12/24小时转换、整点提示等功能,有较强的应用性。

基于51单片机电子时钟设计

基于51单片机电子时钟设计

基于51单片机电子时钟设计51单片机是一种非常常见的单片机,被广泛应用于各种电子设备中。

在本文中,我将基于51单片机设计一个电子时钟。

首先,我们需要收集各种元器件,包括51单片机、数码管显示模块、电容、电阻、晶体振荡器等。

接下来,我们将进行硬件连接。

首先,将数码管显示模块连接到单片机的相应引脚上。

数码管显示模块通常由多个七段数码管组成,每个七段数码管有共阴极和共阳极两种类型,根据具体的数码管型号选择适当的连接方式。

接下来,连接晶体振荡器到单片机上。

晶体振荡器通常用于提供时钟信号,给单片机提供准确的时钟频率。

选择适当的晶体振荡器频率,将其连接到单片机的相应引脚上。

同时,还需要连接其他的元件,如电容和电阻。

电容用于稳定电压,在电路中通常用作滤波器。

选择合适的电容,将其连接到电源引脚上。

电阻用于限制电流和调整电压,根据需要选择合适的电阻值,并将其连接到相应的引脚上。

接下来,我们将进行软件编程。

首先,我们需要在编程环境中选择适当的编程语言,比如C语言。

然后,我们需要编写代码来实现时钟的各种功能。

首先,我们需要初始化单片机的引脚。

这可以通过设置相应的寄存器来实现,以确保单片机正常工作。

接下来,我们需要编写代码来实现时钟的显示功能。

我们可以使用循环来不断刷新数码管显示,以确保显示的时钟数值实时更新。

可以通过读取单片机内部的计时器或使用外部的定时模块来获取当前的时间,并将其转换为数码管可以显示的格式。

除了显示功能之外,还可以添加其他功能,比如闹钟、定时器等。

闹钟功能可以通过检测当前时间和设置的闹钟时间来触发相应的提醒。

定时器功能可以用来设置特定的时间间隔,并在到达设定时间时触发相应的操作。

总结起来,基于51单片机设计一个电子时钟需要进行硬件连接和软件编程。

通过合理的硬件连接和编写精确的代码,我们可以实现一个功能齐全的电子时钟,满足各种需求。

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

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

基于51单片机的电子时钟设计
电子时钟是一种使用电子元件和计算机技术制造的时计,它可以显示年、月、日、时、分、秒等时间信息,并且具有显示精确、功能齐全、操
作简便等特点。

本文将基于51单片机设计一个电子时钟。

一、硬件设计:
1.时钟模块:我们可以使用DS1302时钟模块作为实时时钟芯片,它
可以提供精确的时间信息,并且可以通过单片机与之进行通信。

2.显示模块:我们可以使用共阳数码管进行时间的显示,将时钟设计
成6位7段显示器。

3.按键模块:我们可以使用按键作为输入方式,通过按键调整时间信息。

二、软件设计:
1.初始化:首先,我们需要初始化时钟模块和显示模块,使它们正常
工作。

同时,设置时钟的初始时间为系统当前时间。

2.获取时间:通过与时钟模块的通信,获取当前的时间信息,包括年、月、日、时、分、秒等。

3.显示时间:将获取到的时间信息通过显示模块显示出来,分别显示
在6个数码管上。

4.时间调整:通过按键模块的输入,判断用户是否需要调整时间。


果需要,可以通过按键的不同组合来调整时、分、秒等时间信息。

5.刷新显示:通过不断更新显示模块的输入信号来实现时钟的流动性,保持秒针不断运动的效果。

6.时间保存:为了保证时钟断电后依然能够保持时间,我们需要将时
钟模块获取到的时间信息保存在特定的EEPROM中。

7.闹钟功能:可以通过按键设置闹钟,当到达闹钟时间时,会通过蜂
鸣器发出响声。

以上就是基于51单片机的电子时钟设计方案。

通过对硬件和软件的
综合设计,我们可以实现一个功能齐全的电子时钟。

基于51单片机定时器的电子时钟设计

基于51单片机定时器的电子时钟设计

基于51单片机定时器的电子时钟设计电子时钟是一种集计时、显示时间等功能于一体的电子设备。

它可以准确地显示当前的时间,并通过定时器控制乃至更新时间。

本文将介绍基于51单片机定时器的电子时钟设计。

设计步骤如下:步骤一:硬件设计首先,需要准备以下硬件元件:1.51单片机:作为主要控制单元;2.DS1302实时时钟芯片:用于计时和保存时间数据;3.16x2字符LCD显示屏:用于显示时间;4.4x4矩阵键盘:用于调整时间和设置闹钟;5.蜂鸣器:用于报时功能;6.电位器:用于调整LCD背光亮度。

将这些硬件元件按照电路图连接起来,注意正确连接引脚和电源。

步骤二:软件设计在51单片机上编写程序,实现以下功能:1.初始化:a.初始化DS1302实时时钟芯片,设置初始时间;b.初始化LCD显示屏;c.初始化矩阵键盘;2.获取时间:a.从DS1302芯片读取当前时间;3.显示时间:a.将时间数据转换为字符,并在LCD上显示出来;4.键盘输入:a.监测矩阵键盘输入,判断用户按下的是哪个键;b.根据不同的键,执行相应的操作,如设置时间、设置闹钟等;5.闹钟功能:a.设置闹钟时间,当当前时间与闹钟时间相同时,触发蜂鸣器报时;b.可以通过按键来设置闹钟时间和开启/关闭闹钟功能。

以上是基本的电子时钟功能,可以根据实际需求进行扩展和添加其他功能。

步骤三:测试与调试步骤四:优化与扩展在基本功能正常运行的基础上,可以对电子时钟进行优化和扩展。

添加一些实用的功能,如温湿度显示、日期显示、闹钟音乐选择等,以提高电子时钟的实用性和用户体验。

总结:本文介绍了基于51单片机定时器的电子时钟设计步骤,包括硬件设计和软件编程。

通过该设计,可以实现准确显示时间、调整时间、设置闹钟等功能。

为了使电子时钟更加实用,可以根据需要进行优化和扩展。

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

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

时钟的基本原理分析利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一个计数,设定定时1秒的中断计数初值为100,每中断一次中断计数初值减1,当减到0时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。

为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。

由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。

三,时钟设计分析针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构。

这样,既能做到经济合理又能实现预期的功能。

在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。

程序可分为闹钟的声音程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延时程序等。

运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。

这是前期准备工作。

第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。

第三部分是软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。

第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。

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

用51单片机做的电子时钟程序如下:#includeunsigned char codetable1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ,0x40,0x76};//字码表0-9,最后一个是一横"-"unsigned int i,a,b,c,d,flag,flag1;unsigned int sec,min,h,nm,nh,nz;unsigned int w,day,mon,year;int miao1,miao2,miao3;sbit keyled=P1^0;sbit key2=P1^1;sbit keyinc=P1^2; sbit keymood=P1^3; sbit BEEP=P1^4; void second();void minute();void hour();void time();void riqi();void xianshi();void delay10ms(); void delay20ms();void tiaoshi();void miaobiao();void miaotime();void week();void naozhong();void shengyin();//前几天刚用了下定时器,想起来之前用汇编写的时钟程序基本没有什么功能,所以这几天就用C再写了下//这个时钟的功能是模仿我自己的手表写的,功能完全一样,有秒表,闹钟,可以显示年月日及星期/{if(min==nm&amp;&amp;h==nh)//时间到了,闹钟响{shengyin(); //闹钟的声音程序}}if(c==0||c==2){if(keymood==0){miao1=0;miao2=0;miao3=0;}}while(b==1)//保证按键只按一次,没有重复按键{tiaoshi();goto B1; //如果b还等于1,刚重复扫描秒表界面}}/{ i=0; //将i清零,保证每次进入都是一样的B2:if(nz==0){ if(min==nm&amp;&amp;h==nh) {shengyin();}}naozhong();while(b==2){ tiaoshi();goto B2;}}{ i=1;B3:if(nz==0){ if(min==nm&amp;&amp;h==nh){shengyin();}}xianshi(); //显示程序,用i的大小来分配,相当于调时、分、秒就显示时间,调年月日就显示日期while(b==3){tiaoshi();goto B3;}}/{ i=0;if(nz==0){ if(min==nm&amp;&amp;h==nh) {shengyin();}}second();minute();hour();}if(keyinc==0){ delay10ms();if(keyinc==0){B: riqi();while(keyinc==0) {goto B;}}}if(keymood==0) {delay10ms();if(keymood==0) {N: naozhong(); }while(keymood==0){goto N;}}tiaoshi();/{if(flag&gt;10) //在flag&gt;10的时候关闭所有的数码管,其他时间开启相应位,这样就可以达到闪烁的目的了{P3=0xff;}else{P3=0x7f;}}else //如果i不等于1,刚正常显示,不会闪烁{P3=0x7f;}P2=table1[secge];for(a=0;a&lt;100;a++); if(i==1){if(flag&gt;10){P3=0xff;}else{P3=0xbf;}}else //如果i不等于1,刚正常显示,不会闪烁{P3=0xbf;}P2=table1[secshi];for(a=0;a&lt;100;a++);P3=0xdf;P2=table1[10];for(a=0;a&lt;100;a++);//*******************************分显示程序***************************void minute(){int minge,minshi;minge=min%10;minshi=min/10;if(i==2){if(flag&gt;10) {P3=0xff;}else{P3=0xef;}}else{P3=0xef;}P2=table1[minge];for(a=0;a&lt;100;a++);if(i==2){if(flag&gt;10){P3=0xff;}else{P3=0xf7;}}else{P3=0xf7;}P2=table1[minshi];for(a=0;a&lt;100;a++);P3=0xfb;P2=table1[10];for(a=0;a&lt;100;a++);}//*********************************时显示程序*************************void hour(){int hourge,hourshi;hourge=h%10;hourshi=h/10;if(i==3) {if(flag&gt;10) {P3=0xff;}else{P3=0xfd;}}else{P3=0xfd;}P2=table1[hourge];for(a=0;a&lt;100;a++); if(i==3){if(flag&gt;10){P3=0xff; }else{P3=0xfe; }}else{P3=0xfe; }P2=table1[hourshi];for(a=0;a&lt;100;a++);}//*****************************年、月、日显示程序************************void riqi(){int dayge,dayshi;int monge,monshi;int yearge,yearshi;dayge=day%10;dayshi=day/10;if(i==4) {if(flag&gt;10) {P3=0xff;}else{P3=0x7f;}}else{P3=0x7f;}P2=table1[dayge];for(a=0;a&lt;100;a++); if(i==4){if(flag&gt;10){P3=0xff;}else{P3=0xbf;}}else{P3=0xbf;}P2=table1[dayshi];for(a=0;a&lt;100;a++); P3=0xdf;P2=table1[10];for(a=0;a&lt;100;a++); monge=mon%10; monshi=mon/10;if(i==5){if(flag&gt;10){P3=0xff;}else{P3=0xef;}}else{P3=0xef;}P2=table1[monge];for(a=0;a&lt;100;a++); if(i==5){if(flag&gt;10){P3=0xff;}else{P3=0xf7;}}else{P3=0xf7;}P2=table1[monshi]; for(a=0;a&lt;100;a++); P3=0xfb;P2=table1[10];for(a=0;a&lt;100;a++); yearge=year%10;yearshi=year/10; if(i==6){if(flag&gt;10) {P3=0xff;}else{P3=0xfd;}}else{P3=0xfd;}P2=table1[yearge];for(a=0;a&lt;100;a++); if(i==6){if(flag&gt;10){P3=0xff; }else{P3=0xfe; }}else{P3=0xfe; }P2=table1[yearshi];for(a=0;a&lt;100;a++);}//*****************************星期显示程序****************************void week(){if(i==7){if(flag&gt;10){P3=0xff; }else{P3=0xef; }}else{P3=0xef; }P2=table1[w];for(a=0;a&lt;100;a++);}//*****************************秒表显示程序************************void miaobiao(){int miao1ge,miao1shi;int miao2ge,miao2shi;int miao3ge,miao3shi;miao1ge=miao1%10;miao1shi=miao1/10;P3=0x7f;P2=table1[miao1ge]; for(a=0;a&lt;100;a++); P3=0xbf;P2=table1[miao1shi]; for(a=0;a&lt;100;a++); P3=0xdf;P2=table1[10];for(a=0;a&lt;100;a++); miao2ge=miao2%10; miao2shi=miao2/10;P3=0xef;P2=table1[miao2ge]; for(a=0;a&lt;100;a++); P3=0xf7;P2=table1[miao2shi]; for(a=0;a&lt;100;a++); P3=0xfb;P2=table1[10];for(a=0;a&lt;100;a++); miao3ge=miao3%10; miao3shi=miao3/10;P3=0xfd;P2=table1[miao3ge];for(a=0;a&lt;100;a++);P3=0xfe;P2=table1[miao3shi];for(a=0;a&lt;100;a++);}//****************************闹钟显示程序************************void naozhong(){int nmge,nmshi;int nhge,nhshi;nmge=nm%10;nmshi=nm/10;if(i==1||i==3||i==5||i==7) {if(flag&gt;10){P3=0xff;}elseP3=0xef;}}else{P3=0xef;}P2=table1[nmge];for(a=0;a&lt;100;a++); if(i==1||i==3||i==5||i==7)if(flag&gt;10) {P3=0xff;}else{P3=0xf7;}}elseP3=0xf7;}P2=table1[nmshi];for(a=0;a&lt;100;a++); P3=0xfb; //显示一横P2=table1[10];for(a=0;a&lt;100;a++); nhge=nh%10;nhshi=nh/10;if(i==2||i==4||i==6)if(flag&gt;10) {P3=0xff;}else{P3=0xfd;}}elseP3=0xfd;}P2=table1[nhge];for(a=0;a&lt;100;a++); if(i==2||i==4||i==6) {if(flag&gt;10){P3=0xff;}else{P3=0xfe;}}else{P3=0xfe;}P2=table1[nhshi];for(a=0;a&lt;100;a++);P3=0xdf; //显示HP2=table1[11];for(a=0;a&lt;100;a++);}//*******************************调时显示***********************void xianshi(){if(i&gt;3&amp;&amp;i&lt;7){riqi();}else if(i==7) {week(); }else{second(); minute(); hour();}}//***********************************闹钟声音程序****************void shengyin(){BEEP=~BEEP;for(a=0;a&lt;10;a++);}//***************************时钟加1程序*******************************void time(){if(flag==90){flag=0;sec++;if(sec==60){sec=0;min++;if(min==60){min=0;h++;。

相关文档
最新文档