89c51单片机的数字钟程序?

作者&投稿:东郭斩 (若有异议请与网页底部的电邮联系)
求程序用AT89C51单片机......用八位数码管实现数字时钟用定时器做~

ORG 0000HAJMP MAIN // ;跳转到主程序 ORG 000BH // ;T0中断入口AJMP PTF0 // ;中断处理首地址 //主程序MAIN: MOV SP,#05FH MOV 30H,#0 // ;缓冲单元设置初值12:00:00 MOV 31H,#0 MOV 32H,#0 MOV 36H,#0FH // ; 设置4000次中断计数 MOV 37H,#0A0H MOV TMOD,#02H // ;定时器启动 MOV TL0,#6 MOV TH0,#6 SETB TR0 // 启动T0计时器 MOV IE,#82H MOV IP,#20H//数码管动态显示LED6: LCALL DISPLAY JNB P1.0,CLEAR //;判断键盘输入 JNB P1.1,SET_MINUTE JNB P1.2,SET_HOUR AJMP LED6CLEAR: LCALL DISPLAY JNB P1.0,CLEAR MOV 30H,#12H //;时钟显示复位 A键 MOV 31H,#0 MOV 32H,#0 SJMP LED6SET_MINUTE: LCALL DISPLAY JNB P1.1,SET_MINUTE MOV A,31H //;调节分加1 B键 CJNE A,#59H,MIN MOV 31H,#0 SJMP LED6SET_HOUR: LCALL DISPLAY JNB P1.2,SET_HOUR MOV R1,#30H //;调节时加1 C键 MOV A,@R1 CJNE A,#23H,HOUR // 比较立即数和A,不相等则转移 MOV 30H,#0MIN: ADD A ,#1 //将1加到累加器 DA A // 累加器十进制调整 MOV 31H,A LCALL DELAY1 AJMP LED6HOUR: ADD A,#1 DA A MOV 30H,A LCALL DELAY1 AJMP LED6DISPLAY: MOV DPTR,#TAB //;表的首地址给16位数据指针寄存器DPTR MOV A,30H // ;时为的十位显示 SWAP A // A的高四位和低四位互换 ANL A,#0FH // A与00001111相与 MOVC A,@A+DPTR // 程序存储器代码字节传送到累加器 MOV P2,#7FH MOV P0,A LCALL DELAY //调用延时子程序 MOV A,30H // ;时位的个位显示 ANL A,#0FH MOVC A,@A+DPTR MOV P2,#0BFH JB 00H,DIS01 ORL A,#80HDIS01: MOV P0,A LCALL DELAY MOV A,31H // ;分位的十位显示 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,#0EFH MOV P0,A LCALL DELAY MOV A,31H //;分位的个位显示 ANL A,#0FH MOVC A,@A+DPTR MOV P2,#0F7H JB 00H,DIS02 ORL A,#80HDIS02: MOV P0,A LCALL DELAY MOV A,32H // ;秒位的十位显示 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,#0FDH MOV P0,A LCALL DELAY MOV A,32H //;秒位的个位显示 ANL A,#0FH MOVC A,@A+DPTR MOV P2,#0FEH MOV P0,A LCALL DELAY RET//中断程序PTF0: PUSH PSW ;中断处理 PUSH ACC MOV PSW,#8 DJNZ 37H,PTF0R DJNZ 36H,PTF0R MOV 36H,#0FH MOV 37H,#0A0H MOV R0,#32H //;定时到一秒 MOV A,@R0 ADD A,#1 DA A MOV @R0,A CPL 00H CJNE A,#60H,PTF0R MOV @R0,0 DEC R0 MOV A,@R0 ADD A,#1 DA A MOV @R0,A CJNE A,#60H,PTF0R MOV @R0,#0 DEC R0 MOV A,@R0 ADD A,#1 DA A MOV @R0,A CJNE A,#24H,PTF0R MOV @R0,#0PTF0R: POP ACC // 保护现场 POP PSW RETI // 中断返回DELAY: MOV R6,#10 //;动态显示延时L0: MOV R7,#250 DJNZ R7,$ DJNZ R6,L0 // 寄存器减一,不为0则转移 RET // 子程序返回DELAY1: MOV R5,#1BH //;调整时、分显示延时L1: MOV R6,#9HL2: MOV R7,#19H DJNZ R7,$ DJNZ R6,L2 DJNZ R5,L1 RET //数码显示表TAB: DB 3FH,06H,5BH,4FH,66H // ; 0,1,2,3,4 DB 6DH,7DH,07H,7FH,6FH // ; 5,6,7,8,9 END

