完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近做了个基于51的智能家居系统,用LCD12864显示温湿度等一些数据,烧好程序后,LCD不显示数据。(确认LCD完好)。求解答??
LCD是ST7920控制的,带字库 驱动部分代码如下: /*****************************************/ #include #include #include"LCD12864.h" #include"delay_ms.h" #include"DS1302.h" /***************变量定义****************/ unsigned char code shu[]={"2016年12月15日"} ; unsigned char code shu1[]={"星期1 水温28.7℃ "} ; unsigned char code shu2[]={"时间22: 10: 14"} ; unsigned char code shu3[]={"湿度 % 温度 ℃ "} ; unsigned char code shu4[]={"0123456789"}; unsigned char wd_bai,wd_shi,wd_ge,wd_xiao1,wd_xiao2; /************LCD12864初始化¯***************/ void init_lcd12864() { lcd_wr=0; lcd_rs=0; lcd_en=0; zhiling(0x34); //扩充指令操作 zhiling(0x34); delay(3); zhiling(0x30); //基本指令操作 zhiling(0x30); delay(3); zhiling(0x0c); delay(3); zhiling(0x01); delay(3); zhiling(0x80); delay(10); zhiling(0x80); for(i=0;i<14;i++) { shuju(shu[i]); delay(10); } zhiling(0x90); for(i=0;i<16;i++) { shuju(shu1[i]); delay(10); } zhiling(0x88); for(i=0;i<14;i++) { shuju(shu2[i]); delay(10); } zhiling(0x98); delay(1); for(i=0;i<16;i++) { shuju(shu3[i]); delay(3); } } /*void zhiling(unsigned char zl) //向LCD12864写指令 { lcd_wr=0; lcd_rs=0; LCD_IO=zl; delay(1); lcd_en=1; delay(1); lcd_en=0; delay(1); } */ void zhiling(unsigned char zl) { lcd_en = 0; _nop_(); _nop_(); lcd_rs = 0; _nop_(); _nop_(); lcd_wr = 0; _nop_(); _nop_(); lcd_en = 1; _nop_(); _nop_(); LCD_IO = zl; _nop_(); _nop_(); lcd_en = 0; _nop_(); _nop_(); delay(5); } /*void shuju(unsigned int sj) //向LCD12864写数据 { lcd_wr=0; lcd_rs=1; LCD_IO=sj; delay(1); lcd_en=1; delay(1); lcd_en=0; delay(1); }*/ void shuju(unsigned int sj) { lcd_en = 0; _nop_(); _nop_(); lcd_rs=1; _nop_(); _nop_(); lcd_wr=0; _nop_(); _nop_(); lcd_en=1; _nop_(); _nop_(); LCD_IO=sj; _nop_(); _nop_(); lcd_en=0; _nop_(); _nop_(); delay(5); } void qushu_time(unsigned char qs) //取数,分离数据 { unsigned char f; f=BCD_Decimal(qs); shi=f/10; ge=f%10; } void shijian1(unsigned char com1,unsigned char record1) //星期显示函数 { unsigned char shi,ge; shi=record1/10; ge=record1%10; zhiling(com1); //shuju(shu4[shi]); shuju(shu4[ge]); } void shijian(unsigned char com2,unsigned char record2) //其他数据显示函数 { unsigned char shi,ge; shi=record2/10; ge=record2%10; zhiling(com2); shuju(shu4[shi]); shuju(shu4[ge]); } void qushu_DS18B20(unsigned int qs) //分离数据 { wd_bai=qs/10000; wd_shi=qs%10000/1000; wd_ge=qs%1000/100; wd_xiao1=qs%100/10; wd_xiao2=qs%10; } |
|
相关推荐
5个回答
|
|
是不是楼主写的代码程序有错误?
|
|
|
|
|
|
首先打开串口能能显示的设备,在while(1)里通过串口发送数据,这样能判断程序是不是卡死在某个地方,然后降低时钟周期试试,有可能IO口太快液晶反应不过来
|
|
|
|
把写指令和数据的函数里边的延时改长一点
|
|
|
|
本帖最后由 zh***1 于 2017-1-17 22:39 编辑
粗看你的程序好像缺少LCD初始化部分或者说不完整吧。因为所有的LCD都有控制芯片[段码的LCD例外],因此控制显示,首先需要对LCD控制器初始化,而后才能向LCD的RAM中写入东西显示出来。还有一点,LCD有一个复位引脚,如果使用硬件复位,那么初始化程序必须等外部硬件复位完成后运行,如果是程序复位,你的程序中少这一条语句。查查看 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
250 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
473 浏览 2 评论
571 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
260 浏览 0 评论
400 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11974 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 02:43 , Processed in 0.466454 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号