OpenEdv-开源电子网

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

TFT驱动时序

[复制链接]

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-12-3
在线时间
31 小时
发表于 2013-12-8 19:58:40 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165538
金钱
165538
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-8 23:50:20 | 显示全部楼层
你自己怎么理解的?
我告诉你一些简单的信息:
1,NCS是片选,任何8080并口操作都要在CS位低电平的时候才可以有效.
2,DNC是数据/命令控制线,DNC=0表示是命令,DNC=1表示是数据.
NRD,是读信号.
NWR,是写信号
DB7~0,就是数据线了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-12-3
在线时间
31 小时
 楼主| 发表于 2013-12-10 13:07:17 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我明白了,,不过又有新的问题了。
#include"tft.h"
#include "stm32f10x_lib.h"


//====================================================================
void delay_ms(unsigned short time)  //延时函数

unsigned short i,j;
  for(i=0;i<time;i++)
   for(j=0;j<10260;j++);
}
//====================================================================

void LCD_WR_REG(u16 cmd)
{
  LCD_CS=0;
  LCD_RS=0;
  LCD_RD=1;
  WRDATAOUT(cmd);
  LCD_WR=0;
  LCD_WR=1;
  LCD_CS=1;

}

void LCD_WR_DATA(u16 data)
{
  LCD_CS=0;
  LCD_RS=1;
  LCD_RD=1;
  WRDATAOUT(data);
  LCD_WR=0;
  LCD_WR=1;
  LCD_CS=1;

}

void LCD_WR_CMD_DATA(u16 cmd,u16 data )
{
  LCD_WR_REG(cmd);
  LCD_WR_DATA(data);
}

//-----------------------------------------------------------------------------
//  窗口设置子程序
//-----------------------------------------------------------------------------
void window_position(int Horizontal_start,int Horizontal_end,int Vertical_start,int Vertical_end)
{
  LCD_WR_CMD_DATA(0x02, Horizontal_start); // Horizontal GRAM Start Address
  LCD_WR_CMD_DATA(0x03, Horizontal_start); // Horizontal GRAM Start Address
  LCD_WR_CMD_DATA(0x04, Horizontal_end); // Horizontal GRAM End Address
  LCD_WR_CMD_DATA(0x05, Horizontal_end); // Horizontal GRAM End Address

  LCD_WR_CMD_DATA(0x06, Vertical_start); // Vertical GRAM Start Address
  LCD_WR_CMD_DATA(0x07, Vertical_start); // Vertical GRAM Start Address
  LCD_WR_CMD_DATA(0x08, Vertical_end); // Vertical GRAM Start Address
  LCD_WR_CMD_DATA(0x09, Vertical_end); // Vertical GRAM Start Address
  
  LCD_WR_REG(0x22);                        // write data to GRAM  
}

 //-----------------------------------------------------------------------------
// 清屏
//-----------------------------------------------------------------------------