你好!四个数码管,怎么来实现时分秒的显示,至少也要6个数码管吧
程序什么时间要?原理图确定了吗

/*********************************************
ILONG编做
【注意P3口输出模拟和在{实验板}上不一样。实验板不用取反】
【目的】:用20次T0定时产生1s.进而形成 HH-mm-ss时间
【参数说明】:
40H~47H :显示管,每位暂存器,存放要显示的数码的地址。可根据地址加1,实现该位数加1;
并且低4位可以代表管子要显示的值(42H、45H除外)。
48H :要显示的位值(0~7,由译码器翻译出)
49H :每位每次刷出时要显示的时间0~256us
4A :20次定时,的次数计数器
4BH,4CH :小时十位进位刷0,时,小时两位数的暂存
4DH :调试时,要调整类型,每次INT0中断自增一次
50H~5FH :0~F 16个数的码值
60H :"-"的码值
61H :"空" 的码值
62H,63H :要闪的两位地址暂存 (好像没用着)
R0 :存放 每位暂存器 的地址,用于 刷新位时 移位
00H(位) :是否有INT0(调整)中断
01H(位) :是闪亮,还是闪空,即:闪烁时的亮暗状态
【存在问题】:
1,调整时间时,分钟位开始乱码。
2,调整时间时,必须亮的时候才能调
3,时间差:慢于实际时间
2011.10.21 ilong(crazy night)
*********************************************/
SJMP 0x0030
ORG 0x0030
MAIN:
//启动外部中断
SETB IT0
SETB IE0
SETB EX0
SETB PX0
SETB IT1
SETB IE1
SETB EX1
SETB PX1
SETB EA
CLR 00H //没有调整中断
CLR 01H //闪空
MOV 4DH,#04H //0xFC
MOV P3,#0FH
MOV 62H,46H //从分开始闪
MOV 63H,47H
//十位数********************
MOV 50H,#3FH
MOV 51H,#06H
MOV 52H,#5BH
MOV 53H,#4FH
MOV 54H,#66H
MOV 55H,#6DH
MOV 56H,#7DH
MOV 57H,#07H
MOV 58H,#7FH
MOV 59H,#6FH
MOV 5AH,#77H
MOV 5BH,#7CH
MOV 5CH,#39H
MOV 5DH,#5EH
MOV 5EH,#79H
MOV 5FH,#71H
MOV 60H,#40H
MOV 61H,#00H
//八位管的暂存 从左到右40-47
MOV 40H,#50H
MOV 41H,#50H
MOV 42H,#60H
MOV 43H,#50H
MOV 44H,#50H
MOV 45H,#60H
MOV 46H,#50H
MOV 47H,#50H
MOV 48H,#00H //扫描位暂存
MOV R0,#40H //扫描值地址
MOV 4AH,00H //20次定时 计数
LCALL TIMER_GO20 //开启并初始定时器
//主函数进程,就是扫描码管值并显示,其他为中断操作***************************************************
SCAN: //显示器扫描输出*************************************
MOV P2,48H //选择显示位(从左到右0-7)
MOV A,@R0 //获取该位的数码值 地址
MOV R1,A
MOV A,@R1 //获取该位码值
//CPL A //根据数码管是共阴、共阳 是否取反
MOV P0,A //从P0输出每位的码值,注意:该端口时下面的“清屏”一起改
LCALL DELAY //进入每位延时
MOV P0,#0FFH //清屏
INC 48H //暂存器后移
INC R0 //位后移
MOV A,48H //通过 (48H)的值+08H 判断是否到了 位尾
ADD A,#08H
JB 0D6H,RER //D6H(位)为AC(辅助进位:半进位)。为1时说明(48H)的值+08H=F,即(48H)=8,此时跳向RER
SJMP SCAN
RER: //扫描重置
CLR 0D6H //重置 AC(辅助进位:半进位)
MOV 48H,#00H
MOV R0,#40H
SJMP SCAN
//End 主函数*********************************************************************************************
DELAY: //延时,用于扫描7段管时,在每一位停留的时间.时间太短,回使不该亮的段也有些亮
MOV 49H,#25H //49H的值不可以等于FF,因为FF取反后49H为0,不会延迟了
MOV A,0FEH //用取反设置循环次数,
CPL A
MOV 49H,A
ADD_1:
INC 49H
MOV R1,49H //因为DJNZ判断完后要把判断的地址减去1,所以为了DJNZ不对49H的内容造成影响,把49H的值装到R1中去判断
DJNZ R1,ADD_1
RET
//20次定时*********************************************************************************************************
TIMER_GO20:
//用4AH 设置循环次数*********************************
MOV 4AH,#15H //20(=0x15)次定时
MOV A,4AH //用取反设置定时次数,
CPL A
MOV 4AH,A
SJMP TIMER_S
TIMER_GO5: //与TIMER_GO20类似,只是这里只让定时5次一循环。用于调整闪烁
MOV 4AH,#05H //5(=0x05)次定时
MOV A,4AH //用取反设置定时次数,
CPL A
MOV 4AH,A
TIMER_S://未重置(4AH)的调用,
//设置启动T0
MOV TMOD,#01H //设置模式:T0模式1
MOV TH0,#3CH //T0初值高8位
MOV TL0,#0AH //T0初值低8位
//CLR TF0 //未知问题
SETB ET0 //T0允许中断
SETB EA //CPU允许中断
SETB TR0 //启动T0
RET
T0_INT: //T0中断程序段
CPL P1.7 //测试端口:T0重新定时一次发生一次跳转
LCALL TIMER_S //T0重新定时,继续跑。但:不会初始化20次计数
INC 4AH //T0定时次数加1
MOV A,4AH
JNZ CY_20 //50H加到FF再加就到0了。不为0回去接着执行主程序;为0 则20次定时 溢出即:00H(位)为1
CPL P1.6 //测试端口每秒发生一次跳转
JB 00H,GO_BLINK //如果00H(位)被置1,则不再执行时间系统加1。用于调整时显示闪烁
LCALL CLOCK_GO //时间系统加1秒
LCALL TIMER_GO20 //20次重新开始
SJMP CY_20
GO_BLINK:
LCALL TIMER_GO5 //5次重新开始,
LCALL BLINK
CY_20: RET
//时间系统进位设置*******************************************************************************************
CLOCK_GO:
INC 47H //秒加1
//个位秒 进位 十位
MOV A,#5AH //主要是看"#5A"中的“A”,
SUBB A,47H
JNZ SS_OUT //如果(47H)值 低4 与A中的低4不相同,跳到“SS_OUT”,不进位
MOV 47H,#50H
INC 46H
SS_OUT:
//秒 进位 分
MOV A,#56H //
SUBB A,46H
JNZ SM_OUT //如果(46H)值 低4 与A中的低4不相同,跳到“SS_OUT”,不进位
MOV 46H,#50H
CLOCK_GO_M:INC 44H
//分调整用
SM_OUT:
//分个位 进位 分
MOV A,#5AH //
SUBB A,44H
JNZ MM_OUT //如果(44H)值 低4 与A中的低4不相同,跳到“SS_OUT”,不进位
MOV 44H,#50H
INC 43H
MM_OUT:
//分 进位 时
MOV A,#56H //
SUBB A,43H
JNZ MH_OUT //如果(43H)值 低4 与A中的低4不相同,跳到“SS_OUT”,不进位
MOV 43H,#50H
CLOCK_GO_H:INC 41H
//时调整用
MH_OUT:
//时个位 进位 时
MOV A,#5AH //
CLR CY //排除借位影响
SUBB A,41H
JNZ HH_OUT //如果(41H)值 低4 与A中的低4不相同,跳到“SS_OUT”,不进位
MOV 41H,#50H
INC 40H
HH_OUT:
//时十位置0
MOV 4BH,40H //为了不影响暂存器数据,把40H、41H转到4BH、4CH中进行 操作
MOV 4CH,41H
MOV A,4BH
SWAP A //获得小时十位数,并放到A的高4位上
ANL A,#0F0H //清0低4位
ANL 4CH,#0FH //小时个位 高4位清0
ADD A,4CH //小时的十位与个位相加(高4位来自小时的十位暂存器40H,低四位来自小时个位的寄存器41H)
SUBB A,#24H
JNZ HD_OUT //如果(46H)值 低4 与A中的低4不相同,跳到“SS_OUT”,不进位
MOV 41H,#50H //个位 清零
MOV 40H,#50H //十位清零
HD_OUT:
CG_OUT: RET
//END 时间系统进位设置*******************************************************************************************
//INTO中断程序段*********************************************************************************
INT0_INT:
SETB 00H
CPL P1.5
CPL P1.5
CLR 01H //使得在换位闪烁时不会把上位的数带给下一位,
HMS_BACK: //在每次换位时都要把,被放到暂存上的值那回去,使其显示出来
MOV A,4DH
CJNE A,#02H,BSH_S //back second OR hour _select
LCALL LIGHT_M
SJMP B_END
BSH_S: //恢复秒小时选择
JB CY,B_H
SJMP B_S
B_S: LCALL LIGHT_S //把调好的数据装回暂存器
SJMP B_END
B_H: LCALL LIGHT_H
B_END:
// CLR TR0 //定时器0,停止计时
DEC 4DH //调整类型(时、分、秒)改变
MOV A,4DH
JNZ INT0_OUT //是否恢复时钟
CLR 00H //置0,调整中断(ilong 定义)
CLR 01H
MOV 4DH,#04H //初始化调整类型

