#include //包含单片机寄存器的头文件 #include #define ulong unsigned long #define uchar unsigned char #define uint unsigned int #define LCD1602_PORT P2 //用LED1602_PORT表示P2总线接口 #define PCF8591 0x90 //PCF8591 地址 #define NOP() _nop_() /* 定义空指令 */ #define _Nop() _nop_() /*定义空指令*/ // 位定义 sbit SCL=P1^0; //I2C 时钟 sbit SDA=P1^1; //I2C 数据 sbit LCD1602_RS = P0^5; //定义1602液晶显示屏的数据/命令选择端,数据/命令(H/L) sbit LCD1602_RW = P0^6; //定义1602液晶显示屏的读/写选择端,读/写(H/L) sbit LCD1602_EN = P0^7; //定义1602液晶显示屏的使能端 bit ack; /*应答标志位*/ // 变量定义 uchar AD_CHANNEL; ulong xdata LedOut[8]; //单片机内部存取器 ulong v,a,ss; uchar date; // 函数申明 extern bit ack;//起动总线函数 extern void Start_I2c();//结束总线函数 extern void Stop_I2c();//应答子函数 extern void Ack_I2c(bit a);//字节数据发送函数 extern void SendByte(uchar c);//有子地址发送多字节数据函数 extern bit ISendStr(uchar sla,uchar suba,uchar *s,uchar no) ;//无子地址发送多字节数据函数 extern bit ISendStrExt(uchar sla,uchar *s,uchar no);//无子地址读字节数据函数 extern uchar RcvByte(); void LCD1602_delay_ms(uint n); void LCD1602_write_com(uchar com); void LCD1602_write_data(ulong dat); void LCD1602_write_word(uchar *s); void Init_LCD1602(); bit ISendByte(uchar sla,uchar c); uchar IRcvByte(uchar sla); //MS延时函数(12M晶振下测试) void delay_ms(uint n) { unsigned int i,j; for(i=0;i0) { LCD1602_write_data(*s); s++; } } //1602初始化函数 void Init_LCD1602() { LCD1602_EN = 0; LCD1602_RW = 0;//设置为写状态 LCD1602_write_com(0x38);//显示模式设定 LCD1602_write_com(0x0c);//开关显示、光标有无设置、光标闪烁设置 LCD1602_write_com(0x06);//写