void Clear(void)
{
    int i,j;
 window_position(0,239,0,399); 
   for(i=0;i<240;i++)  
   {
    for(j=0;j<400;j++)
    {
      
      LCD_WR_DATA(0xffff);
   LCD_WR_REG(0x22); 
    }
   } 
 
}
void LCD_Init(void)
{
//****240*400 BOE+HX8352-C**///
delay_ms(10);
//Power Voltage Setting
LCD_WR_REG(0x001A); LCD_WR_DATA(0x0002); //BT
LCD_WR_REG(0x001B); LCD_WR_DATA(0x0088); //VRH
//****VCOM offset**///
LCD_WR_REG(0x0023); LCD_WR_DATA(0x0000); //SEL_VCM
LCD_WR_REG(0x0024); LCD_WR_DATA(0x005F); //VCM
LCD_WR_REG(0x0025); LCD_WR_DATA(0x0015); //VDV
LCD_WR_REG(0x002D); LCD_WR_DATA(0x0003); //NOW[2:0]=011
//Power on Setting
LCD_WR_REG(0x0018); LCD_WR_DATA(0x0004); //Frame rate 72Hz
LCD_WR_REG(0x0019); LCD_WR_DATA(0x0001); //OSC_EN='1', start Osc
LCD_WR_REG(0x0001); LCD_WR_DATA(0x0000); //DP_STB='0', out deep sleep
LCD_WR_REG(0x001F); LCD_WR_DATA(0x0088); //STB=0
delay_ms(5);
LCD_WR_REG(0x001F); LCD_WR_DATA(0x0080); //DK=0
delay_ms(5);
LCD_WR_REG(0x001F); LCD_WR_DATA(0x0090); //PON=1
delay_ms(5);
LCD_WR_REG(0x001F); LCD_WR_DATA(0x00D0); //VCOMG=1
delay_ms(5);
//262k/65k color selection
LCD_WR_REG(0x0017); LCD_WR_DATA(0x0005); //default 0x06 262k color // 0x05 65k color
//SET ANEL
LCD_WR_REG(0x0036); LCD_WR_DATA(0x0013); //REV_P, SM_P, GS_P, BGR_P, SS_P
/*LCD_WR_REG(0x0029); LCD_WR_DATA(0x0031); //400 lines
LCD_WR_REG(0x0071); LCD_WR_DATA(0x001A); //RTN*/
//Gamma 2.2 Setting
LCD_WR_REG(0x0040); LCD_WR_DATA(0x0000);
LCD_WR_REG(0x0041); LCD_WR_DATA(0x0045);
LCD_WR_REG(0x0042); LCD_WR_DATA(0x0045);
LCD_WR_REG(0x0043); LCD_WR_DATA(0x0004);
LCD_WR_REG(0x0044); LCD_WR_DATA(0x0000);
LCD_WR_REG(0x0045); LCD_WR_DATA(0x0008);
LCD_WR_REG(0x0046); LCD_WR_DATA(0x0023);
LCD_WR_REG(0x0047); LCD_WR_DATA(0x0023);
LCD_WR_REG(0x0048); LCD_WR_DATA(0x0077);
LCD_WR_REG(0x0049); LCD_WR_DATA(0x0040);

LCD_WR_REG(0x004A); LCD_WR_DATA(0x0004);
LCD_WR_REG(0x004B); LCD_WR_DATA(0x0000);
LCD_WR_REG(0x004C); LCD_WR_DATA(0x0088);
LCD_WR_REG(0x004D); LCD_WR_DATA(0x0088);
LCD_WR_REG(0x004E); LCD_WR_DATA(0x0088);
//Set GRAM Area
LCD_WR_REG(0x0002); LCD_WR_DATA(0x0000);
LCD_WR_REG(0x0003); LCD_WR_DATA(0x0000); //Column Start
LCD_WR_REG(0x0004); LCD_WR_DATA(0x0000);
LCD_WR_REG(0x0005); LCD_WR_DATA(0x00EF); //Column End
LCD_WR_REG(0x0006); LCD_WR_DATA(0x0000);
LCD_WR_REG(0x0007); LCD_WR_DATA(0x0000); //Row Start
LCD_WR_REG(0x0008); LCD_WR_DATA(0x0001);//0001
LCD_WR_REG(0x0009); LCD_WR_DATA(0x008F); //Row End00AF
//Display ON Setting
LCD_WR_REG(0x0028); LCD_WR_DATA(0x0038); //GON=1, DTE=1, D=10
delay_ms(40);
LCD_WR_REG(0x0028); LCD_WR_DATA(0x003F); //GON=1, DTE=1, D=11
LCD_WR_REG(0x0022); //Start GRAM write

// Enter Sleep mode Setting
LCD_WR_REG(0x0028); LCD_WR_DATA(0x0038); //GON=??DTE=??D[1:0]=?0?
delay_ms(40);
LCD_WR_REG(0x001F); LCD_WR_DATA(0x0089); // GAS=1, VOMG=0, ON=0, DK=1, XDK=0, DVDH_TRI=0, STB=1
delay_ms(40);
LCD_WR_REG(0x0028); LCD_WR_DATA(0x0020); //GON=??DTE=??D[1:0]=?0?
delay_ms(40);
LCD_WR_REG(0x0019); LCD_WR_DATA(0x0000); //OSC_EN=??
delay_ms(5);
// Exit Sleep mode Setting
LCD_WR_REG(0x0019); LCD_WR_DATA(0x0001); //OSC_EN='1', start Osc
LCD_WR_REG(0x001F); LCD_WR_DATA(0x0088); //STB=0
delay_ms(5);
LCD_WR_REG(0x001F); LCD_WR_DATA(0x0080); //DK=0
delay_ms(5);
LCD_WR_REG(0x001F); LCD_WR_DATA(0x0090); //PON=1
delay_ms(5);
LCD_WR_REG(0x001F); LCD_WR_DATA(0x00D0); //VCOMG=1
delay_ms(5);
LCD_WR_REG(0x0028); LCD_WR_DATA(0x0038); //GON=1, DTE=1, D=10
delay_ms(40);
LCD_WR_REG(0x0028); LCD_WR_DATA(0x003F); //GON=1, DTE=1, D=11
LCD_WR_REG(0x22);
}



我这样初始化之后然后再清屏结果屏幕始终没反应,,怎么解啊!!!>
回复 支持 反对

使用道具 举报

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-12-3
在线时间
31 小时
 楼主| 发表于 2013-12-10 13:08:25 | 显示全部楼层
回复【3楼】临海观雪:
---------------------------------
回复【2楼】正点原子:
---------------------------------
屏幕是HX8352C
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165538
金钱
165538
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-10 22:52:01 | 显示全部楼层
回复【4楼】临海观雪:
---------------------------------
慢慢折腾。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165538
金钱
165538
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-10 22:52:19 | 显示全部楼层
先读ID,这是第一步,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-12-3
在线时间
31 小时
 楼主| 发表于 2013-12-11 11:01:12 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
终于初始化成功了,,我想问下,,void Show_picture(u16 *a)
{
    u16 i,j;
 WINDOWS_Init(0,0x00f0 ,0, 0x0190);

for(j=0;j<241;j++)
{
   for(i=0;i<401;i++)
   {
             LCD_WR_DATA(*a);
     a++;
}
 }
}
这样写的图形显示函数有什么不妥吗
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165538
金钱
165538
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-11 15:47:55 | 显示全部楼层
回复【7楼】临海观雪:
---------------------------------
也可以啊
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-12-3
在线时间
31 小时
 楼主| 发表于 2013-12-11 19:48:49 | 显示全部楼层
回复【8楼】正点原子:回复【8楼】正点原子:
---------------------------------
关键每次存了图片数组显示出来就完全不对了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-15 15:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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