LCD1602.H 头文件内容 #ifndef __LCD1602_H__ #define __LCD1602_H__ #include "./include/gpio.h" #include "./include/def.h" #include "./include/timer.h" //------- 驱动方式 -----------// #define IO_WAY 0 //模拟IO #define SPI_WAY 1 //SPI #define LCDCTL_WAY SPI_WAY //使用SPI驱动 //------- 控制端口与控制引脚 ------// #define LCD1602_CTL_PORT rGPFCON //GPF 端口 #define LCD1602_RS GPFPin0 //RS引脚 #define LCD1602_RW GPFPin2 //RW引脚 #define LCD1602_E GPFPin4 //EN引脚 //------- 数据端口与数据引脚 ------// (使用74HC595) #define LCD1602_DATA_PORT rGPGCON //GPG 端口 #define HC595_ST GPGPin5 // SPI1MISO 引脚 #define HC595_SH GPGPin7 // SPI1CLK 引脚 #define HC595_Ds GPGPin6 // SPI1MOSI 引脚 #define SPI1Baud 300000 // 设置波特率为300 khz (PCLK=50666666) //-------- 自制字符 --------- #define SELF_SYMBOL 1 // 使能自制字符显示 #if SELF_SYMBOL extern const U8 CGTAB[8][8]; #endif //----- 延时函数 ----------// #define delay_ms(x) TimerDelay(1000*x) #define delay_us(x) TimerDelay(1*x) //--------- 主函数 ----------// void LCD1602_init(void); //1602初始化(带清屏) void LCD1602_Clear(void); //1602清屏 void LCD1602_putchar(U8 number); //显示字符 void LCD1602_putcharXY(U8 number,U8 x,U8 y); //在指定位置显示字符 void LCD1602_putstring(U8 *p); //显示字符串 void LCD1602_putstringXY(U8 *p,U8 x,U8 y); //在指定位置显示字符串 #if SELF_SYMBOL void LCD1602WriteRAM(U8 *Data,U8 tab_N); #endif //--------- 子函数 ----------// void LCD1602Pin_init(void); #if LCDCTL_WAY==SPI_WAY void SPI1SendData(U8 Data); #else void HC595SendData(U8 data); #endif void LCD1602WriteCMD(U8 CMD); void LCD1602WriteDATA(U8 W_DATA); void LCD1602SetPoint(U8 x,U8 y); #endif // __LCD1602_H__ ……