完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
9个回答
|
|
通常出现这种情况的原因是:你的指令不对
|
|
|
|
你用的什么控制器 可以把代码贴上来 大家帮你看一下
|
|
|
|
/********************************************************************/
//上电复位 /********************************************************************/ void LCD_Reset(void) { _delay_ms(120);// Delay_Nms(120); // Delay_Nus 120ms 等待上电复位 PORTD =(1< //PORTD =0xff;//lcd_control = 0xff; // LCD_RS/WR/RD/CS1/CS2 normal - skeep high. _delay_ms(120); ClrLCD_RS; // _delay_ms(120); } /********************************************************************/ //LCD初始化 /********************************************************************/ void LCD_Initial(void) { ClrLCD_E;//e=0; wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/ wr_lcd (comm,0x06); /*光标的移动方向*/ wr_lcd (comm,0x0c); /*开显示,关光标*/ wr_lcd (comm,0x38); /*8位接口两行显示模式*/ } void wr_lcd (unsigned char dat_comm,unsigned char content) { if(dat_comm) { SetLCD_RS;//rs=1; //data ClrLCD_WR;//rw=0; //write } else { ClrLCD_RS;//rs=0; //command ClrLCD_WR;//rw=0; //write } PORTC = content; //output data or comm SetLCD_E;//e=1; _delay_ms(1);//delay(1); ClrLCD_E;//e=0; } void chrt_disp (unsigned char *chrt) { uchar i,j; wr_lcd (comm,0x80); for (j=0;j<2;j++) { for (i=0;i<16;i++) wr_lcd (dat,chrt[j*16+i]); wr_lcd (comm,0xc0); } } |
|
|
|
将延时加长一点看看,用示波器测测相关时序。
|
|
|
|
你用的单片机主频是多大的,估计是你的单片速度快,所以别人用着没问题的代码,在你那里就不能用了,因为LCD1602的反应速度有限。
在基础指令里面,每个读写操作之后加上延时试试 |
|
|
|
GPIO_Mode_Out_PP 试试。把读写 的延时提高下试试!
|
|
|
|
哈哈 不小心把ST-LINK搞挂了 看来今天帮不上你了
有几个地方 你的 void LCD_dat(u8 dat) dat << 8 移位完成之后 dat 里应该只剩0了吧 没有看到你的LCD_Busy()函数的具体实现,你应该用的STM32吧,管脚方向读数据的时候是要改变的 LCD1602的初始化操作和我看到的推荐操作也是有出入的 总之 你再好好检查下吧 这个还是需要自己去调试 |
|
|
|
调下调节对比度的电位器试试.
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-7 05:10 , Processed in 0.633922 second(s), Total 55, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191