电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>工控技术>I2C读写心得资料下载

I2C读写心得资料下载

2021-04-17 | pdf | 87.91KB | 次下载 | 免费

资料介绍

  困扰我几的程序终于搞定了,前几天我对AT24C02一直读不准确,找了N长时间的程序都没有头绪,后来在板哥的指点下,一下子明白了,原因很简单,我在AT24C02_read()最后没有加延时,主要还是对时序没有控制好呀,用板哥的一句话是我们对器件的了解还不很熟,我现在也感到,一定要先了解了器件的特性,我们才能游刃有余把握住每一个容易疏忽的细节,在这里,板哥确实教会了我好多东西,在我刚学单片机时,他就对我说时序很重要,现在终于是看到了.   好了不罗嗦了,最后得出一点,最好在每个读写结束时加个延时,如果对时间要求不是很重要的话,加的长一点无所谓,如果要求比较高的话,那先加长延时,然后慢慢的减. #include #include /*********************************LCD定义部分********************************/ //输入方式设置 #define LCD_AC_AUTO_INCREMENT     0x06         //数据读、写操作后,AC自动增一 #define LCD_AC_AUTO_DECREASE      0x04         //数据读、写操作后,AC自动减一 #define LCD_MOVE_ENABLE           0x05         //数据读、写操作,画面平移 #define LCD_MOVE_DISENABLE        0x04         //数据读、写操作,画面不动 #define LCD_GO_HOME               0x02         //AC=0,光标、画面回HOME位 //设置显示、光标及闪烁开、关 #define LCD_DISPLAY_ON            0x0C         //显示开 #define LCD_DISPLAY_OFF           0x08         //显示关 #define LCD_CURSOR_ON             0x0A         //光标显示 #define LCD_CURSOR_OFF            0x08         //光标不显示 #define LCD_CURSOR_BLINK_ON       0x09         //光标闪烁 #define LCD_CURSOR_BLINK_OFF      0x08         //光标不闪烁 //光标、画面移动,不影响DDRAM #define LCD_LEFT_MOVE             0x18         //LCD显示左移一位 #define LCD_RIGHT_MOVE            0x1C         //LCD显示右移一位 #define LCD_CURSOR_LEFT_MOVE      0x10         //光标左移一位 #define LCD_CURSOR_RIGHT_MOVE     0x14         //光标右移一位 //工作方式设置 #define LCD_DISPLAY_DOUBLE_LINE   0x38         //两行显示 #define LCD_DISPLAY_SINGLE_LINE   0x30         //单行显示 #define LCD_CLEAR_SCREEN  0X01   //清屏 /***********************LCD1602地址相关******************************/ #define LINE1_HEAD    0x80   // 第一行DDRAM起始地址  #define LINE2_HEAD    0xc0   //  第二行DDRAM起始地址 #define LINE1         0      //第一行 #define LINE2         1      //第二行 #define LINE_LENGTH   16     //每行的最大字符长度 /***********************LCD1602接线引脚定义************************** **********************可根据实际电路改变*******************************/ #define LCDIO     P2         //定义P2口与LCD1602的数据口相接   sbit   LCD_RS=P1^4;            sbit   LCD_RW=P1^3;            sbit   LCD_EN=P1^2;   sbit  LCD_BUSY=LCDIO^7;  /**********************另外相关的定义*********************************/  #define HIGH               1  #define LOW                0     #define TURE               1  #define  FALSE             0  #define  uchar unsigned char  #define  uint  unsigned int  #define NUM 10  /*************************以下是函数的申明部分*************************/  void LCD_init(void);                    //LCD1602初始化  void LCD_send_command(uchar command);   //  void LCD_send_data(uchar dat);  void LCD_write_char(uchar x,uchar y,uchar dat);  void LCD_write_string(uchar x,uchar y,char *Data);  void delay_ms(uint n);  void LCD_check_busy(void);  /*********************结束***********************************************/ //at24c02 part #define  WRITE24C02    0xA0 #define     READ24C02    0xA1 //I2C part #define    Wait1us        _nop_(); #define    Wait2us        {_nop_();_nop_();} #define    Wait4us        {Wait2us;Wait2us;} #define    Wait8us        {Wait4us;Wait4us;} #define    Wait10us    {Wait8us;Wait2us;} sbit SDA=P2^7;      //AT24C02 serial data    pin 5  sbit SCL=P2^6;     //AT24C02 serial clock    pin 6 /********************************************************************/ void I2C_start(void);//I2C start function void I2C_stop(void);//I2C stop function //void I2C_send_ack(void);//I2C send responsion function  void I2C_send_noack(void); void I2C_write_byte(unsigned char IIC_data);//I2C bus write byte function  unsigned char I2C_read_byte(void);//I2C bus read byte function /********************************************************************/ void AT24C02_write(unsigned char address,unsigned char *buf,unsigned char n);//write 24c02 information function void AT24C02_read(unsigned char address,unsigned char *buf,unsigned char n);//read 24c02 information function /********************************************************************/ void Mcu_init(void);//system initize funcition void I2C_init(void);
下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1TC358743XBG评估板参考手册
  2. 1.36 MB  |  330次下载  |  免费
  3. 2开关电源基础知识
  4. 5.73 MB  |  11次下载  |  免费
  5. 3100W短波放大电路图
  6. 0.05 MB  |  4次下载  |  3 积分
  7. 4嵌入式linux-聊天程序设计
  8. 0.60 MB  |  3次下载  |  免费
  9. 5DIY动手组装LED电子显示屏
  10. 0.98 MB  |  3次下载  |  免费
  11. 6基于FPGA的C8051F单片机开发板设计
  12. 0.70 MB  |  2次下载  |  免费
  13. 751单片机PM2.5检测系统程序
  14. 0.83 MB  |  2次下载  |  免费
  15. 8基于51单片机的RGB调色灯程序仿真
  16. 0.86 MB  |  2次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537797次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191186次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费