查看: 983|回复: 0
打印 上一主题 下一主题

一个FPGA驱动LCD1602的实际实验,并使用LWLA1016逻辑分析观测

[复制链接]
跳转到指定楼层
沙发
发表于 2016-4-18 21:48:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
手头有块LCD1602,随便在这个神奇的AMOBBS论坛里面搜索了一下 FPGA LCD1602 搜到了一片帖子,地址如下:
http://www.amobbs.com/forum.php? ... ghlight=FPGA%2B1602
我就想动手链接了自己的FPGA开发板和LCD1602,为了观测和调试时序,我接上LWLA1016逻辑分析仪 。



我将原帖的附件直接下载下来,从HDL目录得到了全部的VERILOG源代码,在移植到自己的FPGA板子时候修改了RESET信号:原来的RESET信号是低电平有效,我的板子是高电平有效(即按下板子上的RESET键时,对应的FPGA引脚是高电平,松开按钮时是低电平),我设置了一个RESETIN信号,之后用wire RESET=~RESETIN ;这句转换成原来代码的复位方式。

使用TCL文件锁定管脚之后。设置代码与实际板子引脚的对应关系:


之后编译运行,一切正常.

以下是实现的效果。




为了观测时序,我接上了LWLA1016逻辑分析仪。设置好总线格式,设置好颜色,开始抓到这些:可以点击查看原图细节。

上图可以看到LCD—EN 高电平是持续时间是750NS。逻辑分析仪的分辨率是10NS。


没有将数据归整成组,总线数据没有法看。其他的图片都已经设置LCD——DATA的8根数据线为一组,并都以HEX形式显示。


LCD在复位时,LCD——RS为高,发送了多个配置命令,具体是X038,0X06,0X01。





上两图,图形任意缩放,查看脉宽。



另外把项目代码也上传上来。







在试验中有发现 :
1,LCD1602 模块使用3。3V完全可以,并且背光也完全可以直接接3。3V  。只是亮度明显不如5V供电。
2,LCD1602数据手册上给出的读写的时序是说单独的字节读或者写,连续写多个数据时,要注意每次写之间有足够长的时间间隔!
3,这个代码实现的是一个秒表,当时秒表部分逻辑有错误,没有实现好,单纯说LCD1602的驱动部分还是很优秀,并且也可以修改成很通用的。
4,LCD1602的控制部分用到了两个有限状态机嵌套,并且各自采用了一个COUNTER延时,可以灵活参数化,代码作者水平比较高。
5,LWLA1016逻辑分析仪可以将任意通路的数据位设置在一个组里组成一个字节,字,等方便查看,并且组内的权位任意调换,灵活之至。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表