打印
[ZLG-ARM]

请教下用sed1335控制液晶得问题

[复制链接]
2576|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hpqhpq|  楼主 | 2007-3-29 21:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在EASY2200上调液晶,用自带得液晶跑得通,项目需要,换了款基于1335控制器得液晶,用得是总线方式,调了好久也没弄通,程序如下:
程序说明:程序中有些中间调试过程,看了不少帖子,说是加延时或读忙状态,都还是不行

其中BCFG3 = 0x1000FFEF都不行

还有个很奇怪得问题:把CS直接接地,液晶就能初始化成功,但显示得乱七八糟得,想想可能和RAM访问有关(程序在RAM中运行得)
还有接线得时候偷懒了一下,直接就基本上接在以前得液晶接口上得,只是调节了一下线得位置,兼容性好像还不赖

各位帮帮忙哈~~~~~

#include "config.h"

TCOLOR      gui_disp_buf[GUI_LCM_YMAX][GUI_LCM_XMAX/8];                // 声明GUI显示缓冲区

/* 定义LCM地址 */
#define  TG240128_COM        (*((volatile unsigned short *) 0x83000002))
#define  TG240128_DAT        (*((volatile unsigned short *) 0x83000000))


#define  Busy           0x40


#define Wait_For_Busy()     while (LCD_ReadState()& Busy);
#define delay(x)   {unsigned char i=x; while(i--);}
/**********************************************************************
* 名称:LCD_ReadState()
* 功能:读取状态字子程序。
* 入口参数:无
* 出口参数:返回值即为读出的状态字
* 说明:函数会设置LCD数据总线为输入方式
***********************************************************************/
#define LCD_ReadState()  TG240128_COM
/**********************************************************************
* 名称:LCD_WriteCommand()
* 功能:写命令子程序。(发送命令前,不检查液晶模块的状态)
* 入口参数:command       要写入LCD的命令字
* 出口参数:无
* 说明:函数会设置LCD数据总线为输出方式
***********************************************************************/
#define   LCD_WriteCommand(command)     {/*Wait_For_Busy();*/TG240128_COM = (unsigned short)(command);/* delay(15);*/ }
/**********************************************************************
* 名称:LCD_WriteData()
* 功能:写数据子程序。(发送数据前,不检查液晶模块的状态)
* 入口参数:dat       要写入LCD的数据
* 出口参数:无
* 说明:函数会设置LCD数据总线为输出方式
***********************************************************************/
#define LCD_WriteData(dat)     {/*Wait_For_Busy();*/TG240128_DAT = (unsigned short)(dat);/*delay(100);*/}


/* SED1335 命令定义 */
#define LCD_SYS_SET         0x40         /* 初始化,显示窗口设置 参数8个 */
#define LCD_SLEEP_IN        0x53         /* 空闲操作 参数0个         */

#define LCD_DIS_ON          0x59         /* 显示开 参数1个           */
#define LCD_DIS_OFF         0x58         /* 显示关 参数1个           */
#define LCD_SCR_OLL         0x44         /* 设置显示区域,卷动 参数10个 */
#define LCD_CSR_FOM         0x5D         /* 设置光标形状 参数2个       */
#define LCD_CGR_ADD         0x50         /* 设置CGRAM起始地址 参数2个   */
#define LCD_CSR_DIR         0x4C         /* 设置光标移动方向 参数0个   */
#define LCD_DOT_DIR         0x5A         /* 设置点单元卷动位置 参数1个   */
#define LCD_DIS_OVR         0x5B         /* 设置合成显示方式 参数1个   */

#define LCD_CSR_WR           0x46         /* 设置光标位置 参数2个       */
#define LCD_CSR_RD           0x47         /* 读出光标位置 参数2个       */

#define LCD_MEM_WR           0x42         /* 写入显示缓冲区           */
#define LCD_MEM_RD           0x43         /* 从显示缓冲区读出         */

#define GET_LOW_BYTE(DAT)    ((unsigned short)((DAT)&0xff))            /*取DAT的低8位*/
#define GET_HIG_BYTE(DAT)    ((unsigned short)((DAT)>>8))                /*取DAT的高8位*/

