本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char m;
uchar temp1,temp2;
sbit rst=P1^0;
sbit scl=P1^1;
sbit sda=P1^2;
sbit rs=P3^0;
sbit rw=P3^1;
sbit en=P3^2;
sbit ACC7=ACC^7;
void delay(uchar ms)
{
uchar i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
void write_byte(uchar date)
{
uchar i;
uchar temp=date;
for(i=0;i<8;i++)
{
scl=0;
sda=temp&0x01;
temp>>=1;
scl=1;
_nop_();_nop_();
}
}
void write_word(uchar add,uchar date)
{
rst=1;
_nop_();
_nop_();
write_byte(add);
write_byte(date);
rst=0;
}
uchar read(uchar add)
{
uchar i;
rst=1;
_nop_();
_nop_();
sda=1;
_nop_();
_nop_();
write_word(0x8e,0x00);
write_byte(add);
write_word(0x8e,0x80);
for(i=0;i<8;i++)
{
temp1>>=1;
_nop_();
_nop_();
if(sda)
temp1=temp1|0x80;
scl=1;
_nop_();_nop_();
scl=0;
_nop_();_nop_();_nop_();_nop_();
}
rst=0;
return temp1;
}
void initial()
{
write_word(0x8e,0x00);
write_word(0x80,((59/10)<<4|(59%10)));
write_word(0x82,((59/10)<<4|(59%10)));
write_word(0x84,((12/10)<<4|(12%10)));
write_word(0x8e,0x80);
}
void wr_com(unsigned char com)
{
rs=0;
rw=0;
en=0;
P2=com;
delay(1);
en=1;
delay(1);
en=0;
}
void wr_dat(unsigned char dat)
{
rs=1;
rw=0;
en=0;
P2=dat;
delay(1);
en=1;
delay(1);
en=0;
}
void init()
{
delay(15);
wr_com(0x38);
delay(5);
wr_com(0x0c);
delay(5);
wr_com(0x06);
delay(5);
wr_com(0x01);
delay(5);
}
void main()
{
uchar miao;
int shi,ge,second;
initial();
init();
while(1)
{
miao=read(0x81);
shi=0;
ge=0;
second=((((miao&0x70)>>4)*10)+(miao&=0x0f));
ge=second%10;
shi=second/10;
wr_com(0x80+0x08);
wr_dat(0x30+shi);
wr_dat(0x30+ge);
}
}
在proteus中仿真时能写进去数据但是显示时只显示85没变化
附有仿真图 请各位高手帮帮忙!!
|