近段时间用STM8驱动1602,采用4线方式,首次上电出现乱码,现在网上找到解决方法,做此总结。
网上大佬分析,出现乱码原因是在单片机发送0x28初始化时,高4位发送就已经完成初始化,低4位发送导致出现乱码,需要延时后再初始化可解决。这位大佬提供的方法确实可以解决问题,但感觉问题应该不在这,具体原因还没得出。
#include #define u8 uint8_t #define u16 uint16_t #define u32 uint32_t typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned long uint32_t; #define LCDRS PB_ODR_ODR0 #define LCDRW PB_ODR_ODR1 #define LCDEN PB_ODR_ODR2 #define LCDDATA PC_ODR u8 table1[]="====LCD 1602===="; //第一行显示数据 u8 table2[]="****************"; //第二行显示数据 void delay(u16 Count); void LCD1602_Write(u8 cmdordata,u8 writetype); void LCD1602_init(void); void LCD1602_DIS(void); int main(void) { PB_DDR_DDR0=1; PB_CR1_C10=1; PB_CR2_C20=0; PB_DDR_DDR1=1; PB_CR1_C11=1; PB_CR2_C21=0; LCDRW=0; PB_DDR_DDR2=1; PB_CR1_C12=1; PB_CR2_C22=0; PC_DDR=0xFF; PC_CR1=0xFF; PC_CR2=0x00; LCDDATA=0xFF; LCD1602_init(); LCD1602_DIS(); while(1); } void delay(u16 Count) { u8 i,j; while (Count--) { for(i=0;i<50;i++) for(j=0;j<20;j++); } } void LCD1602_init(void) { LCD1602_Write(0x28,0); /*区间内为加入延时,初始化部分*/ LCDEN=1;delay(5); LCDEN=0;delay(5); LCD1602_Write(0x28,0); /*区间内为加入延时,初始化部分*/ LCD1602_Write(0x0C,0); LCD1602_Write(0x06,0); LCD1602_Write(0x01,0); } void LCD1602_DIS(void) { u8 i; LCD1602_Write(0x80,0); for(i=0;i<16;i++) { LCD1602_Write(table1[i],1); delay(2); } LCD1602_Write(0xC0,0); for(i=0;i<16;i++) { LCD1602_Write(table2[i],1); delay(2); } } void LCD1602_Write(u8 cmdordata,u8 writetype) { LCDRS=writetype; delay(5); LCDDATA &= 0x0F; LCDDATA|=cmdordata & 0xF0; LCDEN=1;delay(5); LCDEN=0;delay(5); cmdordata=cmdordata << 4; LCDDATA &= 0x0F; LCDDATA |= cmdordata & 0xF0; LCDEN=1;delay(5); LCDEN=0;delay(5); }
上一篇:STM8 LCD液晶
下一篇:STM8S105K6T6单片机的IIC配置问题
推荐阅读最新更新时间:2024-11-18 07:15
设计资源 培训 开发板 精华推荐
- AD9235BCP-65EB,用于评估 AD9235BCP-65 单通道 ADC 流水线 65Msps 12 位并行 32 引脚 LFCSP 的评估套件
- DC2268A-A,用于 LTM4620EV 双降压模块稳压器的演示板,5.5V = VIN = 16V,Vout1 = 3.3V @ 13A,Vout2 = 1.5V @ 13A
- DC2425A-E,使用 LTC2311IMSE-12 12 位、5Msps 真差分输入串行 SAR ADC 的演示板
- LT1021DCN8-5 的典型应用从 5V 电源运行 5V 基准
- 用于 MCU 系统负载感应的 NCP301LSN30T1 3V 电压检测器的典型应用
- LT3470ETS8 12V 降压转换器的典型应用电路
- LTC1855、8 通道、10V 输入、14 位、100ksps ADC 转换器的典型应用,具有停机功能
- SC1566 极低压差 3.0 安培稳压器的典型应用
- R_79_V10基于IPS2电机换向传感器的设计
- TPS5430多路电源