<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > AT89C2051+LCD1602+DS1302實(shí)時(shí)時(shí)鐘設計(c51)

AT89C2051+LCD1602+DS1302實(shí)時(shí)時(shí)鐘設計(c51)

作者: 時(shí)間:2016-11-10 來(lái)源:網(wǎng)絡(luò ) 收藏
#include

#include
#define uchar unsigned char
sbit rs=P3^0;//LCD1602控制腳
sbit rw=P3^1;
sbit e=P3^2;

本文引用地址:http://dyxdggzs.com/article/201611/317454.htm

sbit io=P3^4;//DS1302 PCI總線(xiàn)引腳
sbit rst=P3^5;
sbit sclk=P3^3;

uchar hour,minute,second,year,months,date,day;//顯示時(shí)間寄存器
uchar whour,wminute,wsecond,wyear,wmonths,wdate,wday;//設制初始時(shí)間寄存器
uchar code table1[]="0123456789-:w";
uchar code table2[]="Date:20";
uchar code table3[]="Time:";

void delayms(uchar k)//1ms延時(shí)
{
uchar j,i;
for(i=0;ifor(j=0;j<120;j++);
}

void delay2us() //2us延時(shí)
{
_nop_();
_nop_();
}

void write1602_data(uchar dat)//1602寫(xiě)數據子程序
{
rs=1;
rw=0;
P1=dat;
delayms(2);
e=0;
e=1;
e=0;
}

void write1602_com(uchar com)//1602寫(xiě)命令子程序
//
{
rs=0;
rw=0;
P1=com;
delayms(5);
e=0;
e=1;
e=0;
}

void init1602()//1602初始化子程序
{
write1602_com(0x38);//lcd1602 16*2顯示,5*7點(diǎn)陣,8bit數據接口
write1602_com(0x0f);//開(kāi)顯示,顯示光標,光標閃爍
write1602_com(0x06);//當寫(xiě)一字符后地址指針加一,光標加一
write1602_com(0x01);//清屏
}

void disptop() //1602第一行顯示子程序
{
uchar i;
write1602_com(0x80);
for(i=0;i<0x07;i++)
{
write1602_data(table2[i]);
delayms(1);
}
}

void dispbot() //1602第二行顯示子程序
{
uchar i;
write1602_com(0xc0);
for(i=0;i<0x05;i++)
{
write1602_data(table3[i]);
delayms(1);
}
}

/*******************************************************/

void write1302byte(uchar dat)//1302寫(xiě)入一個(gè)字節子程序
{
uchar i;
sclk=0;
for(i=0;i<8;i++)
{
io=(bit)(dat&0x01);
delay2us();
sclk=1;
delay2us();
sclk=0;
dat=dat>>1;
}
}

uchar read1302byte() //1302讀一個(gè)字節子程序
{
uchar i,dat;
for(i=0;i<8;i++)
{
dat>>=1;
if(io)
dat|=0x80;
delay2us();
sclk=1;
delay2us();
sclk=0;
delay2us();
}
return dat;
}

void writeset1302(uchar add,uchar dat)//1302讀子女程序
{
rst=0;
delay2us();
rst=1;
write1302byte(add);
write1302byte(dat);
rst=0;
}

uchar readset1302(uchar add)//1302寫(xiě)子程序
{
uchar dat;
rst=0;
delay2us();
rst=1;
write1302byte(add);
dat=read1302byte();
rst=0;
return dat;
}

void init1302()//1302初始化子程序
{
uchar flag;
flag=readset1302(0x81);//判斷1302是否有備用電池,若有則FLAG為0
if(flag&0x80)
{
writeset1302(0x8e,0x00);
writeset1302(0x80,((wsecond/10)<<4|(wsecond%10)));
writeset1302(0x82,((wminute/10)<<4|(wminute%10)));
writeset1302(0x84,((whour/10)<<4|(whour%10)));
writeset1302(0x86,((wday/10)<<4|(wday%10)));
writeset1302(0x88,((wmonths/10)<<4|(wmonths%10)));
writeset1302(0x8a,((wdate/10)<<4|(wdate%10)));
writeset1302(0x8c,((wyear/10)<<4|(wyear%10)));
writeset1302(0x90,0xa5);
writeset1302(0x8e,0x80);
}
}

uchar readvalue(uchar value) //數據轉換
{
uchar a;
a=((value&0x70)>>4)*10+(value&0x0f);
return a;
}

void read1302() //讀取時(shí)間
{
uchar value;
value=readset1302(0x81);
second=readvalue(value);

value=readset1302(0x83);
minute=readvalue(value);

value=readset1302(0x85);
hour=readvalue(value);

value=readset1302(0x87);
day=readvalue(value);

value=readset1302(0x89);
months=readvalue(value);

value=readset1302(0x8b);
date=readvalue(value);

value=readset1302(0x8d);
year=((value&0xf0)>>4)*10+(value&0x0f);

}

void disptime() //時(shí)間顯示
{
write1602_com(0x87);
write1602_data(table1[year/10]);
write1602_data(table1[year%10]);
write1602_data(table1[10]);
write1602_data(table1[months/10]);
write1602_data(table1[months%10]);
write1602_data(table1[10]);
write1602_data(table1[day/10]);
write1602_data(table1[day%10]);
write1602_com(0xc5);
write1602_data(table1[hour/10]);
write1602_data(table1[hour%10]);
write1602_data(table1[11]);
write1602_data(table1[minute/10]);
write1602_data(table1[minute%10]);
write1602_data(table1[11]);
write1602_data(table1[second/10]);
write1602_data(table1[second%10]);
write1602_com(0xce);
write1602_data(table1[12]);
write1602_data(table1[date]);
}

void inittime() //初始時(shí)間設置
{
whour=23;
wminute=59;
wsecond=20;
wyear=10;
wmonths=12;
wdate=3;
wday=1;
}

void main()
{
inittime();
init1602();
disptop();
dispbot();
init1302();
while(1)
{
read1302();
disptime();
}
}



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>