- 5
- 0
- 约3.09千字
- 约 6页
- 2016-08-23 发布于重庆
- 举报
实验报告10I
实验十 I2C 实验目的使用I2C函数对24C02EEPROM进行读写操作:第一次运行,LCD中显示000;记录开机次数(使用复位功能模拟),并将计数写入EEPROM;实验内容1、阅读手册24C02MCC18程序库 I2C函数2、实验电路连接示意图实验过程实验测试程序#include p18F452.h#include I2C.h#include delays.hunsigned char temp;void main( void ){OpenI2C(MASTER,SLEW_ON);SSPADD=9;TRISCbits.TRISC3=1;TRISCbits.TRISC4=1;while(1){ StartI2C();Nop();WriteI2C(0xa0); Nop();WriteI2C(0x15);Nop();WriteI2C(0x55);Nop();StopI2C(); Delay10KTCYx(100); //*************************** temp=EERandomRead(0xa0,0x15);Nop();Nop();}}2、修改实验程序#include p18F452.h#include I2C.h#include delays.hunsigned char temp;#define RSPIN PORTBbits.RB5 //Data or Instrument Select#define RWPIN PORTBbits.RB4 //Write or Read#define EPIN PORTBbits.RB3 //6800 mode Enable single//---------------------------------------//名称: 1602忙检测函数 //----------------------------------------- void lcd_wait_busy(void){ TRISDbits.TRISD7=1; //为读状态做准备 RSPIN=0; //选择指令寄存器 RWPIN=1; //选择读 EPIN=1; //使能线电平变化 while(PORTDbits.RD7==1); //读忙状态,不忙时退出 EPIN=0; //恢复使能线电平 TRISDbits.TRISD7=0;}//---------------------------------------//名称: 1602写命令函数 //-----------------------------------------void lcd_write_com(unsigned char combuf){ RSPIN=0;//选择指令寄存器 RWPIN=0;//选择写 PORTD=combuf;//把命令字送入RD EPIN=1; //使能线电平变化,命令送入1602的8位数据口 Delay1TCY(); EPIN=0; //恢复使能线电平}//---------------------------------------//名称: 1602写命令函数(带忙检测) //-----------------------------------------void lcd_write_com_busy(unsigned char combuf){ lcd_wait_busy();//调用忙检测函数 lcd_write_com(combuf); //调用写命令函数}//---------------------------------------//名称: 1602写数据函数(带忙检测) //-----------------------------------------void lcd_write_data(unsigned char databuf){ lcd_wait_busy();//调用忙检测函数 RSPIN=1;//选择数据寄存器 RWPIN=0;//选择写 PORTD=databuf;//把数据字送入P2 EPIN=1; //使能线电平变化,命令送入1602的8位数据口 Delay1TCY(); EPIN=0; //恢复使能线电平}//---------------------------------------//名称: 1602显示地址写函数 //-----------------------------------------void lcd_write_address(unsigned char x,unsigned char y){ x=0x0f;//列地址限制在0-15 y=0x01;//行地址限制在0-1 if(y==0x00) l
原创力文档

文档评论(0)