要求
(1)具有时间设置(小时和分钟)、闹钟时间设置、闹钟开、闹钟关功能。
(2)数字显示小时、分钟,有AM、PM指示器,闹钟就绪灯,蜂鸣器。
(3)利用键盘或其它方式切换,数字显示年、月、日、周次。
基于8051单片机的数字钟
答案:2 悬赏:0 手机版
解决时间 2021-04-06 09:19
- 提问者网友:雪舞兮
- 2021-04-05 13:43
最佳答案
- 五星知识达人网友:佘樂
- 2021-04-05 13:54
哥们,其实我帮别人做过一个,你说我给你还是不给你呢?
还是不给你吧,希望下面有好心人给你做。。。
说说原因,
其实没分不要紧,真的不要紧,我帮很多人回答问题都不带分的。
可是你居然花10分 匿名。。。。却不肯。。。。要求还这么多。。。。
还是不给你吧,希望下面有好心人给你做。。。
说说原因,
其实没分不要紧,真的不要紧,我帮很多人回答问题都不带分的。
可是你居然花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);
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