![shequ.stmicroelectronics.cn](./template/st_v1/static/img/logo2.png)
最近因为接了一个老师的项目,要用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就是一点反应都没有。老师也看不出是哪里不对。希望有人能帮看一下到底是哪里的问题 |
STM8AF系列可以通过Flash Loader Demonstrator用lin总线刷写程序吗
STM8S003F3U6 请求各位大佬支援,但是遇到如下问题。。。这样就一定是这颗芯片的问题吗?
STVD如何生成库文件
STM8 flash 库函数 startaddress = startaddress + ((uint32_t)BlockNum * FLASH_BLOCK_S
stm 8 flash 在RAM运行代码的问题,是不是库函数有问题 Library call (?sll32_l0_l0_a) from within a
STM 有能替代MCHC912B32CFUE8 / NXP的型号吗?
STM8S的CAN总线使用
STM8L151在使用DAC功能后严重发热
STM8 IIC SLAVE 400K
STM8S 定时器1互补输出pwm
åºäºæè°STM32ç1602液æ¶é©±å¨ç¨åº.zip
2015-11-13 11:03 上传
点击文件名下载附件
下载积分: ST金币 -12.61 MB, 下载次数: 29, 下载积分: ST金币 -1