打印
[STM32F1]

求解决STM32F103驱动TFT刷屏

[复制链接]
3997|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#include"tftlcd.h"
#define CSH  GPIO_SetBits(GPIOA,GPIO_Pin_1)
#define CSL  GPIO_ResetBits(GPIOA,GPIO_Pin_1)
#define WRH  GPIO_SetBits(GPIOA,GPIO_Pin_2)
#define WRL  GPIO_ResetBits(GPIOA,GPIO_Pin_2)
#define RSH  GPIO_SetBits(GPIOA,GPIO_Pin_3)
#define RSL  GPIO_ResetBits(GPIOA,GPIO_Pin_3)
#define RDH  GPIO_SetBits(GPIOA,GPIO_Pin_4)
#define RDL  GPIO_ResetBits(GPIOA,GPIO_Pin_4)
#define RESTH  GPIO_SetBits(GPIOA,GPIO_Pin_5)
#define RESTL  GPIO_ResetBits(GPIOA,GPIO_Pin_5)
void delayms( u16 x)
{
        unsigned int i,j;
        for(i=0;i<x;i++)
                for(j=0;j<72000;j++);
}

void RCC_config(void)
{

        RCC->APB2ENR|=1<<2;
        RCC->APB2ENR|=1<<3;
        GPIOA->CRL&=0xff00000f;
        GPIOA->CRL|=0x00333330;
        GPIOA->ODR|=0x003e;
        GPIOB->CRL&=0x00000000;
        GPIOB->CRL|=0x33333333;
        GPIOB->CRH&=0x00000000;
        GPIOB->CRH|=0x33333333;
        GPIOB->ODR|=0xffff;
}

void Write_Cmd(u16 address)
{
        CSL;
        RSL;
        GPIOB->ODR=address;
        WRL;
        WRH;
        CSH;
}
void Write_Dat(u16 date)
{       
        RSH;
        CSL;
        GPIOB->ODR=date;
        WRL;
        WRH;
        CSH;
}
void Write_Cmd_Dat(u16 address,u16 date)
{
Write_Cmd(address);       
Write_Dat(date);               
}

void Address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2)
{
        Write_Cmd_Dat(0x0044,(x2<<8)+x1);
        Write_Cmd_Dat(0x0045,y1);
        Write_Cmd_Dat(0x0046,y2);
        Write_Cmd_Dat(0x004e,x1);
        Write_Cmd_Dat(0x004f,y1);
    Write_Cmd(0x0022);                     
          
}
void Pant(unsigned int color)
{
        int i,j;
        Address_set(0,0,239,319);

    for(i=0;i<320;i++)
         {
          for (j=0;j<240;j++)
                   {
         Write_Dat(color);
            }

          }               
}
void LCD_Init()
{       
        RESTH;
    delayms(5);       
        RESTL;
        delayms(5);
        RESTH;
        delayms(5);
        CSH;
        RDH;
        WRH;
        delayms(5);
        Write_Cmd_Dat(0x0000,0x0001);    delayms(1);  //打开晶振
    Write_Cmd_Dat(0x0003,0xA8A4);    delayms(1);   //0xA8A4
    Write_Cmd_Dat(0x000C,0x0000);    delayms(1);   
    Write_Cmd_Dat(0x000D,0x080C);    delayms(1);   
    Write_Cmd_Dat(0x000E,0x2B00);    delayms(1);   
    Write_Cmd_Dat(0x001E,0x00B7);    delayms(1);   
    Write_Cmd_Dat(0x0001,0x2B3F);    delayms(1);   //驱动输出控制320*240  0x6B3F
    Write_Cmd_Dat(0x0002,0x0600);    delayms(1);
    Write_Cmd_Dat(0x0010,0x0000);    delayms(1);
    Write_Cmd_Dat(0x0011,0x6070);    delayms(1);        //0x4030           //定义数据格式  16位色
    Write_Cmd_Dat(0x0005,0x0000);    delayms(1);
    Write_Cmd_Dat(0x0006,0x0000);    delayms(1);
    Write_Cmd_Dat(0x0016,0xEF1C);    delayms(1);
    Write_Cmd_Dat(0x0017,0x0003);    delayms(1);
    Write_Cmd_Dat(0x0007,0x0233);    delayms(1);        //0x0233      
    Write_Cmd_Dat(0x000B,0x0000);    delayms(1);
    Write_Cmd_Dat(0x000F,0x0000);    delayms(1);        //扫描开始地址
    Write_Cmd_Dat(0x0041,0x0000);    delayms(1);
    Write_Cmd_Dat(0x0042,0x0000);    delayms(1);
    Write_Cmd_Dat(0x0048,0x0000);    delayms(1);
    Write_Cmd_Dat(0x0049,0x013F);    delayms(1);
    Write_Cmd_Dat(0x004A,0x0000);    delayms(1);
    Write_Cmd_Dat(0x004B,0x0000);    delayms(1);
    Write_Cmd_Dat(0x0044,0xEF00);    delayms(1);
    Write_Cmd_Dat(0x0045,0x0000);    delayms(1);
    Write_Cmd_Dat(0x0046,0x013F);    delayms(1);
    Write_Cmd_Dat(0x0030,0x0707);    delayms(1);
    Write_Cmd_Dat(0x0031,0x0204);    delayms(1);
    Write_Cmd_Dat(0x0032,0x0204);    delayms(1);
    Write_Cmd_Dat(0x0033,0x0502);    delayms(1);
    Write_Cmd_Dat(0x0034,0x0507);    delayms(1);
    Write_Cmd_Dat(0x0035,0x0204);    delayms(1);
    Write_Cmd_Dat(0x0036,0x0204);    delayms(1);
    Write_Cmd_Dat(0x0037,0x0502);    delayms(1);
    Write_Cmd_Dat(0x003A,0x0302);    delayms(1);
    Write_Cmd_Dat(0x003B,0x0302);    delayms(1);
    Write_Cmd_Dat(0x0023,0x0000);    delayms(1);
    Write_Cmd_Dat(0x0024,0x0000);    delayms(1);
    Write_Cmd_Dat(0x0025,0x8000);    delayms(1);
    Write_Cmd_Dat(0x004f,0);        //行首址0
    Write_Cmd_Dat(0x004e,0);        //列首址0
        Write_Cmd(0x0022);       
}
#ifndef  __TFTLCD_H
#define _TFTLCD_H
#include"stm32f10x.h"
#define u16 unsigned int
#define u8 unsigned char
void RCC_config(void);
void Write_Cmd(u16 address);
void Write_Cmd_dat(u16 date);
void Write_Cmd_Dat(u16 address,u16 date);
void LCD_Init(void);
void Pant(unsigned int color);
#endif


