OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7085|回复: 1

LCD68042 驱动问题

[复制链接]

42

主题

173

帖子

0

精华

高级会员

Rank: 4

积分
549
金钱
549
注册时间
2013-6-18
在线时间
59 小时
发表于 2013-8-8 15:58:26 | 显示全部楼层 |阅读模式

根据原子哥的自己动手写了个如下:   

  typedef struct     
{
 u16 CMD;       //写命令
 u16 DATA;     //写数据
}RS;
#define LCD ((RS *)((u32)(0x6c0007fe)))       

void LCD_WR_CMD(u16 cmd)
{
 LCD->CMD=cmd;
}

void LCD_WR_DATA(u16 data)
{
 LCD->DATA=data;
}

u16 LCD_RD_DATA(void)
{
 return LCD->DATA;
}


void LCD_WR_Register(u16 cmd,u16 data)
{
 LCD->CMD=cmd;
 LCD->DATA=data;
}

void Write_RAM_Start(void)
{
 LCD_WR_CMD(0x2c);
}
//LCD Display Status
void LCD_Display(u8 dis)
{
 switch(dis)
 {
  case 0CD_WR_CMD(0x29);break;//Display ON
  case 1CD_WR_CMD(0x28);break;//Display OFF
  default:break;
 }
}
void LCD_SetCursor(u16 xpos,u16 ypos)//定点函数
{
 LCD_WR_CMD(0x2a);
 LCD_WR_DATA(xpos>>8);
 LCD_WR_DATA(xpos&0xff);
 LCD_WR_CMD(0x2b);
 LCD_WR_DATA(ypos>>8);
 LCD_WR_DATA(ypos&0xff);
}
void LCD_Scan_Direction(void)      //GRAM 显示方向 (LCD扫描方向)左到右 上到下(默认竖屏)
{
 LCD_WR_Register(0x36,0x0a);
 LCD_WR_CMD(0x2a);
  LCD_WR_DATA(0);LCD_WR_DATA(0);
  LCD_WR_DATA((320-1)>>8);LCD_WR_DATA((320-1)&0XFF);
  LCD_WR_CMD(0x2b);
  LCD_WR_DATA(0);LCD_WR_DATA(0);
  LCD_WR_DATA((480-1)>>8);LCD_WR_DATA((480-1)&0XFF);
}

void LCD_DrawPoint(u16 xpos,u16 ypos,u16 color)//画点
{
 LCD_SetCursor(xpos,ypos);
 Write_RAM_Start();
 LCD_WR_DATA(color);
}

void LCD_Init(void)
{            
 ……

//这里省略一些寄存器配置和驱动初始化代码
  
 LCD_Scan_Direction();
 BackLight=1;     
 LCD_Clear(WHITE); //这里有问题了

}
void LCD_Clear(u16 color)//清屏函数
{
 u16 i;
 LCD_SetCursor(0x0000,0x0000);
 Write_RAM_Start();
 for(i=0;i<320*480;i++)
 {
  LCD->DATA=color;
 }
}

其他函数略

上电调试发现,LCD初始化函数中执行清屏函数的时候,如上面红字部分出问题了,用j-link仿真发现for循环一直在进行不能结束,初步怀疑是GRAM显示方向函数(LCD扫描)有问题,

但这个函数(如上绿色部分)是根据原子哥的简化而来,不知道哪里有问题,求大神指导!

只为摆正你的倒影,我倾倒了整个世界。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-8 17:37:19 | 显示全部楼层
i是u16的.
最大是65535
你算算320*480,是多大??
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-15 11:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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