
最近因为接了一个老师的项目,要用STM8单片机做一个小玩意,其中用到了LCD1602.但做了好久,就是做不通。吧代码贴出来,希望大家帮我看看到底是哪里不对。 #include<STM8S103F3P.H> #define uchar unsigned char #define uint unsigned int _Bool LCD1602_RS @PA_ODR:1; _Bool LCD1602_RW @PA_ODR:2; _Bool LCD1602_E @PA_ODR:3; void Lcd1602_Delay1ms(uint c) { uchar a,b; for (; c>0; c--) { for (b=199;b>0;b--) { for(a=1;a>0;a--); } } } void init_stm8(void) { PA_DDR=0x07; PA_CR1=0x07; PA_CR2=0x00; PB_DDR=0xff; PB_CR1=0xff; PB_CR2=0x00; } void LcdWriteData(uchar dat) //写入数据 { LCD1602_E = 0; //使能清零 LCD1602_RS = 1; //选择写入数据 LCD1602_RW = 0; //选择写入 PB_ODR = dat; //由于4位的接线是接到P0口的高四位,所以传送 Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0; PB_ODR = dat << 4; //写入低四位 Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0; } void LcdWriteCom(uchar com) //写入命令 { LCD1602_E = 0; //使能清零 LCD1602_RS = 0; //选择写入命令 LCD1602_RW = 0; //选择写入 PB_ODR = com; //由于4位的接线是接到P0口的高四位 Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0; // Lcd1602_Delay1ms(1); PB_ODR = com << 4; //发送低四位 Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0; } void main(void) { unsigned char i; init_stm8(); LcdWriteCom(0x32); //将8位总线转为4位总线 LcdWriteCom(0x28); //在四位线下的初始化 LcdWriteCom(0x0c); //开显示不显示光标 LcdWriteCom(0x06); //写一个指针加1 LcdWriteCom(0x01); //清屏 LcdWriteCom(0x80); //设置数据指针起点 LcdWriteData(123); while(1) { } } 程序检查没有任何错误,接线也没有任何问题,但LCD就是一点反应都没有。老师也看不出是哪里不对。希望有人能帮看一下到底是哪里的问题 |
STM8S003无法检测到引脚电平
STM8 @svlreg 问题
STM8AF62XX+L99PM62GXP LIN通讯的电路原理图有吗?官网提供了一套软件,没找到对应的原理图,请大家指教一下
求一个STM8S207例程
初次接触STM8,请问在STVD中,为什么这个Struct会报错
STMS005K6T6 如何采集内部参考电压。
stm8s003 adc中断和通道切换的问题
adc施密特触发器stm8
stm8l051f3 TSSOP20 封装,待机模式下,2天后,电流突然增加到140UA
STM8S用STVP烧录怎么加密?
åºäºæè°STM32ç1602æ¶²æ¶é©±å¨ç¨åº.zip
2015-11-13 11:03 上传
点击文件名下载附件
下载积分: ST金币 -12.61 MB, 下载次数: 29, 下载积分: ST金币 -1