QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5808|回复: 27

关于LCD 液晶测试程序的问题

[复制链接]
发表于 2005-7-7 18:07:36 | 显示全部楼层 |阅读模式
我从lumit 的网站上下载了一个LCD 液晶测试程序,但是看了好多天,还是有很多的不明白,斑竹能不能给注释一下啊,谢了  
发表于 2005-7-8 23:31:20 | 显示全部楼层
好早以前写的,是参考了一个液晶的 pdf 手册,有些记不清放哪里了,其实就是最普通的那种字符型液晶驱动,初始化时写入一些特定的“控制字”,等后继的 Step 实验里面补上吧。
回复

使用道具 举报

 楼主| 发表于 2005-7-10 09:55:51 | 显示全部楼层
好的,谢谢斑竹
回复

使用道具 举报

 楼主| 发表于 2005-7-11 15:51:55 | 显示全部楼层
斑竹能不能把那个pdf手册给我啊,我想先看看,谢谢
回复

使用道具 举报

发表于 2005-7-19 10:09:22 | 显示全部楼层
好象是GXM1602C字符型液晶显示模块,但是在google和baidu上搜不到什么有用的信息。
回复

使用道具 举报

发表于 2005-7-19 10:31:12 | 显示全部楼层
GXM1602C技术手册在
http://www.guoxian.com/products/lcd/pdf-gx/GXM1602C.pdf
上下载
回复

使用道具 举报

发表于 2005-7-19 11:25:48 | 显示全部楼层
抱歉,帖子沉下去了没留意到,现在补上(见附件)!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2005-7-19 11:33:12 | 显示全部楼层
思路:
(1)通过GXM1602C技术手册了解16接口的意义。
(2)参看lumit4510的电路图了解到nECS1_LCD是最samsung4510b(pin 68)和LCD之间最重要的接口,
(3)参看um_sam4510b_rev1.pdf手册得知pin 68是nECS1。
(4)参看um_sam4510b_rev1.pdf手册得知EXTACON0端口是nECS1的控制端口。
(5)在参看李明写的tftp14源代码的lcd.h和lcd.c就比较容易了!!!
回复

使用道具 举报

 楼主| 发表于 2005-7-19 15:53:14 | 显示全部楼层
谢谢斑竹和chw75,我现在在看,呵呵
回复

使用道具 举报

 楼主| 发表于 2005-7-20 08:54:46 | 显示全部楼层
问斑竹一个问题啊,我们程序中用0x3fd0000这个地址初始化lcd,用0x3fd0002这个来写数据,这几个地址怎么来的呢?谢谢
回复

使用道具 举报

发表于 2005-7-20 12:08:23 | 显示全部楼层
解答:
(1)REFEXTCON的reset/value是0x00083fd.
(2)在lcd.h中
#define LCD_Addr_Base          ( ((REFEXTCON & 0x3FF) << 16 ) + 0x00004000 )
可得到0x3fd0000
(3)关于0x3fd0002写数据是根据lcd.h如下几行得到:
#define Lcd_Inst_Reg        0x0
#define Lcd_Data_Reg        0x2
#define Lcd_Reg_Write         0x0
#define Lcd_Reg_Read         0x1
#define LDATAWR  (LCD_Addr_Base+Lcd_Data_Reg+Lcd_Reg_Write)
为什么是0x3fd0002是因为0x3fd0000是base,0x0000002是与A0,A1地址
相连的LCDA0,LCDA0两根线。在LCD电路中,LCDA0功能上读写选择R/W,LCDA1功能是数据命令选择端RS.
回复

使用道具 举报

 楼主| 发表于 2005-7-20 16:25:19 | 显示全部楼层
也就是说A0,A1的地址就是给LCDA0和LCDA1的数据。它是通过什么来知道0x0000002就是A0和A1的地址呢?当我写数据时,我看程序是直接把要显示的数据给了0x3fd0002这个地址,好象没有用到那8条DATA线,是怎么回事呢?谢谢
回复

使用道具 举报

发表于 2005-7-20 19:42:40 | 显示全部楼层
sorry,可能是我没讲清楚。
lcd和S3c4510有八根数据线相连(DB0-DB7).
lcd和S3c4510有两根地址线相连(A0-A1).
因为lumit4510板上A0与读写选择R/W相连,而A1与数据命令选择端RS相连

可得到如下:
#define Lcd_Inst_Reg 0x0
#define Lcd_Data_Reg 0x2
#define Lcd_Reg_Write 0x0
#define Lcd_Reg_Read 0x1
可知道若向LCD写数据,则A0=0,A1=1,这就是为什么地址是0x0000002。


由以下可知道:
在snds.h中定义:
#define EXTDBWTH        (VPint(Base_Addr+0x3010))

在lcd.h中定义:
#define DSX1        (0x01 << 22)

在lcd.c中代码:
EXTDBWTH &= 0xff3fffff ;
EXTDBWTH |= DSX1 ;

设定lcd的传输数据宽度为8位,也就是用到DB7-DB0。
回复

使用道具 举报

 楼主| 发表于 2005-7-20 20:18:43 | 显示全部楼层
噢,谢谢了,呵呵。还有啊,把数据给了0x3fd0002也就是下面这个函数中的LcdDataWrAddr,是不是就是给了XDATA0——XDATA7?Addr和XDATA有对应关系吧?并且DATA是一个无符号字符型的,是不是要有一个字符——>8位数据的转换?才能给XDATA0——XDATA7?谢谢
void lPut_byte(U8 DATA)
{
        U8 *LcdDataWrAddr ;
        LcdDataWrAddr = (U8 *)LDATAWR ;
        *LcdDataWrAddr=  DATA ;
        WaitLcd(3) ;
}
回复

使用道具 举报

 楼主| 发表于 2005-7-21 14:56:22 | 显示全部楼层
chw75,呵呵,能不能把你的qq给我,我的是50548410,向你学习噢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-22 02:05 , Processed in 0.041615 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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