打印

1602初始化的问题

[复制链接]
518|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
houcs|  楼主 | 2021-1-4 19:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

接的是4线模式,写的代码用mplab ide时能正常使用,但是换到mplab x ide时就会出现初始化不成功,屏幕没有显示。

使用特权

评论回复
沙发
xxrs| | 2021-1-4 19:57 | 只看该作者

还有什么现象?能再详细描述下吗?

使用特权

评论回复
板凳
houcs|  楼主 | 2021-1-4 20:02 | 只看该作者
修改代码在写0x28前先写一次0x02就能正常显示了

使用特权

评论回复
地板
houcs|  楼主 | 2021-1-4 20:07 | 只看该作者
请问为什么用mplab ide时就能正常显示呢?

使用特权

评论回复
5
pangb| | 2021-1-4 20:12 | 只看该作者
<<写0x28前先写一次0x02>>  这样操作的意思是什么?

使用特权

评论回复
6
morrisk| | 2021-1-4 20:15 | 只看该作者
你两边的代码一模一样吗

使用特权

评论回复
7
houcs|  楼主 | 2021-1-4 20:18 | 只看该作者
一模一样,在X下就初始化不成功,要写一个0x02才能成功

使用特权

评论回复
8
houcs|  楼主 | 2021-1-4 20:21 | 只看该作者
不知道是什么意思,指令表里没这个指令,在网上看到的操作。

使用特权

评论回复
9
yufe| | 2021-1-4 20:28 | 只看该作者
两边编译器不一样吧,比较比较汇编看看,再发个lcd初始化代码看看, 0x02是什么意思?

使用特权

评论回复
10
zhuhuis| | 2021-1-4 20:31 | 只看该作者
不应该是指令吧,还有你说的资料是啥,发来看看

使用特权

评论回复
11
houcs|  楼主 | 2021-1-4 20:34 | 只看该作者
//------------------------------------------------------------------------------
//液晶初始化
//------------------------------------------------------------------------------
void LCD_Initialize()
{
        __delay_ms(50);
        /*
        Write_LCD_Command(0x30); __delay_ms(1);
        Write_LCD_Command(0x30); __delay_ms(1);
        Write_LCD_Command(0x30); __delay_ms(1);
        */
        
    Write_LCD_Command(LCD_SETFUNCTION + 0x08);           //4位模式,双行,5*7点阵
    Write_LCD_Command(LCD_SETVISIBLE + 0x04);            //不显示光标,不闪烁
    Write_LCD_Command(LCD_SETMODE + 0x02);               //自动递增
    Write_LCD_Command(LCD_SETDDADDR);                    //DDRA偏移地址0x80
}

使用特权

评论回复
12
houcs|  楼主 | 2021-1-4 20:38 | 只看该作者
这个代码在mplab ide 里能正常初始化后显示出字符,在mplab x ide里初始化不成功,显示空白。

使用特权

评论回复
13
houcs|  楼主 | 2021-1-4 20:39 | 只看该作者
//------------------------------------------------------------------------------
//液晶初始化
//------------------------------------------------------------------------------
void LCD_Init(void)
{
        __delay_ms(15);
        Write_LCD_NO_Com(0x02);        //这是没做忙检测的,不过做不做忙检测好像都一样
    Write_LCD_Command(LCD_SETFUNCTION + 0x08);           //4位模式,双行,5*7点阵
    Write_LCD_Command(LCD_SETVISIBLE + 0x04);            //不显示光标,不闪烁
    Write_LCD_Command(LCD_SETMODE + 0x02);               //自动递增
    Write_LCD_Command(LCD_SETDDADDR);                    //DDRA偏移地址0x80
}
修改成这样后能在mplab x ide里正常初始化,显示字符。

使用特权

评论回复
14
houcs|  楼主 | 2021-1-4 20:42 | 只看该作者
在网上找的资料好像是说在初始化时因为接的是4线,所以发0x28时其实LCD只是接收到了个2,后面的8没收到。

使用特权

评论回复
15
ousj| | 2021-1-4 20:45 | 只看该作者

然后呢?你是怎么应对这个的呢        

使用特权

评论回复
16
houcs|  楼主 | 2021-1-4 20:53 | 只看该作者
。因为模式还没转换成4线。后面的4位用的是默认的值。

使用特权

评论回复
17
houcs|  楼主 | 2021-1-4 20:57 | 只看该作者
这点没搞太懂,但是相同的代码在mplab X ide下不能显示,d在mplab ide下就能显示成功。谢谢各位了,能否帮忙解读下

使用特权

评论回复
18
gongche| | 2021-1-4 21:01 | 只看该作者
看了下1602手册,这个0x02在4线模式下确实要写,可是mplab ide不需要,有点奇怪啊,你比较下两边的汇编

使用特权

评论回复
19
houcs|  楼主 | 2021-1-4 21:05 | 只看该作者
汇编看不懂,没学过请问有2004的相关资料吗?

使用特权

评论回复
20
houcs|  楼主 | 2021-1-4 21:11 | 只看该作者
有一个IIC的2004,想学习驱动哈,好像找不到教程

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

743

主题

8382

帖子

5

粉丝