论坛风格切换切换到宽版
  • 7639阅读
  • 35回复

请教关于4位数据线LCD1602编程的问题 [复制链接]

上一主题 下一主题
离线adsldy
 
发帖
1216
只看楼主 倒序阅读 0楼 发表于: 2005-12-06
各位老大,偶最近用c语言写一个pic16f877a向lcd送数据的程序,显示屏用的是广议电子的1602a,根据长沙的那个数据手册(老实说这个手册很烂很烂!),编写了8位数据线方式的程序,没有问题。改成4位的就不可以,不是不显示就是乱码,实在高不懂问题出在哪里?
  网上流传着多种多样的说法,比如长沙的,要求送玩前三个38h之后,就要检测忙,而别的资料说初始化过程中都不能检测忙,不知道谁说得对?试过之后好像谁说的也不多。
  很多朋友说吧初始化的38改成28,然后分两次送就行了,呵呵。。。。。这样的话偶已经看到有99遍了,那位朋友能提供一个详细的操作流程?最好能有一个经过验证的例程,谢谢啦!
  因为我是从8位方式改的,所以低四位数据线没有拆,实际上是用8位数据线,只用其中的高4位,不知道是不是这个原因?
离线BG7KH
发帖
4815
只看该作者 1楼 发表于: 2005-12-06
'
各位老大,偶最近用c语言写一个pic16f877a向lcd送数据的程序,显示屏用的是广议电子的1602a,根据长沙的那个数据手册(老实说这个手册很烂很烂!),编写了8位数据线方式的程序,没有问题。改成4位的就不可以,不是不显示就是乱码,实在高不懂问题出在哪里?
  网上流传着多种多样的说法,比如长沙的,要求送玩前三个38h之后,就要检测忙,而别的资料说初始化过程中都不能检测忙,不知道谁说得对?试过之后好像谁说的也不多。
  很多朋友说吧初始化的38改成28,然后分两次送就行了,呵呵。。。。。这样的话偶已经看到有99遍了,那位朋友能提供一个详细的操作流程?最好能有一个经过验证的例程,谢谢啦!
  因为我是从8位方式改的,所以低四位数据线没有拆,实际上是用8位数据线,只用其中的高4位,不知道是不是这个原因?
'

请到我网站的ftp去下载。有很详细的162资料。
离线BG4UVR
发帖
11285
只看该作者 2楼 发表于: 2005-12-06
我也在研究这个问题,不过我找到了一个非常爽的工具。

可是,现在4bit方式还是没有成功 显示乱码
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
在线dtxy101
发帖
1662
只看该作者 3楼 发表于: 2005-12-06
一个非常爽的工具。
能共享一下吗
离线bg6qbt
发帖
7255
只看该作者 4楼 发表于: 2005-12-06
好软件
'
我也在研究这个问题,不过我找到了一个非常爽的工具。
可是,现在4bit方式还是没有成功 [表情] 显示乱码 [表情]
'

能email我一份吗? bg6qbt@hb165.com
离线BG7YDO
发帖
3654
只看该作者 5楼 发表于: 2005-12-06
我也想要,行不                       ?
离线8200
发帖
1976
只看该作者 6楼 发表于: 2005-12-06
我也想要一个,好吗?
离线wzx
发帖
473
只看该作者 7楼 发表于: 2005-12-06
我也想学习一下,bd3sn@163.com
离线bg6qbt
发帖
7255
只看该作者 8楼 发表于: 2005-12-06
不知道这个是不是
离线BG4UVR
发帖
11285
只看该作者 9楼 发表于: 2005-12-06
就是这个,大家自己下载吧,文件太大我帖不上来。

---

1. 请将softwaresimulator.rar 中的内容拷贝到
  uvision 的安装目录下的 \keil\c51\bin 中
 
2. 修改 tool.ini, 此文件位于 uvision 的安装
  目录 \keil 下.请将下面的内容 添加到 [c51]
  部分的后面.

agsi1=scope.dll ("scope simulation")
agsi2=lcd.dll ("lcd simulation")
agsi2=led_control.dll ("led simulation")
agsi3=i2c.dll ("i2c simulation")
agsi4=statemachine.dll ("8051 statemachine")
agsi5=signalgenerator.dll ("signal generator")
agsi6=timemeasure.dll ("time measure")

3. 重启uvsion. 进入debug 模式, 打开菜单
  peripheral, 发现增加了六项
