51单片机电子钟程序设计Word文档格式.docx
- 文档编号:15811320
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:21
- 大小:18.49KB
51单片机电子钟程序设计Word文档格式.docx
《51单片机电子钟程序设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《51单片机电子钟程序设计Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
#defineucharunsignedchar
#defineuintunsignedint
sbitspk=P1;
sbitled=P1;
sbitDQ=P1;
sbitRS=P2;
sbitRW=P2;
sbitEN=P2;
sbitkey1=P2;
sbitkey2=P2;
sbitkey3=P2;
sbitkey4=P2;
sbitIO=P3;
sbitRST=P3;
sbitSCLK=P3;
ucharcodetable[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
intnian,xing,yue,ri,shi,fen,miao;
ucharnum,temp,c,d,time[7],a,b,aa,bb,ns,ng,ys,yg,rs,rg,ss,sg,fs,fg,ms,mg,flag;
/*******************1602************************/
voiddelay(intz)
{
intx,y;
for(x=z;
xx--)
for(y=100;
yy--);
}
voidwrite_com(ucharcom)//写命令
RS=0;
P0=com;
delay(5);
EN=1;
EN=0;
voidwrite_data(uchardate)//写数据
RS=1;
P0=date;
voidinit()//初始化
RW=0;
write_com(0x38);
//显示模式设置
write_com(0x0c);
//开显示不显示光标不闪
write_com(0x06);
//写一个字符地址指针光标加一整屏不移动
write_com(0x01);
//显示清零
write_com(0x80+0x04);
write_data(‘2’);
write_com(0x80+0x05);
write_data(‘0’);
write_com(0x80+0x00);
write_data(‘c’);
write_com(0x80+0x01);
write_data(‘a’);
write_com(0x80+0x02);
write_data(‘i’);
write_com(0x80+0x4e);
write_data(0xdf);
write_com(0x80+0x4f);
write_data(‘C’);
write_com(0x80+0x4b);
write_data(0x2e);
//显示”。
”
/**************DS18B20****************/
voiddelay1(unsignedintt)//延时函数
while(t--);
voidinit1()//初始化
ucharn=0;
DQ=1;
//DQ复位
delay1(8);
DQ=0;
//主机将DQ拉低
delay1(80);
//大于480us的延时
delay1(5);
//延时15~60us
n=DQ;
//若n=0初始成功n=1初始失败(可设置返回值查看n是否为
1)
voidwrite_byte(uchardat)//写入一个字节
uinti;
for(i=0;
ii++)
DQ=0;
DQ=dat0x01;
delay1(12);
DQ=1;
dat=1;
delay1(4);
ucharread_byte()//读入一个字节
uintk=0;
ucharvalue=0;
for(k=0;
kk++)
value=1;
if(DQ)
value|=0x80;
delay1(4);
returnvalue;
ucharread_temp()//读取温度函数
uchara=0,b=0;
init1();
write_byte(0xcc);
write_byte(0x44);
delay1(200);
write_byte(0xbe);
a=read_byte();
b=read_byte();
c=b;
d=a;
b=4;
b+=(a0xf0)4;
returnb;
/***********************1302**********************/
voidwirte_byte1(uchardate)//写入一个字节
uchari;
for(i=8;
ii--)
IO=date0x01;
SCLK=0;
SCLK=1;
date=date1;
}
ucharread_byte1()//读一个字节
uchardat,i;
dat=dat1;
if(IO)
dat=dat|0x80;
return(dat);
voidwrite_ds1302(ucharadd,uchardate)//将数据写入1302中
RST=0;
SCLK=0;
RST=1;
wirte_byte1(add);
wirte_byte1(date);
SCLK=1;
ucharread_ds1302(ucharadd)//读出1302中数据
uchartemp;
temp=read_byte1();
return(temp);
ucharhuan_BCD(uintz)//将数据转换成BCD
uinta,b;
a=z/10;
b=z%10;
a=a0xff;
b=b0xff;
a=4;
a=a|b;
return(a);
voidxian_shi()//液晶显示函数
if(b==0a==0)
ms=time[0]/16;
mg=time[0]%16;
fs=time[1]/16;
fg=time[1]%16;
fen=fs*10+fg;
ss=time[2]/16;
sg=time[2]%16;
shi=ss*10+sg;
rs=time[3]/16;
rg=time[3]%16;
ri=rs*10+rg;
ys=time[4]/16;
yg=time[4]%16;
yue=ys*10+yg;
ns=time[6]/16;
ng=time[6]%16;
nian=ns*10+ng;
xing=time[5];
if(a==1|b==1)
ss=shi/10;
sg=shi%10;
write_com(0x80+0x41);
write_data(0xff);
write_com(0x80+0x40);
write_data(table[ss]);
write_data(table[sg]);
if(a==2|b==2)
{
fs=fen/10;
fg=fen%10;
write_com(0x80+0x44);
write_com(0x80+0x43);
write_data(table[fs]);
write_data(table[fg]);
if(a==3)
rs=ri/10;
rg=ri%10;
write_com(0x80+0x0d);
write_com(0x80+0x0c);
write_data(table[rs]);
write_data(table[rg]);
if(a==4)
ys=yue/10;
yg=yue%10;
write_com(0x80+0x0a);
write_com(0x80+0x09);
write_data(table[ys]);
write_data(table[yg]);
if(a==5)
ns=nian/10;
ng=nian%10;
write_com(0x80+0x07);
write_com(0x80+0x06);
write_data(table[ns]);
write_data(table[ng]);
if(a==6)
write_com(0x80+0x0f);
writ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 电子钟 程序设计