We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi, I have come over the problem with LCD. Thankx to all.Any one req. LCD C code can contact me by posting his/her email on this thread. Now i have connected P2.0 to SDA and P2.1 to SCL of AT24C04 EEPROM. Can any one give me his codes for refrance regarding how to READ and WRITE to 24C04. *RU2
Hey People, Anyone have not exprimented on I2C EEPROM AT24C04.No replies !!! Let me know if there is other popular EEPROM. rutu.
Anyone have not exprimented on I2C EEPROM AT24C04.No replies !!! Many have, no replies because Can any one give me his codes for refrance Because we all know what "for reference" means. Erik
Have you tried the Atmel website? The application notes there will be most informative.
hi, dear erik there can be person who in reality need only to study and not to copy and put there own tag.If all think the same way then we want have learned advance things.Anyway thanks for time u spend in replying. hi Barry thanks for u r suggestion, i have already tried all the possible manual on I2C.Now i am through with the pins on 24C04 but don't know how to implement it in C on microcontroller.That is my main problem. Thanks all rutu
The best (and most) IIC appnotes including the bus specification: http://www.semiconductors.philips.com/buses/i2c/support/index.html Erik
by the way:chinese language 文件: PCF8563T.C 2001-11-27, 18:39:20 1 /**———————————————————— 2 〖说明〗I2C总线驱动程序(用两个普通IO模拟I2C总线) 3 包括100Khz(T=10us)的标准模式(慢速模式)选择, 4 和400Khz(T=2.5us)的快速模式选择, 5 默认11.0592Mhz的晶振。 6 〖文件〗PCF8563T.C ﹫2001/11/2 7 7 〖作者〗 8 〖修改〗 9 〖版本〗V1.00A Build 0803 10 —————————————————————*/ 11 12 #ifndef SDA 13 #define SDA P0_0 14 #define SCL P0_1 15 #endif 16 17 extern uchar SystemError; 18 19 #define uchar unsigned char 20 #define uint unsigned int 21 #define Byte unsigned char 22 #define Word unsigned int 23 #define bool bit 24 #define true 1 25 #define false 0 26 27 #define SomeNOP(); _nop_();_nop_();_nop_();_nop_(); 28 29 /**-------------------------------------------------------------------------------- 30 调用方式:void I2CStart(void) ﹫2001/07/0 4 31 函数说明:私有函数,I2C专用 32 ---------------------------------------------------------------------------------*/ 33 void I2CStart(void) 34 { 35 EA=0; 36 SDA=1; SCL=1; SomeNOP();//INI 37 SDA=0; SomeNOP(); //START 38 SCL=0; 39 } 40 41 /**-------------------------------------------------------------------------------- 42 调用方式:void I2CStop(void) ﹫2001/07/0 4 43 函数说明:私有函数,I2C专用 44 ---------------------------------------------------------------------------------*/ 45 void I2CStop(void) 46 { 47 SCL=0; SDA=0; SomeNOP(); //INI 48 SCL=1; SomeNOP(); SDA=1; //STOP 49 EA=1; 50 } 51 52 /**-------------------------------------------------------------------------------- 53 调用方式:bit I2CAck(void) ﹫2001/07/0 4 54 函数说明:私有函数,I2C专用,等待从器件接收方的应答 55 ---------------------------------------------------------------------------------*/ 56 bool WaitAck(void) 57 { 58 uchar errtime=255;//因故障接收方无ACK,超时值为255。 59 SDA=1;SomeNOP(); 60 SCL=1;SomeNOP(); 61 while(SDA) {errtime--; if (!errtime) {I2CStop();SystemError=0x11;return false;}} 62 SCL=0; 63 return true; 第1 页 文件: PCF8563T.C 2001-11-27, 18:39:20 64 } 65 66 /**-------------------------------------------------------------------------------- 67 调用方式:void SendAck(void) ﹫2001/07/0 4 68 函数说明:私有函数,I2C专用,主器件为接收方,从器件为发送方时,应答信号。 69 ---------------------------------------------------------------------------------*/ 70 void SendAck(void) 71 { 72 SDA=0; SomeNOP(); 73 SCL=1; SomeNOP(); 74 SCL=0; 75 } 76 77 /**-------------------------------------------------------------------------------- 78 调用方式:void SendAck(void) ﹫2001/07/0 4 79 函数说明:私有函数,I2C专用,主器件为接收方,从器件为发送方时,非应答信号。 80 }**-------------------------------------------------------------------------------- 81 void SendNotAck(void) 82 { 83 SDA=1; SomeNOP(); 84 SCL=1; SomeNOP(); 85 SCL=0; 86 } 87 88 /**-------------------------------------------------------------------------------- 89 调用方式:void I2CSend(uchar ch) ﹫2001/07/0 5 90 函数说明:私有函数,I2C专用 91 ---------------------------------------------------------------------------------*/ 92 void I2CSendByte(Byte ch) 93 { 94 uchar i=8; 95 while (i--) 96 { 97 SCL=0;_nop_(); 98 SDA=(bit)(ch&0x80); ch<<=1; SomeNOP(); 99 SCL=1; SomeNOP(); 100 }
101 SCL=0; 102 } 103 104 /**-------------------------------------------------------------------------------- 105 调用方式:uchar I2CReceive(void) ﹫2001/07/0 5 106 函数说明:私有函数,I2C专用 107 ---------------------------------------------------------------------------------*/ 108 Byte I2CReceiveByte(void) 109 { 110 uchar i=8; 111 Byte ddata=0; 112 SDA=1; 113 while (i--) 114 { 115 ddata<<=1; 116 SCL=0;SomeNOP(); 117 SCL=1;SomeNOP(); 118 ddata|=SDA; 119 } 120 SCL=0; 121 return ddata; 122 } 123 124 125 //--------------------------------------------------------------------------- 126 //开始PCF8563T驱动程序 第2 页 文件: PCF8563T.C 2001-11-27, 18:39:20 127 /**-------------------------------------------------------------------------------- 128 调用方式:void GetPCF8563(uchar firsttype,uchar count,uchar *buff) ﹫2001/08/0 7 129 函数说明:读取时钟芯片PCF8563的时间,设置要读的第一个时间类型firsttype,并设置读取 130 的字节数,则会一次把时间读取到buff中。顺序是: 131 0x02:秒/0x03:分/0x04:小时/0x05:日/0x06:星期/0x07:月(世纪)/0x08:年 132 ---------------------------------------------------------------------------------*/ 133 void GetPCF8563(uchar firsttype,uchar count,uchar *buff) 134 { 135 uchar i; 136 I2CStart(); 137 I2CSendByte(0xA2); 138 WaitAck(); 139 I2CSendByte(firsttype); 140 WaitAck(); 141 142 I2CStart(); 143 I2CSendByte(0xA3); 144 WaitAck(); 145 146 for (i=0;i<count;i++) 147 { 148 buff[i]=I2CReceiveByte(); 149 if (i!=count-1) SendAck();//除最后一个字节外,其他都要从MASTER发应答。 150 } 151 152 SendNotAck(); 153 I2CStop(); 154 } 155 156 157 /**-------------------------------------------------------------------------------- 158 调用方式:void SetPCF8563(uchar timetype,uchar value) ﹫2001/08/0 7 159 函数说明:调整时钟。timetype是要改的时间类型,value是新设置的时间值(BCD格式)。 160 0x02:秒/0x03:分/0x04:小时/0x05:日/0x06:星期/0x07:月(世纪)/0x08:年 161 ---------------------------------------------------------------------------------*/ 162 void SetPCF8563(uchar timetype,uchar value) 163 { 164 I2CStart(); 165 I2CSendByte(0xA2); 166 WaitAck(); 167 I2CSendByte(timetype); 168 WaitAck(); 169 I2CSendByte(value); 170 WaitAck(); 171 I2CStop(); 172 } 173 174 /**-------------------------------------------------------------------------------- 175 调用方式:void SetAlarmHour(uchar count) ﹫2001/08/0 7 176 函数说明:设置报警闹钟在一天的第count点报警。例如:count=23,则在晚上11点报警。 177 ---------------------------------------------------------------------------------*/ 178 void SetAlarm(uchar alarmtype,uchar count) 179 { 180 SetPCF8563(0x01,0x02); 181 SetPCF8563(alarmtype,count); 182 } 183 184 /**-------------------------------------------------------------------------------- 185 调用方式:void CleanAlarm(void) ﹫2001/08/0 7 186 函数说明:清除所有报警设置。 187 ---------------------------------------------------------------------------------*/ 188 void CleanAlarm(void) 189 { 第3 页 文件: PCF8563T.C 2001-11-27, 18:39:20 190 SetPCF8563(0x01,0x00); 191 SetPCF8563(0x09,0x80); 192 SetPCF8563(0x0A,0x80); 193 SetPCF8563(0x0B,0x80); 194 SetPCF8563(0x0C,0x80); 195 // SetPCF8563(0x0D,0x00); 196 // SetPCF8563(0x0E,0x03); 197 } 198 199 200 /*--------------------------------------------------------------------------------
201 调用方式:uchar read1380(uchar command ) 202 函数说明:read1380()返回当前时间, command指要返回的时间类型。 203 秒:81H 分钟:83H 小时:85H 日期:87H 星期:89H 星期几:8BH 年:8D H 204 ---------------------------------------------------------------------------------*/ 205 uchar read1380 (uchar command) 206 { 207 uchar time; 208 GetPCF8563(command,1,&time); 209 return time; 210 } 211 212 /*-------------------------------------------------------------------------------- 213 调用方式:void write1380(uchar command ,uchar time ) 214 函数说明:write1380()往HT1380写命令和数据,command是命令字, time是后写入的数据 215 ---------------------------------------------------------------------------------*/ 216 void write1380(uchar command ,uchar time) 217 { 218 SetPCF8563(command,time); 219 } 220 221 222 /*-------------------------------------------------------------------------------- 223 调用方式:void time_display(uchar x0,uchar y0 ) 224 函数说明:time_display()在指定的x0,y0坐标,以00:00:00格式显示当前时间。 225 ---------------------------------------------------------------------------------*/ 226 //uchar time[]="00:11:11"; 227 228 void time_display(uchar x0,uchar y0,bit type) //液晶时间显示 229 { 230 uchar time[]="00:00:00"; 231 uchar con[3]; 232 uchar time_type; 233 GetPCF8563(0x02,3,con); 234 235 time[0]=(con[2]>>4)+'0'; 236 time[1]=(con[2]&0x0f)+'0'; 237 time[3]=(con[1]>>4)+'0'; 238 time[4]=(con[1]&0x0f)+'0'; 239 time[6]=(con[0]>>4)+'0'; 240 time[7]=(con[0]&0x0f)+'0'; 241 242 time[8]=0; 243 if(type==1) 244 { 245 time_type=0xff; 246 } 247 else 248 { 249 time_type=0; 250 } 251 dipchar0(x0,y0,F57,1,time_type,time); 252 } 第4 页 文件: PCF8563T.C 2001-11-27, 18:39:20
Thankx haha, I will surely let u know if i do any modification or optimization or addition to u r refrance code. please give me u r email so that i can share some of my codes with u. rutu
hi rutu and all:) u're welcome.and the code is no mine:),but you can use it anywhere~ my e-mail:feichen201@hotmail.com