打印

请教:把原来由并口驱动的LCD改为由单片机读取后驱动的问

[复制链接]
2181|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanwuxu|  楼主 | 2008-9-17 12:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原来并口驱动LCD是利用并口的1号脚接LCD1602的EN脚,14号脚接LCD1602的RS脚,LCD的RW脚直接接地,只写不读,并口的2-9脚的数据线D0-D7直接接到LCD的D0-D7,在上位机软件控制下可以正常显示相关信息,我现在想用51单片机读取并口的数据然后再送到LCD显示,但读取后的数据再送到LCD 显示是乱码(LCD直接接并口显示是正常的),看那个LCD手册上EN宽度最低只有220ns,使用51单片机在12M晶振下循环读取是不是会出现漏读的现象以至读取数据不对导致乱码?
希望路过的都能发表一下您的看法和建议,谢谢!

相关帖子

沙发
gjg191| | 2008-9-17 12:58 | 只看该作者

o

你可以看看你读取并口的数据对马?

使用特权

评论回复
板凳
yanwuxu|  楼主 | 2008-9-17 13:31 | 只看该作者

我是这样理解的

没法看,我只能是先跳过单片机,把LCD直接接到并口上,看显示是正常的,说明并口送到LCD的是正确的!
查了一些资料,说LCD的驱动芯片HD44780的工作原理是收到一个先跃升再下降的enable脉冲,然后显示系统开始读取并判断是否有指令或数据需要处理(就是判断RS脚状态),然后判断是否将接受或者发送信息(判断RW状态),最后判断针对这些数据比特是执行发送还是接受操作,按照它这些我这样写了点,lcd没显示!

if(p_en==1)     //原并口的接到LCD的EN管脚,判是否为高
        {
            temp=p_port; //读并口数据到temp
            if(p_en==0)     //再判并口EN是否变低
            {
                if(p_rs==0)      //判原并口的接到LCD的rs管脚,0是指令,1是数据
                {
                    lcd_w(temp,0);//把读到的并口数据送到LCD1602
                }
                lcd_w(temp,1);
            }
        }

使用特权

评论回复
地板
yanwuxu|  楼主 | 2008-9-17 13:36 | 只看该作者

这是我临时画的简易示意图

使用特权

评论回复
5
gjg191| | 2008-9-17 13:50 | 只看该作者

o

那就看你单片机给 LCD送数的得时序对不对了,用并口送数的时序和单片急得比较一下

使用特权

评论回复
6
yanwuxu|  楼主 | 2008-9-17 14:02 | 只看该作者

谢谢gjg191的回复

那个时序手头没东西看,比较麻烦,要是有逻辑分析仪就方便了,应该是单片机读并送到LCD的状态/数据和并口送出来的不一样造成的,我想想是不是要增加什么电路来控制并口与LCD之间的数据传送!

使用特权

评论回复
7
农民讲习所| | 2008-9-17 14:02 | 只看该作者

不会设计的人太多了

lcd_w时刻并口来数据了,你怎么办?

设计应该分:并口驱动程序,LCD驱动程序....,驱动的概念知道吗?

使用特权

评论回复
8
yanwuxu|  楼主 | 2008-9-17 14:39 | 只看该作者

请农民讲习所多指教

请农民讲习所多指教

使用特权

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

本版积分规则

20

主题

441

帖子

1

粉丝