INT0_OUT:
RET
////闪烁*****************************************************************
BLINK:
CPL P1.1
CPL 01H
MOV A,4DH
CJNE A,#02H,SH_S
SJMP MM_SET
SH_S: //闪烁秒小时选择
JB CY,HH_SET
SJMP SS_SET
SS_SET: //秒钟设置****************
JB 01H,DACK_S
LIGHT_S:
MOV 46H,4EH
MOV 47H,4FH
SJMP BLINK_OUT
DACK_S:
MOV 4EH,46H
MOV 4FH,47H
MOV 46H,#61H
MOV 47H,#61H
RET
MM_SET: // 分钟设置**************
JB 01H,DACK_M
LIGHT_M:
MOV 43H,4EH
MOV 44H,4FH
SJMP BLINK_OUT
DACK_M:
MOV 4EH,43H
MOV 4FH,44H
MOV 43H,#61H
MOV 44H,#61H
RET
HH_SET: //小时设置****************
JB 01H,DACK_H
LIGHT_H:
MOV 40H,4EH
MOV 41H,4FH
SJMP BLINK_OUT
DACK_H:
MOV 4EH,40H
MOV 4FH,41H
MOV 40H,#61H
MOV 41H,#61H
BLINK_OUT:RET
//INT1中断程序段***************************************************************
INT1_INT:
//lcall HMS_BACK
//clr tr0
CPL P1.4
MOV A,4DH
CJNE A,#02H,ADDSH_S //ADD Hour OR ADD second OR _select
SJMP ADD_M
ADDSH_S: //调整秒小时选择
JB CY,ADD_H
SJMP ADD_S
ADD_S: LCALL CLOCK_GO
SJMP ADD_END
ADD_M: LCALL CLOCK_GO_M
SJMP ADD_END
ADD_H: LCALL CLOCK_GO_H
ADD_END:
// LCALL CLOCK_GO
RET
/*********************************************************************************
最后放中断保险些
*********************************************************************************/
//T0中断程序***************
ORG 000BH
LCALL T0_INT
RETI
//INT0中断*****************
ORG 0003H
LCALL INT0_INT
RETI
//INT1中断*****************
ORG 0013H
LCALL INT1_INT
RETI
END

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit up_m=P3^0; //秒按键设置
sbit up_f=P3^1; //分按键设置
sbit up_s=P3^2; //时按键设置
uchar const smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar i,j,k;
void delay(uint cnt)
{
while(--cnt);

}
void delayms(uint a)
{
uchar i;
while(--a)
{
for(i=0;i<125;i++);
}
}
void init()
{
TMOD=0X01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
ET0=1;
EA=1;
TR0=1;
}
void keyboard()
{
P3=0xff;
if(up_m==0)
delayms(40);
if(up_m==0)
{
i++;
if(i>=60)
{
i=0;
}
delayms(40);
}
if(up_f==0)
delayms(40);
if(up_f==0)
{
j++;
if(j>=60)
{
j=0;
}
delayms(40);
}
if(up_s==0)
delayms(40);
if(up_s==0)
{
k++;
if(k==23)
{
k=0;
}
delayms(40);
}
}
void init_smg()
{
P2=2;
P0=0x40;
delay(5);
P2=5;
P0=0x40;
delay(5);
}
main()
{
i=0;
init();
while(1)
{ init_smg();
P2=2;
P0=0x40;
P2=5;
P0=0x40;
P0=0x00;
keyboard();
P2=7;
P0=smg[i%10];
delay(3);
P0=0X00;
P2=6;
P0=smg[i/10];
delay(3);
P0=0x00;

P2=4;
P0=smg[j%10];
delay(3);
P0=0X00;
P2=3;
P0=smg[j/10];
delay(3);
P0=0x00;

P2=1;
P0=smg[k%10];
delay(3);
P0=0X00;
P2=0;
P0=smg[k/10];
delay(3);
P0=0x00;
}
}
void time () interrupt 1
{
unsigned char a;
a++;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
if(a==20)
{
a=0;
i++; //秒控制
if(i==60)
{
i=0;
j++;//分控制
}
if(j==60)
{
j=0;
k++;//时控制
if(k>23)
k=0;
}
}
}

