先将数据存进去,然后再读出来显现在数码管上。
除了代码里界说的连线外还要把p0连接到8位数码管的8针上。
1 /*--2 称号:IIC协议 EEPROM24c023 内容:此程序用于检测EEPROM功用,测验办法如下:写入24c02一些数据,然后在内存中铲除这些数据,4 掉电后主内存将失掉这些信息,然后从24c02中调入这些数据。看是否与写入的相同。5 函数是选用软件延时的办法发生SCL脉冲,固对高晶振频率要作 必定的修正....(本例是1us机器6 周期,即晶振频率要小于12MHZ)7 */ 8 #include//头文件的包括9 #include 10 11 #define _Nop() _nop_() //界说空指令12 13 // 常,变量界说区14 unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,15 0x77,0x7c,0x39,0x5e,0x79,0x71};// 显现段码值0~F16 unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//别离对应相应的数码管点亮,即位码17 18 sbit LATCH1=P2^2;19 sbit LATCH2=P2^3;20 21 sbit SDA=P2^1; //模仿I2C数据传送位22 sbit SCL=P2^0; //模仿I2C时钟操控位23 24 bit ack; //应对标志位25 26 void DelayUs2x(unsigned char t);//函数声明 27 void DelayMs(unsigned char t);28 /*29 uS延时函数,含有输入参数 unsigned char t,无回来值30 unsigned char 是界说无符号字符变量,其值的规模是31 0~255 这儿运用晶振12M,准确延时请运用汇编,大致延时32 长度如下 T=tx2+5 uS 33 */34 void DelayUs2x(unsigned char t)35 { 36 while(--t);37 }38 /*39 mS延时函数,含有输入参数 unsigned char t,无回来值40 unsigned char 是界说无符号字符变量,其值的规模是41 0~255 这儿运用晶振12M,准确延时请运用汇编42 */43 void DelayMs(unsigned char t)44 {45 46 while(t--)47 {48 //大致延时1mS49 DelayUs2x(245);50 DelayUs2x(245);51 }52 }53 /*54 发动总线55 */56 void Start_I2c()57 {58 SDA=1; //发送开端条件的数据信号59 _Nop();60 SCL=1;61 _Nop(); //开端条件树立时刻大于4.7us,延时62 _Nop();63 _Nop();64 _Nop();65 _Nop(); 66 SDA=0; //发送开端信号67 _Nop(); //开端条件确定时刻大于4μ68 _Nop();69 _Nop();70 _Nop();71 _Nop(); 72 SCL=0; //钳住I2C总线,预备发送或接纳数据73 _Nop();74 _Nop();75 }76 /*77 完毕总线78 */79 void Stop_I2c()80 {81 SDA=0; //发送完毕条件的数据信号82 _Nop(); //发送完毕条件的时钟信号83 SCL=1; //完毕条件树立时刻大于4μ84 _Nop();85 _Nop();86 _Nop();87 _Nop();88 _Nop();89 SDA=1; //发送I2C总线完毕信号90 _Nop();91 _Nop();92 _Nop();93 _Nop();94 }95 /*-96 字节数据传送函数 97 函数原型: void SendByte(unsigned char c);98 功用: 将数据c发送出去,可所以地址,也可所以数据,发完后等候应对,并对99 此状况位进行操作.(不应对或非应对都使ack=0 假) 100 发送数据正常,ack=1; ack=0一共被控器无应对或损坏。101 */102 void SendByte(unsigned char c)103 {104 unsigned char BitCnt;105 106 for(BitCnt=0;BitCnt<8;BitCnt++) //要传送的数据长度为8位107 {108 if((c<