问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

51单片机电子钟编程,三个按钮分别控制小时分钟和秒,有图有分析

发布网友 发布时间:2022-05-15 03:41

我来回答

1个回答

热心网友 时间:2023-10-08 19:49

一点鼓励都没有,给一个程序供参考吧。
#include<reg51.h>

#define uchar unsigned char
uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9
unsigned char sec=0,min=0,hour=12,scanled;
unsigned char key,flashbit,mode,time; 
unsigned char disdat[8];
sbit led=P1^0;
void delay(unsigned int x)
{
unsigned int i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void dischg()
{
disdat[0]=sec%10;
disdat[1]=sec/10;
disdat[2]=10;

disdat[3]=min%10;
disdat[4]=min/10;
disdat[5]=10;

disdat[6]=hour%10;
disdat[7]=hour/10;
}
void flash()
{
switch(flashbit)
{
case 0:break;
case 1:
disdat[6]=0x10;
disdat[7]=0x10;
delay(50);
dischg();
delay(80);
break;
case 2:
disdat[3]=0x10;
disdat[4]=0x10;
delay(50);
dischg();
delay(80);
break;
case 3:
disdat[0]=0x10;
disdat[1]=0x10;
delay(50);
dischg();
delay(80);
break;
default:break;
}
}
void t0isr() interrupt 1//秒计时
{
TH0=0x3c;
TL0=0xb0;
time++;
switch(mode)
{
case 0:
if(time==20)
{
time=0;
sec++;
if(sec>59)
{
sec=0;
min++;
if(min>59)
{
min=0;
hour++;
if(hour>23)hour=0;
}
}
}
break;
case 1:
if(time==20)
{
time=0;
if(sec>0)sec--;
else if(min>0){sec=59;min--;}
else if(hour>0){sec=59;min=59;hour--;}
else {hour=0;min=0;sec=0;}
}
break;
}
dischg();
}
void t1isr() interrupt 3//显示
{
TH1=0xec;
TL1=0x78;
switch(scanled)
{
case 0:
P2=0x01;
P0=~ledtab[disdat[7]];
break;
case 1:
P2=0x02;
P0=~ledtab[disdat[6]];
break;
case 2:
P2=0x04;
P0=~ledtab[disdat[5]];
break;
case 3:
P2=0x08;
P0=~ledtab[disdat[4]];
break;
case 4:
P2=0x10;
P0=~ledtab[disdat[3]];
break;
case 5:
P2=0x20;
P0=~ledtab[disdat[2]];
break;
case 6:
P2=0x40;
P0=~ledtab[disdat[1]];
break;
case 7:
P2=0x80;
P0=~ledtab[disdat[0]];
break;
default:break;
}
scanled++;
scanled%=8;
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xec;
TL1=0x78;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
sec=55;
min=59;
hour=23;
flashbit=0;
scanled=0;
time=0;
mode=0;
dischg();
while(1)
{
flash();//闪烁
if((P3&0x0f)!=0x0f){
key=P3&0x0f;
while((P3&0x0f)!=0x0f);
led=0;
delay(10);
key|=0xf0;
switch(~key)
{
case 0x01://p3.1选择调时、分、秒
TR0=0;
flashbit+=1;
if(flashbit>3){flashbit=0;TR0=1;}
break;
case 0x02://p3.2调数
if(flashbit==0)break;
if(flashbit==1)
{
hour++;
if(hour>99)hour=0;
}
if(flashbit==2)
{
min++;
if(min>59)min=0;
}
if(flashbit==3)
{
sec++;
if(sec>59)sec=0;
}
break;
case 0x04: //选择正/倒
TR0=0;
mode++;
mode&=0x01;
if(mode==0){sec=0;min=0;hour=0;}
dischg();
break;
case 0x08://启动/暂停
TR0=~TR0;
break;
default:break;
}
}
}
}

追问有图么,仿真的。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? 揭秘:码牌支付风控升级,背后真相揭秘 电脑电视直播软件哪个好用什么软件好电脑看电视直播 潼南子同街学区是哪些 三极管BU406价格和参数? 火锅料放在冰柜忘了插电一个星期给会坏了吗 火锅的设备有哪些 qq同步助手是一坨屎吗 在multisim中开关里的keyforswitch可以改吗? 苹果6系统更新刷机能更新吗? qq同步助手总是想管理短信,好烦人! 商标右上方的那个小圈圈抱着一个R是什么意思?这个标志有什么特殊意义 cubasekeyswitch键位音源怎么用 安卓能不能刷苹果系统 一个圈里包着一个R是什么意思?在商标的上面,有一个TM是什么意思? 同样wifi手机可以上去网电脑上不去 qq同步助手是*什么玩意,天天自己下载,删了又下,删了又下的,烦死啦 我的REALGUITAR中怎么没有KEYSWITCH键位开关设置区域? 为什么有的商标旁边有R TM 分别代表什么? 电气原理图中钥匙开关的英文符号是什么?不会是Key Switch吧!英文符号一般都是2~3个大写英文字母表示。 key switch是什么意思,按键开关翻译 iphonewifi机可以修复吗 QQ 同步助手简直是坑人;同步什么呢我SIM卡几百个电话都没了,建议大家千万;后悔的时候什么都晚了。 黎巴嫩环境部长辞职,是什么原因导致的? 怎么看待官员辞职背后&quot;新50岁现象 古代官员动不动就辞官回乡,靠什么生活? 深圳华侨城创意园有哪些好玩的? 求五句诗名字!!! 台式机可以连接wifi吗? 突然觉得QQ同步助手主界面的那个大按钮好恐怖 C语言作业:一、用switch和key函数写根据分数分级的程序 二、写1000以内所有的水仙花数的程序,求救! 快穿之命运交易系统_by小吾君_txt全文阅读,百度网盘免费下载 请问高手现在还能不能刷苹果的9.35系统更新 密码锁,keyscan2为扫描键盘功能键,为什么扫描完之后若按下功能键不进行switch里面的分支函数调用 梦幻取名:五言诗句名 快穿之命运交易系统gl百度云 求《快穿之命运交易系统》by小吾君 百度云 求“快穿之命运交易系统”gl小说百度云,谢谢!谢谢 求快穿之命运交易系统 求gl小说《快穿之命运交易系统》TXT百度云 求GL小说 玄幻 修真 魔法类、快穿类的 高悬赏!!! 有哪些 快穿gl长篇小说1V1推荐 快穿gl百合长篇完结1V1小说推荐 玉环汽车抵押不押车贷款办理 玉环不押车的汽车抵押贷款在哪里可以办理 玉环不过户的汽车抵押贷款有吗 玉环渝汇蓝湾国际地下车库可以抵押贷款吗?