unsigned char  DCB_HEX_TAB[8] = {0x80, 0x40, 0x20, 0x10, 0x08,0x04, 0x02, 0x01};
unsigned char  SYS_INIT_DAT[8] = {0x30, 0x87, 0x07, 0x27, 0x42,0xef, 0x28, 0x00};//{0x30, 0x87, 0x07, 0x27, 0x2F,0xef, 0x28, 0x00};
unsigned char  SCROLL_DAT[10] = {0x00, 0x00, 0xf0, 0x80, 0x25, 0xF0, 0x80, 0x50,0x00,0x60};//{0x00, 0x00, 0xF0, 0xb0, 0x04, 0xf0, 0x80, 0x50,0x00,0x60};

/****************************************************************************
* 名称:DelayNS()
* 功能:长软件延时
* 入口参数:dly        延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void  DelayS(uint16  dly)
{  uint32  ii;
   for(ii=0; ii<dly; ii++);
}

void  GUI_Initialize(void)

  unsigned char i;
  LCD_WriteCommand(LCD_SYS_SET);     // 
  DelayS(15);
  for(i=0 ; i < 8 ; i++)
    {LCD_WriteData(SYS_INIT_DAT);
    DelayS(15);
    }

  LCD_WriteCommand(LCD_SCR_OLL); DelayS(15);    // 
  for(i=0 ; i < 10 ; i++)
    {LCD_WriteData(SCROLL_DAT);DelayS(15);}
       
  LCD_WriteCommand(LCD_DOT_DIR);DelayS(15);     // 
  LCD_WriteData(0x00);   DelayS(15);
  LCD_WriteCommand(LCD_DIS_OVR); DelayS(15);    // 
  LCD_WriteData(0x0C);     DelayS(15);
  LCD_WriteCommand(LCD_DIS_ON); DelayS(15);    // 
  LCD_WriteData(0x04);DelayS(15);
  LCD_WriteCommand(LCD_CSR_WR);     // 
  LCD_WriteData(0x00); 
  LCD_WriteData(0x00);
  LCD_WriteCommand(LCD_CSR_DIR);     // 
  LCD_FillAll(0);
  
}

相关帖子

沙发
foyyof| | 2007-3-30 08:56 | 只看该作者

在以前的帖子里搜索 S1D1335,有很多!

++++

使用特权

评论回复
板凳
hpqhpq|  楼主 | 2007-3-30 09:30 | 只看该作者

搜过,但还是没解决~~~~

不知道是啥问题

使用特权

评论回复
地板
hpqhpq|  楼主 | 2007-3-30 10:03 | 只看该作者

兄弟们,帮帮忙哦,调好久了

能不能把BCFG得参数说一下,应该是大一点好把?

使用特权

评论回复
5
hpqhpq|  楼主 | 2007-3-30 13:38 | 只看该作者

是啊

是呀,就是320×240得,哪里有问题哦~
以前在单片机上用得就是那种初始化参数哦
没什么问题得呀

使用特权

评论回复
6
hpqhpq|  楼主 | 2007-3-30 13:55 | 只看该作者

楼上得蝈蝈能不能给个例子

使用特权

评论回复
7
hpqhpq|  楼主 | 2007-3-30 14:06 | 只看该作者

自己说一下,我已经把总线得时序设成最宽了~

还加了延时,还是不行

使用特权

评论回复
8
xwj| | 2007-3-30 14:29 | 只看该作者

呵呵,谁在玩蝈蝈啊?好抓吗?

使用特权

评论回复
9
leishasha| | 2007-3-30 16:00 | 只看该作者

try

在 lcmdrv.h中有个定义,不知道改了没

/* 定义LCM像素数宏 */
#define  GUI_LCM_XMAX        128                                 /* 定义液晶x轴的像素数 */
#define  GUI_LCM_YMAX        64                                 /* 定义液晶y轴的像素数 */

使用特权

评论回复
10
hpqhpq|  楼主 | 2007-3-30 16:22 | 只看该作者

改了得呀,都还是没反应

使用特权

评论回复
11
hpqhpq|  楼主 | 2007-3-30 16:32 | 只看该作者

有没有兄弟们是直接在EASYARM2200上调sed1335呢?

使用特权

评论回复
12
leishasha| | 2007-3-30 16:39 | 只看该作者

可能情况

你最好再看看液晶芯片的资料,也不知道你是不是用图形方式显示,如果ok,则是不需要把数据送到CGRAM中,而是直接送的

使用特权

评论回复
13
hpqhpq|  楼主 | 2007-3-30 17:09 | 只看该作者

我以前在单片机上调通过得,液晶得初始化程序应该没啥问

使用特权

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

本版积分规则

3

主题

17

帖子

1

粉丝