资料介绍
困扰我几的程序终于搞定了,前几天我对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);
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- I2C控制EF2内置FLASH读写
- STM32f103系列i2c读写文件at24c02 22次下载
- STM32 I2C存取实验资料 16次下载
- STM32学习之I2C协议(读写EEPROM)
- 嵌入式linux应用读写i2c示例
- I2C基本用法及问题汇总资料下载
- 浅谈 STM32 硬件I2C的使用资料下载
- 使用C语言模拟51单片机的I2C总线的资料和程序免费下载
- 如何将I2C从地址左移1位
- I2C负响应问题项目求解答的资料合集免费下载 5次下载
- Arduino教程之I2C模块使用教程资料免费下载 9次下载
- I2C—读写EEPROM 23次下载
- I2C资料总结 2次下载
- I2C总线规范与I2C器件C51读写程序
- I2C总线器件的C51读写程序
- I2C地址跳变问题的调试案例 1124次阅读
- 无法读取I2C地址的调试案例 1652次阅读
- I2C通信没反应怎么办? 3062次阅读
- I2C通信协议及其工作原理 4485次阅读
- Linux I2C驱动入门知识科普 1518次阅读
- i2c-tools工具的安装和使用简单介绍 9317次阅读
- 基于MM32生态实现I2C接口通讯的方式 1556次阅读
- MM32F0140 MCU关于I2C的介绍、配置及实验 3693次阅读
- 什么是I2C通信协议? 7575次阅读
- i2c总线用来做什么_i2c总线数据传输过程 7086次阅读
- 基于MCS-51单片机I2C总线接口电路的设计 3245次阅读
- AT89S52单片机并行端口模拟I2C总线协议读写AT24C04的设计 2585次阅读
- 基于使用STM8单片机I2C方式实现读写操作 1.1w次阅读
- I2C总线的特点、控制威廉希尔官方网站 与传输分析 9914次阅读
- 《振南电子STM32视频教程》第八讲:I2C总线 1077次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 11次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5DIY动手组装LED电子显示屏
- 0.98 MB | 3次下载 | 免费
- 6基于FPGA的C8051F单片机开发板设计
- 0.70 MB | 2次下载 | 免费
- 751单片机PM2.5检测系统程序
- 0.83 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537797次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191186次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多