我用89c52跟at24c02用数码管读出24c02单个字节,当我用数码管读出来的时间发现用两位为选数码管显示的是乱的,但是用单个数码管却能读出来这是为什么啊
#include <reg52.h>
#include"i2c.h"
sbit ADDR0=P2^3;
sbit ADDR1=P2^2;
sbit ADDR2=P2^1;
sbit ADDR3=P2^0;
unsigned char code a[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
void delay1ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
void main()
{
unsigned char dat;
dat = E2ReadByte(0x02); //读取指定地址上的一个字节
//显示在液晶上
dat++; //将其数值+1
E2WriteByte(0x02, dat); //再写回到对应的地址上
while (1)
{
P0=a[dat%10];ADDR0=1;ADDR1=0;ADDR2=0;ADDR3=0;delay1ms();
P0=a[dat/10%10];ADDR0=0;ADDR1=1;ADDR2=0;ADDR3=0;delay1ms();
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>