完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #define uchar unsigned char #define set 0 #define run 1 #define keyset 4 //定义按键值 #define keyplu 5 #define keymin 6 #define keymain 7 ***it dula=P2^6; ***it wela=P2^7; ***it beep=P2^3; uchar keyval,ledbit=0,ledsetbit=0; uchar h,m,s,pp; uchar code BIT[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar mode=run; void setl(); void led(uchar number,uchar ledbit); void keyscan(); void display(uchar h,uchar m,uchar s); void delayms(uchar x) { uchar i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void keyscan() { uchar key,temp; P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delayms(20); //防抖 if(temp!=0xf0) { temp=P3; switch(temp) { case 0xee: key=0; break; case 0xde: key=1; break; case 0xbe: key=2; break; case 0x7e: key=3; break; } while(temp!=0xf0) { P3=temp; temp=temp&0xf0; } } } P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delayms(20); if(temp!=0xf0) { temp=P3; switch(temp) { case 0xed: key=4; break; case 0xdd: key=5; break; case 0xbd: key=6; break; case 0x7d: key=7; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } } } P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delayms(20); if(temp!=0xf0) { temp=P3; switch(temp) { case 0xeb: key=8; break; case 0xdb: key=9; break; case 0xbb: key=10; break; case 0x7b: key=11; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } } } P3=0xf7; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delayms(20); if(temp!=0xf0) { temp=P3; switch(temp) { case 0xe7: key=12; break; case 0xd7: key=13; break; case 0xb7: key=14; break; case 0x77: key=15; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } } } } void setl() { keyscan(); if(keyval=keyset) { if(mode==set&&ledsetbit<=5) { ledsetbit++; } if(mode==set&&ledsetbit>5) { mode=run; ledsetbit=0; } if(keyval==keyplu&&mode==set) { switch(ledsetbit) { case 0:if(s<59)s++;break; case 1:if(s<50)s+=10;break; case 2:if(m<59)m++;break; case 3:if(m<50)m+=10;break; case 4:if(h<23)h++;break; case 5:if(h<14)h+=10;break; } } if(keyval==keymin&&mode==set) { switch(ledsetbit) { case 0:if(s>0)s--;break; case 1:if(s>10)s-=10;break; case 2:if(m>0)m--;break; case 3:if(m>10)m-=10;break; case 4:if(h>0)h--;break; case 5:if(h>10)h-=10;break; } } } } void led(uchar number,uchar ledbit) { P0=table[number]; dula=1; dula=0; if(mode==run) P0=BIT[ledbit]; wela=1; wela=0; if(mode==set) { if(ledbit==ledsetbit) P0=0xff; else P0=table[number]; dula=1; dula=0; } } void display(uchar h,uchar m,uchar s) { unsigned int t=100; switch(ledbit) { case 0:led(s%10,ledbit); case 1:led(s/10,ledbit); case 2:led(m%10,ledbit); case 3:led(m/10,ledbit); case 4:led(h%10,ledbit); case 5:led(h/10,ledbit); } ledbit++; if(ledbit>5)ledbit=0; while(t--); } void time0() interrupt 1 { TH0=(65536-46080)/256; TL0=(65536-46080)%256; pp++; } void main() { TMOD=0x01; TH0=(65536-46080)/256; TL0=(65536-46080)%256; ET0=1; EA=0; TR0=1; while(1) { setl(); if(mode==run) { display(h,m,s); } else { led(); } if(pp==20) { pp=0; s++; if(s==60) { s=0; m++; if(m=60) { m=0; m++; if(m==60) { h++; if(h==24) { h=0; m=0; s=0; } } } } } } } |
|
相关推荐
2个回答
|
|
你先说哪里有问题啊!
|
|
|
|
就是数码管只显示6个0,还有按按键时,并没有调时间
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
644 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1819 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1262 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
1136 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1357 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12023 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 00:50 , Processed in 0.591627 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号