永发信息网

基于8051单片机的数字钟

答案:2  悬赏:0  手机版
解决时间 2021-04-06 09:19
  • 提问者网友:雪舞兮
  • 2021-04-05 13:43
要求
(1)具有时间设置(小时和分钟)、闹钟时间设置、闹钟开、闹钟关功能。
(2)数字显示小时、分钟,有AM、PM指示器,闹钟就绪灯,蜂鸣器。
(3)利用键盘或其它方式切换,数字显示年、月、日、周次。
最佳答案
  • 五星知识达人网友:佘樂
  • 2021-04-05 13:54
哥们,其实我帮别人做过一个,你说我给你还是不给你呢?
还是不给你吧,希望下面有好心人给你做。。。

说说原因,
其实没分不要紧,真的不要紧,我帮很多人回答问题都不带分的。
可是你居然花10分 匿名。。。。却不肯。。。。要求还这么多。。。。
全部回答
  • 1楼网友:旧脸谱
  • 2021-04-05 15:23
1602液晶显示 你的单片机原理图没发 程序很依赖硬件的哦 这个程序你查考下,有三个键按可以修改时间的。 #include #define uchar unsigned char #define uint unsigned int sbit dula=p2^6; sbit wela=p2^7; sbit rs=p3^5; sbit lcden=p3^4; sbit s1=p3^0; sbit s2=p3^1; sbit s3=p3^2; sbit rd=p3^7; uchar count,s1num; char miao,shi,fen; uchar code table[]=" 2009-5-17 mon"; \\ uchar code table1[]=" 00:00:00"; \\自己设下 void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com) { rs=0; lcden=0; p0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_date(uchar date) { rs=1; lcden=0; p0=date; delay(5); lcden=1; delay(5); lcden=0; } void init() { uchar num; dula=0; wela=0; lcden=0; // fen=59; // miao=53; // shi=23; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(num=0;num<15;num++) { write_date(table[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<12;num++) { write_date(table1[num]); delay(5); } tmod=0x01; th0=(65536-50000)/256; tl0=(65536-50000)%256; ea=1; et0=1; tr0=1; } void write_sfm(uchar add,uchar date) { uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge); } void keyscan() { rd=0; if(s1==0) { delay(5); if(s1==0) { s1num++; while(!s1); if(s1num==1) { tr0=0; write_com(0x80+0x40+10); write_com(0x0f); } } if(s1num==2) { write_com(0x80+0x40+7); } if(s1num==3) { write_com(0x80+0x40+4); } if(s1num==4) { s1num=0; write_com(0x0c); tr0=1; } } if(s1num!=0) { if(s2==0) { delay(5); if(s2==0) { while(!s2); if(s1num==1) { miao++; if(miao==60) miao=0; write_sfm(10,miao); write_com(0x80+0x40+10); } if(s1num==2) { fen++; if(fen==60) fen=0; write_sfm(7,fen); write_com(0x80+0x40+7); } if(s1num==3) { shi++; if(shi==24) shi=0; write_sfm(4,shi); write_com(0x80+0x40+4); } } } if(s3==0) { delay(5); if(s3==0) { while(!s3); if(s1num==1) { miao--; if(miao==-1) miao=59; write_sfm(10,miao); write_com(0x80+0x40+10); } if(s1num==2) { fen--; if(fen==-1) fen=59; write_sfm(7,fen); write_com(0x80+0x40+7); } if(s1num==3) { shi--; if(shi==-1) shi=23; write_sfm(4,shi); write_com(0x80+0x40+4); } } } } } void main() { init(); while(1) { keyscan(); } // while(1); } void timer0() interrupt 1 { th0=(65536-50000)/256; tl0=(65536-50000)%256; count++; if(count==18) { count=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; } write_sfm(4,shi); } write_sfm(7,fen); } write_sfm(10,miao); } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