51单片机c语言
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机c语言相关的知识,希望对你有一定的参考价值。
求一个电子钟源代码,用c语言编写,显示为xx-xx-xx,如果能用sms0801b显示器编写就完美了,不过这个型号的lcd市场上很少见。没的话用8个数码管也可以。时间用三个开关控制,可以调节时间。用p2.0,2.1,2.2控制。偶单片机学得不好,现在正在努力中呀,谢谢各位啦。
参考技术A #include<reg52.h>#include<define.h>
void delay(uint z)
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
void didi()
beep=0;
delay(50);
beep=1;
delay(100);
beep=0;
delay(50);
beep=1;
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;
EA=1;
EX0=1;
IT0=1;
dula=0;
wela=0;
lcden=0;
// set_time();
set_alarm(14,13,10);
write_ds(0x0B,0x26);
read_ds(0x0c);
// 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);
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(flag1==1)
if(s2==0)
delay(5);
if(s2==0)
while(!s2);
flag1=0;
if(s3==0)
delay(5);
if(s3==0)
while(!s3);
flag1=0;
if(s1==0)
delay(5);
if(s1==0)
s1num++;
flag=1;
flag1=0;
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);
flag=0;
write_ds(0,miao);
write_ds(2,fen);
write_ds(4,shi);
if(s1num!=0)
if(s2==0)
delay(1);
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(1);
if(s3==0)
while(!s3);
if(s1num==1)
/* if(miao==0)
miao=59;
write_sfm(10,miao);
write_com(0x80+0x40+10);
*/
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 write_ds(uchar add,uchar date)
dscs=0;
dsas=1;
dsds=1;
dsrw=1;
P0=add;
dsas=0;
dsrw=0;
P0=date;
dsrw=1;
dsas=1;
dscs=1;
uchar read_ds(uchar add)
uchar ds_date;
dsas=1;
dsds=1;
dsrw=1;
dscs=0;
P0=add;
dsas=0;
dsds=0;
P0=0xff;
ds_date=P0;
dsds=1;
dsas=1;
dscs=1;
return ds_date;
void set_time()
write_ds(4,10);
write_ds(2,32);
void set_alarm(uchar ashi,uchar afen,uchar amiao)
write_ds(1,amiao);
write_ds(3,afen);
write_ds(5,ashi);
void main()
init();
while(1)
keyscan();
if(flag1==1)
didi();
if(flag==0)
miao=read_ds(0);
fen=read_ds(2);
shi=read_ds(4);
write_sfm(10,miao);
write_sfm(7,fen);
write_sfm(4,shi);
void exter() interrupt 0
uchar c;
flag1=1;
c=read_ds(0x0c);
用的是DS12C887液晶 参考技术B 你用1302了吗,我有一个用延时做的,还有一个用1302做的,你要那种啊,显示是数码管显示,可以设定两个定时时间,四个按键,如果需要的话给我留言 参考技术C 我有数码管。。。你那个没用过 爱莫能助本回答被提问者采纳 参考技术D 这个要配合硬件的、、、、
以上是关于51单片机c语言的主要内容,如果未能解决你的问题,请参考以下文章