EEPROM数码读出 求解啊
时间:10-02
整理:3721RD
点击:
我用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();
}
}
#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();
}
}
你是按照十进制显示的数据吧?两位显示的数据要是超过99是不是就显示不出来了
在0-9能显示正常超过就了就不正常了