分别是 scope, lcd-simul, led, i2c-simul,
8051 statemachine, signal generator,
time measure.
离线bg4jj
发帖
5094
只看该作者 10楼 发表于: 2005-12-06
哈哈 见者有份   。
离线adsldy
发帖
1216
只看该作者 11楼 发表于: 2005-12-06
'
请到我网站的ftp去下载。有很详细的162资料。
'

您的网站上的资料,我已经下载并参考了,同样没有通过测试
离线bg6qbt
发帖
7255
只看该作者 12楼 发表于: 2005-12-07
那个软件还是不会用
哪里有教程吗?.................................................
离线BG4UVR
发帖
11285
只看该作者 13楼 发表于: 2005-12-07
'
哪里有教程吗?.................................................
'

没有教程。

按上我上面帖子的步骤做过之后,在keil中,调试程序的时候,在“peripherals”中,选中“lcm-simul”,这时会显示出一个小窗口,就是“lcd-simulation”,在窗口中的空白部分,点右键选“add lcd”,左边选个型号(其时只要行数,每行字数对就可以了),右边选择lcm实际接线接在单片机的什么脚,比如我的1602数据接在了p1口,就把d7设置成“d:0x90^7”,d6设置成“d:0x90^6”,依此类推(0x90是p1口的地址,其中的“d:”是指地址类型是“i/o”)。

这个lcm默认只能设置成4bit模式,8bit的选择显示是灰的。不过通过保存设置,再修改设置文件,可以改成8bit,问题是,这个软件我发现只要你保存设置,就会工作不正常。

结论:
1、目前只能仿真4bit方式
2、保存设置不能使用

虽然存在上面的问题,但这东西还是不错的,可以仿真多种lcm,而不只1602。

另外,这个网站还提供了其他dll,功能更多。有示波器仿真、i2c仿真、led仿真等等,有兴趣的可以到

http://www.c51.de/c51.de/dateien/uvision2dlls.php?spr=en

自己去研究一下。
离线adsldy
发帖
1216
只看该作者 14楼 发表于: 2005-12-07
'
没有教程。
按上我上面帖子的步骤做过之后,在keil中,调试程序的时候,在“peripherals”中,选中“lcm-simul”,这时会显示出一个小窗口,就是“lcd-simulation”,在窗口中的空白部分,点右键选“add lcd”,左边选个型号(其时只要行数,每行字数对就可以了),右边选择lcm实际接线接在单片机的什么脚,比如我的1602数据接在了p1口,就把d7设置成“d:0x90^7”,d6设置成“d:0x90^6”,依此类推(0x90是p1口的地址,其中的“d:”是指地址类型是“i/o”)。
这个lcm默认只能设置成4bit模式,8bit的选择显示是灰的。不过通过保存设置,再修改设置文件,可以改成8bit,问题是,这个软件我发现只要你保存设置,就会工作不正常。
结论:
1、目前只能仿真4bit方式
2、保存设置不能使用
虽然存在上面的问题,但这东西还是不错的,可以仿真多种lcm,而不只1602。
另外,这个网站还提供了其他dll,功能更多。有示波器仿真、i2c仿真、led仿真等等,有兴趣的可以到
http://www.c51.de/c51.de/dateien/uvision2dlls.php?spr=en
自己去研究一下。
'


看来这个4位编程的问题还挺难得?
离线radiolee
发帖
6050
只看该作者 15楼 发表于: 2005-12-07
uvr只是在描述模拟器而已。
uvr干脆好人做到底,一步一步都截图开个教学贴吧,呵呵
离线BG4UVR
发帖
11285
只看该作者 16楼 发表于: 2005-12-07
OK,我帖图,还看不明白,我就再加说明文字吧
'
uvr只是在描述模拟器而已。
uvr干脆好人做到底,一步一步都截图开个教学贴吧,呵呵
'

ok,我帖图,还看不明白,我就再加说明文字吧
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线BG4UVR
发帖
11285
只看该作者 17楼 发表于: 2005-12-07
接着来
接着来图123456
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线BG4UVR
发帖
11285
只看该作者 18楼 发表于: 2005-12-07
'
看来这个4位编程的问题还挺难得?
'

估计不难,可能程序上有小错误。

我们不懂的问题,可能是某些人“不屑”的问题
离线radiolee
发帖
6050
只看该作者 19楼 发表于: 2005-12-07
多谢!我是en,rs,rw乱填的,呵呵。等下试试