这是我以前写的一个,是八位数码管的,你自己改一下就好了,思想是一样的

可以找我代做,成品都没问题,QQ67348467


c51单片机数码管显示0到99
C51单片机可以通过编程控制数码管显示0到99的数值。这通常涉及到对单片机I\/O端口的操作,以及适当的延时和扫描技术来实现多位数码管的显示。C51单片机是一种基于8051架构的微控制器,广泛应用于各种嵌入式系统中。它具有多个I\/O端口,这些端口可以直接与数码管的段和位相连。数码管是一种常见的显示器件,...

C51单片机中的数据类型主要有 哪几种?至少写出四种。
bit 型,只能是0和1 unsigned char 可以表示 0到255 unsigned int 可以表示 0到65535 unsigned long int float double float

C51单片机:用数码管显示0到999的值。求c语言程序和原理图
int key1,key,disbuf;\/\/ 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};unsigned char ledx[8];bit s0,s1;void delay(uchar z...

请问C51单片机在每隔3秒产生两个0-9的随机数,如第一个数大于7,P1.7亮...
EA=1;srand(9); \/\/写入随意值初始化随机函数 temp1=rand();temp2=rand();if(temp1>7){ p17=0;p15=1;p16=1;TR0=1;num=0;while(num<30);TR0=0;} if((temp1<7)&&(temp2>7){ p16=0;p15=1;p17=1;TR0=1;num=0;while(num<30);TR0=0;} if((temp1<7)&&(temp2<7){ p1...

用单片机c51,c语言编0-9计数器程序!谢谢!!!
你的硬件电路有问题啊,单片机31号脚要接高电平 还有,你的数码管接法也不对啊 看你的排阻接法,你的数码管要用共阴极的 当加到9之后,再按一下,是不是又恢复到0啦???下面是更改的回答 include<reg51.h>unsigned char a;unsigned char code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,...

c51单片机怎么判断小数
1、首先将输入C51单片机的数字整数部分保存到2个char型变量中。2、将小数部分保存到另外两个char型变量中。3、最后在计算的时候将所有的数单独输出。就可以让C51单片机判断小数了。

51单片机的数据类型都有那些?
在keil C51或者iar for c8051编译器下:一、int 占两个字节 范围:-32768~+32767 二、long占四个字节 范围:-2147483648~+2147483647 三、float占四个字节 范围:3.40E+38 ~ +3.40E+38 四、double占8个字节 范围:-1.79E+308 ~ +1.79E+308 51单片机是对所有兼容Intel 8031指令系统的单片机...

stc89 c51的引脚个数?
引脚个数:这个主要看封装形式,其引脚分别为44脚(LQFP44封装),40脚(DIP40),48脚(LQFP48),64脚(LQFP64S及LQFP64L封装);数据存储器大小:4KB(4096);程序存储器大小:56KB;内置EEPROM大小:3KB;次单片机特点:1. 增强型 8051 CPU,1T,单时钟\/机器周期,速度比普通8051快8-12倍 2...

c51单片机中有多少条输入|输出线?它们与片外的地址总线,数据总线,控制...
51都是8位的 地址和数据都是8位

C51单片机怎么用C语言实现数值的开方和平方运算?
C51是基于标准的C语言扩展而来的,所以,标准C语言能做的东西,C51也可以。平方运算,自不必说,就是两个数相乘:例如:float a,b,c; c = a*b;开方,则需要用到库函数:标准c语言里用的是 sqrt()函数,这个函数包含在math.h文件中。所以:include <math.h> c = sqrt(a);就可以了 ...

南涧彝族自治县17659047188: 用C语言编写AT89C51单片机程序,设计一个智能数字钟. -
进独金刚: 基本要求:1.C语言程序要求是模块化设计.2.该闹钟基于AT89C51单片机及相关外围电路进行设计.3.该闹钟有6个数码管(共阳极),可分别显示时间(时、分、秒)、及定时时间(分、秒).4.该闹钟有4个按钮,S1是切换显示按键,该键按下时可分别实现切换正常走时显示、设定走时显示、设置定时时间,启动定时,回到正常状态等功能.S2是设定键,即该键按下,将分别选中需要设定的选项.S3键是加键,即按下去表示相应选项加1.S4键是减键,即按下去表示相应的选项减1.5.该闹钟可以定时时间到,LED将发出提示闪光,且持续30s.发挥要求:1.定时时间可被打断,即打断后恢复时继续计时.2.设置闹钟报警功能;3.能切换显示年月日等信息.

南涧彝族自治县17659047188: 单片机电子钟程序 -
进独金刚: 51单片机在数码管上显示的数字钟程序:#include "at89x51.h" unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0...

南涧彝族自治县17659047188: 求一个基于AT89C51单片机的数字时钟程序,显示时、分、秒不要求闹钟!就在开发板上的数码管显示 -
进独金刚: 时钟的话 你把数码管的显示的变量值放在定时器里 通过你的定时器 来实现时分秒的定时

南涧彝族自治县17659047188: 跪求一个用at89c51实现的数字电子钟c语言程序. -
进独金刚: 这样滴问题应该自己慢慢尝试,才有提高,我看下,一会发你 程序没错,只是把端口值改下就可以啦 case 1: P0=0xfe; //第一个LED亮 break; case 2: P0=0xfc; //二个LED亮 break; case 3:P0=0xf8

南涧彝族自治县17659047188: 求单片机89C51数字钟的设计,要用C语言程序,四位数码管的.谢谢~~ -
进独金刚: P1口片选 P3口位选 P3.0对应最右边那个 P3.3对应最左边那个 数码管共阳四位 不显示小数点#include <reg52.h> typedef unsigned char uint8; typedef unsigned int uint16; uint8 number[]={0xFC,0x60,0xDA,0xF2,0x66, 0xB6,0xBE,0xE0,0xFE,0xF6};...

南涧彝族自治县17659047188: 求使用AT89C51单片机和74LS245来实现数字钟的C语言代码,只要能显示时分秒就行.K3开关,K1是选择键,K2是 -
进独金刚: 如只编程序,可以.如做实物:AT89C51单片机功能强大,不用74245,可用巡回显示法,但应加一个DS1302之类的时钟电路,否则时间不会太准,甚至用不了,还有就是一断电就要重调时间,你受得了吗.

南涧彝族自治县17659047188: 求用单片机89C51制作电子时钟 -
进独金刚: //S2键调整小时,S3键调整分钟#include <reg51.h>#include <intrins.h> unsigned char data dis_digit; unsigned char key_s, key_v; unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; ...

南涧彝族自治县17659047188: 89c51单片机+lcd1602制作电子钟实现24小时程序 -
进独金刚: 很简单啊 if( hour >23) //24小时制 { hour = 0; }

南涧彝族自治县17659047188: 求89c51可定时数字钟C语言程序
进独金刚: <p>你好:</p> <p>这里边有两个程序,"液晶时钟"是51单片机,只用了定时器做的,可以通过键盘调整时间,"PCF8563"是PIC16F877A单片机做的,使用时钟芯片PCF8563,IIC总线控制.</p> <p>希望我的回答能帮助到你.</p>

南涧彝族自治县17659047188: 急求单片机编程高手帮我编一个AT89C51的时钟+万年历的程序! -
进独金刚: 基于单片机的数字钟(电子万年历) http://hi.baidu.com/dsu5566/blog/item/7cfe0fa480cd14fe9152eec8.html

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网