1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我用stc12c5a60s2单片控制1602液晶显示,开始液晶显示都是正常的。设置按键什么的按下显示都是正常的,我将液晶显示在哪里点了一晚上。第二天过来,看到的数据是对的。当我按下设置按钮时,显示就有些乱了,在连续按键。完全就乱掉了,该显示的不显示,不该显示的乱显示。我将换过单片机,换过液晶,程序也重新烧过,以前写的程序也烧过。都显示出乱。。。。。。硬件没什么好说的,就几个引脚。这个到底是怎么回事啊?望高人们指点迷津啊!小弟在此谢过啦!!
***it E=P2^7; //1602使能引脚 ***it RW=P2^6; //1602读写引脚 ***it RS=P2^5; //1602数据/命令选择引脚 ***it led=P2^4; //1602背光led控制位 ***it set_key=P2^0; //左1 ***it add_key=P2^1; //中间 ***it sub_key=P2^2; //右1 uchar code num[] ="0123456789 "; uchar code start[] ="Set Data Please:Enter>> set_key "; uchar code mode[] ="PuT/ZhiN >>>Choose:"; uchar code much[] ="Business:Cool >>>"; uchar code state[] ="Set Success:---ChengGong"; uchar code coin[] ="1_Cool--?_bage?="; |
|
相关推荐
3个回答
|
|
void LCD1602()
{ E=0; RS=1; RW=1; P0=0xff; } /*------读忙信号-----*/ void read_busy() { P0=0xff; RS=0; RW=1; E=1; while(P0&0x80); E=0; } /*-------------LCD写命令-----------------*/ void write_com(uchar com) { read_busy(); E=0; RS=0; RW=0; P0=com; delay(10); E=1; delay(10); E=0; } /*-------------写数据-----------------*/ void write_data(uchar dat) { read_busy(); E=0; RS=1; RW=0; P0=dat; delay(10); E=1; delay(10); E=0; } /*-------------液晶初始化函数-------------*/ void lcd_init() { delay(30); write_com(0x38); delay(10); write_com(0x38); delay(10); write_com(0x08); delay(10); write_com(0x01); delay(10); write_com(0x06); delay(10); write_com(0x0c); delay(10); } /*------------显示设置成功----------*/ void success_display(void) { uchar i; write_com(0x01); //显示清屏 delay(10); write_com(0x80); //显示在第一行 for(i=0;i<12;i++) { write_data(state[i]); delay(10); } write_com(0x80+0x40+4); for(i=0;i<12;i++) { write_data(state[i+12]); delay(10); } } /*--------------模式选择函数-------------*/ void mode_choose(void) { uchar i; write_com(0x01); //显示清屏 delay(10); write_com(0x80); //显示在第一行 for(i=0;i<12;i++) { write_data(mode[i]); delay(10); } write_com(0x80+0x40); //显示在第一行 for(i=0;i<7;i++) { write_data(mode[i+12]); delay(10); } if(set_mode==0) //普通模式 { write_com(0x80+0x40+11); //显示在第一行 write_data(start[3]); //显示空 delay(10); for(i=0;i<3;i++) { write_data(mode[i]); delay(10); } } else { write_com(0x80+0x40+11); //显示在第一行 for(i=0;i<4;i++) { write_data(mode[i+4]); delay(10); } } } |
|
|
|
/*----------延迟1ms函数----------*/ void delay(uint k) { uint i; uchar j; for(i=0;i } |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12013 浏览 31 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 07:26 , Processed in 0.555962 second(s), Total 75, Slave 59 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号