求解决
沙发
香水城| | 2014-5-4 16:40 | 只看该作者
官网上有个使用FSMC直接驱动TFT-LCD的例程和文档:

STSW-STM32093STM32 TFT-LCD direct drive demonstration firmware
(AN3241)

使用特权

评论回复
板凳
斗转乾坤|  楼主 | 2014-5-4 16:50 | 只看该作者
香水城 发表于 2014-5-4 16:40
官网上有个使用FSMC直接驱动TFT-LCD的例程和文档:

STSW-STM32093STM32 TFT-LCD direct drive demonstrati ...

谢谢:lol

使用特权

评论回复
地板
mmuuss586| | 2014-5-4 16:54 | 只看该作者
我也来补充点资料

FSMC.rar (3.21 MB)

使用特权

评论回复
5
斗转乾坤|  楼主 | 2014-5-6 15:08 | 只看该作者
mmuuss586 发表于 2014-5-4 16:54
我也来补充点资料

谢谢。

使用特权

评论回复
6
app1234| | 2014-9-1 16:25 | 只看该作者
我也来补充点资料

使用特权

评论回复
7
悲伤流逝| | 2014-9-2 09:34 | 只看该作者
好东西,留了

使用特权

评论回复
8
灰主牛| | 2014-9-23 11:12 | 只看该作者
好东西。

使用特权

评论回复
9
huangfeng33| | 2014-9-24 11:02 | 只看该作者
内部flash是该很快的,程序加优化,寄存器操作。

使用特权

评论回复
10
picasso101| | 2014-9-25 15:39 | 只看该作者
看看资料,正在学习

使用特权

评论回复
11
hsh| | 2015-7-22 15:07 | 只看该作者
谢谢奉献!!!

使用特权

评论回复
12
643757107| | 2015-7-22 21:14 | 只看该作者
不同的屏幕,驱动是不同的

使用特权

评论回复
13
643757107| | 2015-7-22 21:15 | 只看该作者
所以要对症下药啊。。看看自己选择的接口

使用特权

评论回复
14
来虚心学习| | 2015-8-16 17:25 | 只看该作者
好东西呀,学习了

使用特权

评论回复
15
仰望星空8583| | 2015-9-17 14:24 | 只看该作者
谢谢分享........

使用特权

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

本版积分规则

22

主题

70

帖子

2

粉丝