flyxyh 发表于 2005-7-7 18:07:36

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

我从lumit 的网站上下载了一个LCD 液晶测试程序,但是看了好多天,还是有很多的不明白,斑竹能不能给注释一下啊,谢了

limingth 发表于 2005-7-8 23:31:20

好早以前写的,是参考了一个液晶的 pdf 手册,有些记不清放哪里了,其实就是最普通的那种字符型液晶驱动,初始化时写入一些特定的“控制字”,等后继的 Step 实验里面补上吧。 :lol:

flyxyh 发表于 2005-7-10 09:55:51

好的,谢谢斑竹 :lol:

flyxyh 发表于 2005-7-11 15:51:55

斑竹能不能把那个pdf手册给我啊,我想先看看,谢谢 :P

chw75 发表于 2005-7-19 10:09:22

好象是GXM1602C字符型液晶显示模块,但是在google和baidu上搜不到什么有用的信息。

chw75 发表于 2005-7-19 10:31:12

GXM1602C技术手册在
http://www.guoxian.com/products/lcd/pdf-gx/GXM1602C.pdf
上下载

limingth 发表于 2005-7-19 11:25:48

抱歉,帖子沉下去了没留意到,现在补上(见附件)! :P

chw75 发表于 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就比较容易了!!!

flyxyh 发表于 2005-7-19 15:53:14

谢谢斑竹和chw75,我现在在看,呵呵 :P

flyxyh 发表于 2005-7-20 08:54:46

问斑竹一个问题啊,我们程序中用0x3fd0000这个地址初始化lcd,用0x3fd0002这个来写数据,这几个地址怎么来的呢?谢谢 :P

chw75 发表于 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.

flyxyh 发表于 2005-7-20 16:25:19

也就是说A0,A1的地址就是给LCDA0和LCDA1的数据。它是通过什么来知道0x0000002就是A0和A1的地址呢?当我写数据时,我看程序是直接把要显示的数据给了0x3fd0002这个地址,好象没有用到那8条DATA线,是怎么回事呢?谢谢 :P

chw75 发表于 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。

flyxyh 发表于 2005-7-20 20:18:43

噢,谢谢了,呵呵。还有啊,把数据给了0x3fd0002也就是下面这个函数中的LcdDataWrAddr,是不是就是给了XDATA0——XDATA7?Addr和XDATA有对应关系吧?并且DATA是一个无符号字符型的,是不是要有一个字符——>8位数据的转换?才能给XDATA0——XDATA7?谢谢 :P
void lPut_byte(U8 DATA)
{
        U8 *LcdDataWrAddr ;
        LcdDataWrAddr = (U8 *)LDATAWR ;
        *LcdDataWrAddr=DATA ;
        WaitLcd(3) ;
}

flyxyh 发表于 2005-7-21 14:56:22

chw75,呵呵,能不能把你的qq给我,我的是50548410,向你学习噢 :P
页: [1] 2
查看完整版本: 关于LCD 液晶测试程序的问题