标题:
ds1302时钟显示程序1602液晶
[打印本页]
作者:
huyun
时间:
2015-6-5 00:23
标题:
ds1302时钟显示程序1602液晶
psb1.png
(56.85 KB, 下载次数: 91)
下载附件
2015-6-5 00:23 上传
#include <reg51.h>
#include<absacc.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit T_CLK=P1^3;
sbit T_RST=P1^2;
sbit T_IO=P1^4;
sbit RS=P1^7;
sbit RW=P1^6;
sbit EN=P1^5;
sbit ACC7=ACC^7;
sbit ACC0=ACC^0;
uchar datechar[]={"DATE:"};
uchar timechar[]={"TIME:"};
uchar datebuffer[10]={0x32,0x30,0,0,0x2d,0,0,0x2d,0,0};
uchar timebuffer[8]= {0,0,0x3a,0,0,0x3a,0,0};
uchar weekbuffer={0x30};
void WriteB(uchar ucDa)
{
uchar i;
ACC=ucDa;
for(i=8;i>0;i--)
{
T_IO=ACC0;
T_CLK=1;
T_CLK=0;
ACC=ACC>>1;
}
}
uchar ReadB(void)
{
uchar i;
for(i=8;i>0;i--)
{
ACC=ACC>>1;
ACC7=T_IO;
T_CLK=1;
T_CLK=0;
}
return(ACC);
}
void v_W1302(uchar ucAddr,uchar ucDa)
{
T_RST=0;
T_CLK=0;
_nop_();_nop_();_nop_();
T_RST=1;
_nop_();_nop_();_nop_();
WriteB(ucAddr);
WriteB(ucDa);
T_CLK=1;
T_RST=0;
}
uchar uc_R1302(uchar ucAddr)
{
uchar ucDa=0;
T_RST=0;T_CLK=0;
T_RST=1;
WriteB(ucAddr);
ucDa=ReadB();
T_RST=1;T_CLK=0;
return(ucDa);
}
//查忙函数
void wait()
{
P2=0xff;
RS=0;
RW=1;
EN=1;
EN=0;
while(P2&0x80)
{
EN=0;
EN=1;
}
}
void wc51com(uchar j)
{
wait();
EN=0;
RS=0;
RW=0;
EN=1;
P2=j;
EN=0;
}
void wc51ddr(uchar j)
{
wait();
EN=0;
RS=1;
RW=0;
EN=1;
P2=j;
EN=0;
}
void init()
{
wc51com(0x01);
wc51com(0x38);
wc51com(0x0c);
wc51com(0x06);
}
void delay(uint i)
{
uint y,j;
for(j=0;j<i;j++){
for(y=0;y<0xff;y--) {;}
}
}
void main(void)
{
uchar i;
uchar data temp;
// SP=0x50;
delay(10);
init();
wc51com(0x80);
for(i=0;i<5;i++) wc51ddr(datechar [i]);
wc51com(0xc0);
for(i=0;i<5;i++) wc51ddr(timechar [i]);
v_W1302(0x8e,0);
v_W1302(0x8c,0x13);
v_W1302(0x8a,0x06);
v_W1302(0x88,0x12);
v_W1302(0x86,0x21);
v_W1302(0x84,0x16);
v_W1302(0x82,0x25);
v_W1302(0x80,0x30);
v_W1302(0x8e,0x80);
while(1)
{temp=
uc_R1302(0x8d);
datebuffer[2]=0x30+temp/16;datebuffer[3]=0x30+temp%16;
temp=uc_R1302(0x8B);
weekbuffer=0x30+temp;
temp=
uc_R1302(0x89);
datebuffer[5]=0x30+temp/16;datebuffer[6]=0x30+temp%16;
temp=
uc_R1302(0x87);
datebuffer[8]=0x30+temp/16;datebuffer[9]=0x30+temp%16;
temp=
uc_R1302(0x85);
temp=temp&0x7f;
timebuffer[0]=0x30+temp/16;timebuffer[1]=0x30+temp%16;
temp=
uc_R1302(0x83);
timebuffer[3]=0x30+temp/16;timebuffer[4]=0x30+temp%16;
temp=
uc_R1302(0x81);
temp=temp&0x7f;
timebuffer[6]=0x30+temp/16;timebuffer[7]=0x30+temp%16;
wc51com(0x85);
for(i=0;i<8;i++)wc51ddr(datebuffer[i]);
wc51com(0xc5);
for(i=0;i<8;i++)wc51ddr(timebuffer[i]);
wc51ddr(0x20);
wc51ddr(weekbuffer);
}
}
复制代码
作者:
越快乐越堕落
时间:
2017-2-27 21:49
你这程序好简洁
都没有一句注释。。。哈哈哈
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1