0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TFTLCD顯示實(shí)驗(yàn)

汽車電子技術(shù) ? 來(lái)源:滑小稽筆記 ? 作者:電子技術(shù)園地 ? 2023-03-01 15:54 ? 次閱讀

10.1 概述

之前在51為核心的系統(tǒng)里面,常用的顯示器件有LED,數(shù)碼管,LCD1602和LCD12864,這些器件都有一個(gè)共同的特點(diǎn),那就是只有一個(gè)顏色,沒(méi)有辦法顯示彩色圖片,為了顯示彩色圖片,我們引入了TFT顯示模組。TFT-LCD即薄膜晶體管液晶顯示器。其英文全稱為:ThinFilmTransistor-Liquid Crystal Display。TFT-LCD與無(wú)源TN-LCD、STN-LCD的簡(jiǎn)單矩陣不同,它在液晶顯示屏的每一個(gè)象素上都設(shè)置有一個(gè)薄膜晶體管(TFT),可有效地克服非選通時(shí)的串?dāng)_,使顯示液晶屏的靜態(tài)特性與掃描線數(shù)無(wú)關(guān),因此大大提高了圖像質(zhì)量。TFT-LCD也被叫做真彩液晶顯示器。

   目前常用的TFT顯示模組按照接口類型可以分為MCU屏幕與RGB屏幕,其中MCU在STM32F1系列中比較常用,原因是MCU屏幕內(nèi)部集成了顯示控制器,只需要按照手冊(cè)指定的協(xié)議將輸入發(fā)送過(guò)去即可,但是MCU屏幕受限于屏幕尺寸,一般不會(huì)超過(guò)4.3英寸,RGB屏幕內(nèi)部沒(méi)有控制器,需要單片機(jī)或者CPU自帶控制器,但是RGB屏幕尺寸較大,且刷新速度快,通用性強(qiáng),在生活中使用的更廣泛,由于STM32F1單片機(jī)中沒(méi)有RGB控制器(LTDC模塊),所以采用核心為5510的TFT屏幕來(lái)進(jìn)行TFT顯示實(shí)驗(yàn)。

:我們?cè)诰W(wǎng)上看到的大尺寸MCU屏幕一般都是以屏幕+PCB的形式,這是因?yàn)榘遄由蠑y帶了8080并口轉(zhuǎn)RGB芯片,所以這種情況下,也可以使用MCU屏幕的驅(qū)動(dòng)方式來(lái)進(jìn)行驅(qū)動(dòng)。

10.2 TFTLCD模塊原理圖

10.2.1 接口描述

以2.8英寸TFT為例,實(shí)物圖片如下圖所示。

圖片

10.2.2 原理圖

圖片

RST:復(fù)位端口,高電平有效

CS:片選,低電平有效

RS:數(shù)據(jù)命令選擇,低電平代表命令,高電平代表數(shù)據(jù)

WR:寫(xiě)控制,高電平有效

RD:讀控制,高電平有效

DB0~DB15:16位并行數(shù)據(jù)口

VCC:電源正極

GND:電源負(fù)極

LEDK:背光LED負(fù)極

LEDA:背光LED正極

Y-:觸摸屏Y軸數(shù)據(jù)

X-:觸摸屏X軸數(shù)據(jù)

Y+:觸摸屏Y軸數(shù)據(jù)

X+:觸摸屏X軸數(shù)據(jù)

10.3 FSMC

10.3.1 FSMC簡(jiǎn)介

FSMC,即靈活的靜態(tài)存儲(chǔ)控制器,能夠與同步或異步存儲(chǔ)器和16位PC存儲(chǔ)器卡連接,STM32F1的FSMC接口支持包括SRAM、NANDFLASH、NOR FLASH和PSRAM等存儲(chǔ)器。一般大容量,且引腳數(shù)目在100腳及以上的 STM32F103芯片都帶有FSMC接口,F(xiàn)SMC的框圖如圖所示。

圖片

從上圖可知,STM32的FSMC將設(shè)備分為3種:NOR/PSRAM設(shè)備,NAND設(shè)備和PC設(shè)備,共用地址數(shù)據(jù)總線等信號(hào),通過(guò)CS端口來(lái)區(qū)分不同的設(shè)備,比如我們這個(gè)實(shí)驗(yàn)中LCD的片選就是接在FSMC_NE4端口上,其實(shí)本質(zhì)上就是把TFTLCD作為SRAM來(lái)控制。

   外部SRAM設(shè)備的連接一般有地址線(A0~A18),數(shù)據(jù)線(D0~D15),寫(xiě)信號(hào)(WR),讀信號(hào)(RD)和片選,TFTLCD顯然除了不具備地址線,其他的信號(hào)都是具備的,所以我們可以采用SRAM的方式來(lái)進(jìn)行TFT的控制,這種控制方式的好處就是對(duì)比傳統(tǒng)的GPIO翻轉(zhuǎn)可以更快的將數(shù)據(jù)送入TFT。

   STM32F1的FSMC支持8/16/32位數(shù)據(jù)寬度,我們的TFT模塊采用的是16位數(shù)據(jù)寬度,所以只需要將FSMC配置為外置16位寬度即可。FSMC的外部存儲(chǔ)器劃分為了固定的4個(gè)256 M的存儲(chǔ)塊,如下圖所示。

圖片

我們?cè)隍?qū)動(dòng)TFTLCD的時(shí)候,用到的存儲(chǔ)塊是塊1,STM32將FSMC的存儲(chǔ)塊1分為4個(gè)區(qū),每個(gè)區(qū)管理64M的空間,每個(gè)區(qū)都有獨(dú)立的寄存器對(duì)連接的存儲(chǔ)器進(jìn)行配置,BANK1的256M空間由28根地址線尋址,這28根地址線如下表所示,其中低26個(gè)位來(lái)自外部存儲(chǔ)器的地址,我們可以將TFTLCD的片選接在低26位上,通過(guò)發(fā)送地址來(lái)選中片選,只有高2位才是內(nèi)部可以控制的。
BANK1區(qū)域 片選 地址范圍 地址線
[27:26] [25:0]
區(qū)域1 NE1 0x60000000 ~ 0x63FFFFFF 00
區(qū)域2 NE2 0x64000000 ~ 0x67FFFFFF 01
區(qū)域3 NE3 0x68000000 ~ 0x6BFFFFFF 10
區(qū)域4 NE4 0x6C000000 ~ 0x6FFFFFFF 11

注:

當(dāng)Bank1接的是16位寬度存儲(chǔ)器的時(shí)候:地址線的[25:1]對(duì)應(yīng)FSMC_A[24:0]

當(dāng)Bank1接的是8位寬度存儲(chǔ)器的時(shí)候:地址線的[25:0]對(duì)應(yīng)FSMC_A[25:0]

對(duì)于NOR FLASH控制器,主要通過(guò)3個(gè)寄存器來(lái)設(shè)置FSMC的時(shí)序參數(shù),NORFLASH控制器支持同步和異步突發(fā)兩種訪問(wèn)方式。

   選用同步突發(fā)訪問(wèn)方式時(shí),FSMC將系統(tǒng)時(shí)鐘分頻后,發(fā)送給外部存儲(chǔ)器作為同步時(shí)鐘信號(hào) FSMC_CLK。此時(shí)需要的設(shè)置的時(shí)間參數(shù)有2個(gè),即系統(tǒng)時(shí)鐘HCLKFSMC_CLK的分頻系數(shù)(可以2~16分頻),同步突發(fā)訪問(wèn)中獲取第一個(gè)數(shù)據(jù)所需要的等待延遲。

   選用異步突發(fā)訪問(wèn)方式時(shí),則需要設(shè)置3個(gè)時(shí)間參數(shù):地址建立時(shí)間、數(shù)據(jù)建立時(shí)間和地址保持時(shí)間。FSMC綜合了SRAM/ROM、PSRAMNOR Flash產(chǎn)品的信號(hào)特點(diǎn),定義了4種不同的異步時(shí)序模型。選用不同的時(shí)序模型時(shí),需要設(shè)置不同的時(shí)序參數(shù)。

   在實(shí)際擴(kuò)展時(shí),根據(jù)選用存儲(chǔ)器的特征確定時(shí)序模型,從而確定各時(shí)間參數(shù)與存儲(chǔ)器讀/寫(xiě)周期參數(shù)指標(biāo)之間的計(jì)算關(guān)系,利用該計(jì)算關(guān)系和存儲(chǔ)芯片數(shù)據(jù)手冊(cè)中給定的參數(shù)指標(biāo),可計(jì)算出FSMC所需要的各時(shí)間參數(shù),從而對(duì)時(shí)間參數(shù)寄存器進(jìn)行合理的配置。

   我們現(xiàn)在使用異步模式A方式來(lái)控制LCD,模式A的讀操作時(shí)序如下圖所示。

圖片

模式A支持獨(dú)立的讀寫(xiě)時(shí)序控制,這個(gè)對(duì)驅(qū)動(dòng)TFTLCD來(lái)說(shuō)非常有用,因?yàn)?span id="mzjiqxb"    class="hljs-selector-tag">TFTLCD在讀的時(shí)候,一般比較慢,而在寫(xiě)的時(shí)候可以比較快,如果讀寫(xiě)用一樣的時(shí)序,那么只能以讀的時(shí)序?yàn)榛鶞?zhǔn),從而導(dǎo)致寫(xiě)的速度變慢,或者在讀數(shù)據(jù)的時(shí)候,重新配置FSMC的延時(shí),在讀操作完成的時(shí)候,再配置回寫(xiě)的時(shí)序,這樣雖然也不會(huì)降低寫(xiě)的速度,但是頻繁配置,比較麻煩。而如果有獨(dú)立的讀寫(xiě)時(shí)序控制,那么我們只要初始化的時(shí)候配置好,之后就不用再配置,既可以滿足速度要求,又不需要頻繁改配置。

   模式A的寫(xiě)操作如下圖所示。

圖片

10.3.2 相關(guān)寄存器

(1)SRAM/NOR 閃存片選控制寄存器:FSMC_BCRx(x=1~4)

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- CBURSTRW -
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- EXTMOD WAITEN WREN WAITCFG WRAPMOD WAITPOL BURSTEN - FACCEN MWID MTYP MUXEN MBKEN

Bit 19:成組寫(xiě)使能位

0:寫(xiě)操作始終處于異步模式

   1:寫(xiě)操作為同步模式

Bit 14:EXTMOD:擴(kuò)展模式使能(即允許讀和寫(xiě)使用不同的時(shí)序)

0:不使用FSMC_BWTR寄存器(默認(rèn))

   1:FSMC使用FSMC_BWTR寄存器

Bit 13:等待使能位

0:禁用NWAIT信號(hào),在設(shè)置的閃存保持周期之后不會(huì)檢測(cè)NWAIT信號(hào)插入等待狀態(tài)

   1:使用NWAIT信號(hào),在設(shè)置的閃存保持周期之后根據(jù)NWAIT信號(hào)插入等待狀態(tài)(默認(rèn))

Bit 12:寫(xiě)使能位

0:禁止FSMC對(duì)存儲(chǔ)器的寫(xiě)操作,否則產(chǎn)生一個(gè)AHB錯(cuò)誤

   1:允許FSMC對(duì)存儲(chǔ)器的寫(xiě)操作(默認(rèn))

Bit 11:配置等待時(shí)序

0NWAIT信號(hào)在等待狀態(tài)前的一個(gè)數(shù)據(jù)周期有效(默認(rèn))

   1NWAIT信號(hào)在等待狀態(tài)期間有效(不適用于Cellular RAM)

Bit 10:支持非對(duì)齊的成組模式

0:不允許直接的非對(duì)齊成組操作(默認(rèn))

   1:允許直接的非對(duì)齊成組操作

Bit 9:等待信號(hào)極性

0:NWAIT等待信號(hào)為低時(shí)有效(默認(rèn))

   1:NWAIT等待信號(hào)為高時(shí)有效

Bit 8:成組模式使能

0:禁用成組訪問(wèn)模式(默認(rèn))

   1:使用成組訪問(wèn)模式

Bit 6:閃存訪問(wèn)使能

0:禁止對(duì)NOR閃存存儲(chǔ)器的訪問(wèn)操作

   1:允許對(duì)NOR閃存存儲(chǔ)器的訪問(wèn)操作

Bit 5~Bit 4:存儲(chǔ)器數(shù)據(jù)總線寬度

008位,

   0116位(默認(rèn))

   10:保留

   11:保留

Bit 3~Bit 2:存儲(chǔ)器類型

00:SRAM、ROM(存儲(chǔ)器塊2,3,4在復(fù)位后的默認(rèn)值)

   01:PSRAM(Cellular RAM: CRAM)

   10:NOR閃存(存儲(chǔ)器塊1在復(fù)位后的默認(rèn)值)

   11:保留

Bit 1:地址/數(shù)據(jù)復(fù)用使能位

0:地址/數(shù)據(jù)不復(fù)用。

   1:地址/數(shù)據(jù)復(fù)用數(shù)據(jù)總線(默認(rèn))

Bit 0:存儲(chǔ)器塊使能位

0:禁用對(duì)應(yīng)的存儲(chǔ)器塊

   1:?jiǎn)⒂脤?duì)應(yīng)的存儲(chǔ)器塊

(2)SRAM/NOR 閃存片選時(shí)序寄存器:FSMC_BTRx(x=1~4)

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- ACCMOD DATLAT CLKDIV BUSTURN
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DATAST ADDHLD ADDSET

Bit 29~Bit 28:訪問(wèn)模式(這2位只在FSMC_BCRx寄存器的EXTMOD位為1時(shí)起作用)

00:訪問(wèn)模式A

   01:訪問(wèn)模式B

   10:訪問(wèn)模式C

   11:訪問(wèn)模式D

Bit 27~Bit 24:數(shù)據(jù)保持時(shí)間

0000:第一個(gè)數(shù)據(jù)的保持時(shí)間為2個(gè)CLK時(shí)鐘周期

   ……

   1111:第一個(gè)數(shù)據(jù)的保持時(shí)間為17個(gè)CLK時(shí)鐘周期(默認(rèn))

Bit 23~Bit 20:時(shí)鐘分頻比

0000:保留

   0001:1個(gè)CLK周期=2個(gè)HCLK周期

   0010:1個(gè)CLK周期=3個(gè)HCLK周期

   ……

   1111:1個(gè)CLK周期=16個(gè)HCLK周期(默認(rèn))

Bit 19~Bit 16:總線恢復(fù)時(shí)間

0000:總線恢復(fù)時(shí)間=1個(gè)HCLK時(shí)鐘周期

   ……

   1111:總線恢復(fù)時(shí)間=16個(gè)HCLK時(shí)鐘周期(默認(rèn))

Bit 15~Bit 8:數(shù)據(jù)保持時(shí)間

00000000:保留

   00000001:DATAST保持時(shí)間=2個(gè)HCLK時(shí)鐘周期

   00000010:DATAST保持時(shí)間=3個(gè)HCLK時(shí)鐘周期

   ……

   11111111:DATAST保持時(shí)間=256個(gè)HCLK時(shí)鐘周期(默認(rèn))

Bit 7~Bit 4:地址保持時(shí)間

0000:ADDHLD保持時(shí)間=1個(gè)HCLK時(shí)鐘周期

   ……

   1111:ADDHLD保持時(shí)間=16個(gè)HCLK時(shí)鐘周期(默認(rèn))

Bit 3~Bit 0:地址建立時(shí)間

0000:ADDSET建立時(shí)間=1個(gè)HCLK時(shí)鐘周期

   ……

   1111:ADDSET建立時(shí)間=16個(gè)HCLK時(shí)鐘周期(默認(rèn))

(3)SRAM/NOR 閃存寫(xiě)時(shí)序寄存器:FSMC_BWTRx(x=1~4)

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- ACCMOD DATLAT CLKDIV BUSTURN
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DATAST ADDHLD ADDSET

Bit 29~Bit 28:訪問(wèn)模式(這2位只在FSMC_BCRx寄存器的EXTMOD位為1時(shí)起作用)

00:訪問(wèn)模式A

   01:訪問(wèn)模式B

   10:訪問(wèn)模式C

   11:訪問(wèn)模式D

Bit 27~Bit 24:數(shù)據(jù)保持時(shí)間

0000:第一個(gè)數(shù)據(jù)的保持時(shí)間為2個(gè)CLK時(shí)鐘周期

   ……

   1111:第一個(gè)數(shù)據(jù)的保持時(shí)間為17個(gè)CLK時(shí)鐘周期(默認(rèn))

Bit 23~Bit 20:時(shí)鐘分頻比

0000:保留

   0001:1個(gè)CLK周期=2個(gè)HCLK周期

   0010:1個(gè)CLK周期=3個(gè)HCLK周期

   ……

   1111:1個(gè)CLK周期=16個(gè)HCLK周期(默認(rèn))

Bit 19~Bit 16:總線恢復(fù)時(shí)間

0000:總線恢復(fù)時(shí)間=1個(gè)HCLK時(shí)鐘周期

   ……

   1111:總線恢復(fù)時(shí)間=16個(gè)HCLK時(shí)鐘周期(默認(rèn))

Bit 15~Bit 8:數(shù)據(jù)保持時(shí)間

00000000:保留

   00000001:DATAST保持時(shí)間=2個(gè)HCLK時(shí)鐘周期

   00000010:DATAST保持時(shí)間=3個(gè)HCLK時(shí)鐘周期

   ……

   11111111:DATAST保持時(shí)間=256個(gè)HCLK時(shí)鐘周期(默認(rèn))

Bit 7~Bit 4:地址保持時(shí)間

0000:ADDHLD保持時(shí)間=1個(gè)HCLK時(shí)鐘周期

   ……

   1111:ADDHLD保持時(shí)間=16個(gè)HCLK時(shí)鐘周期(默認(rèn))

Bit 3~Bit 0:地址建立時(shí)間

0000:ADDSET建立時(shí)間=1個(gè)HCLK時(shí)鐘周期

   ……

   1111:ADDSET建立時(shí)間=16個(gè)HCLK時(shí)鐘周期(默認(rèn))

10.4 實(shí)驗(yàn)例程

現(xiàn)有一塊驅(qū)動(dòng)芯片為5510的LCD驅(qū)動(dòng)芯片,廠家提供初始化例程,使用STM32的FSMC功能驅(qū)動(dòng)屏幕顯示字符串,連接關(guān)系如下表所示。

片選CS:FSMC_NE4

寫(xiě)控制WR:FSMC_NWE

讀控制RD:FSMC_NOE

數(shù)據(jù)命令控制RS:FSMC_A6

背光:PB0

16位并行數(shù)據(jù):FSMC_D15~FSMC_D0

(1)創(chuàng)建lcd.h,并輸入以下代碼。

#ifndef _LCD_H_
#define _LCD_H_
#include "sys.h"
//LCD地址結(jié)構(gòu)體
typedef struct
{
  vu16 LCD_REG ;
  vu16 LCD_RAM ;
}LCD_TypeDef ;
#define LCD_BASE    ( ( u32 )( 0x6C000000|0x000007FE ))
#define LCD        ( ( LCD_TypeDef* ) LCD_BASE )
//LCD重要參數(shù)集
typedef struct  
{                        
  u16 width ;                    //LCD寬度
  u16 height ;                    //LCD高度
  u8 dir ;                      //橫屏豎屏控制
  u16 wramcmd ;                  //開(kāi)始寫(xiě)gram指令
  u16 setxcmd ;                    //設(shè)置x坐標(biāo)指令
  u16 setycmd ;                    //設(shè)置y坐標(biāo)指令 
}_lcd_dev ;
extern _lcd_dev lcddev ;                  //管理LCD重要參數(shù)
//LCD的畫(huà)筆顏色和背景色
extern u16 POINT_COLOR ;                  //畫(huà)筆顏色
extern u16 BACK_COLOR ;                  //背景顏色
#define  LCD_LED PBout(0)                  //LCD背光
//畫(huà)筆顏色
#define WHITE            0xFFFF
#define BLACK            0x0000    
#define BLUE            0x001F  
#define BRED             0XF81F
#define GRED        0XFFE0
#define GBLUE       0X07FF
#define RED              0xF800
#define MAGENTA          0xF81F
#define GREEN            0x07E0
#define CYAN             0x7FFF
#define YELLOW           0xFFE0
#define BROWN        0XBC40              //棕色
#define BRRED        0XFC07              //棕紅色
#define GRAY         0X8430              //灰色
void LCD_Init( void ) ;                    //初始化
void LCD_Clear( u16 Color ) ;                //清屏
void LCD_Fast_DrawPoint( u16 x, u16 y, u16 color ) ;      //快速畫(huà)點(diǎn)
void LCD_ShowString( u16 x, u16 y, u8 *p ) ;          //顯示一個(gè)字符串
#endif

注1 :關(guān)于LCD_BASE地址的定義部分,其中0x6C000000代表FSMC的SRAM塊4的開(kāi)始地址,0x000007FE則代表A10的偏移地址,7FE H換算成2進(jìn)制就是01111111 1110,由于FSMC在16位數(shù)據(jù)總線狀態(tài)下,地址需要右移一個(gè)字節(jié),所以映射到A10A0上的地址數(shù)據(jù)就是011 1111 1111,A0恰好就是0,如果此時(shí)16位地址加1,對(duì)應(yīng)的8位地址就是加2,也就是7FE+2=800,映射到A10A0上的地址就是100 0000 0000,即A10變?yōu)榱?,這就實(shí)現(xiàn)了通過(guò)A10來(lái)控制RS的效果。我們定義的結(jié)構(gòu)體也可以發(fā)現(xiàn),LCD_REG對(duì)應(yīng)的就是0x6C000000+0x000007FE,而LCD_RAM對(duì)應(yīng)的就變成了0x6C000000+0x000007FE+0x00000002。

注2 :結(jié)構(gòu)體_lcd_dev則定義了一些LCD參數(shù),比如高度,寬度,設(shè)置命令,可以通過(guò)改變宏定義的方式來(lái)改變控制器的輸出。

注3 :顏色數(shù)據(jù)。

目前的顏色數(shù)據(jù)都有RGB888,RGB666和RGB565格式,代表了R,G和B的分辨率,其中RGB888代表紅,綠,藍(lán)都是8位,可以表示16777216種顏色,但是受制于TFTLCD的數(shù)據(jù)總線寬度只有16位,所以只能夠采用RGB565模式,這種模式代表紅色和藍(lán)色都是5位分辨率,綠色6位分辨率,這種模式中可以最多表示65536種顏色。文件中宏定義的顏色數(shù)據(jù)就是根據(jù)RGB888格式轉(zhuǎn)換而來(lái),一般都是放棄低2位和低1位,例如RGB888模式中某種顏色為11011110 11011110 11011111,那么轉(zhuǎn)換為RGB565模式就變成了11011 110111 11011,換成16進(jìn)制就是1101 1110 1111 1011=DEFB H。

(2)創(chuàng)建lcd.c,并添加以下代碼。

#include "lcd.h"
#include "font.h"
#include "delay.h"
void LCD_WriteReg( u16 LCD_Reg, u16 LCD_RegValue )
{  
  LCD->LCD_REG = LCD_Reg ;              //寫(xiě)入寄存器序號(hào)
  LCD->LCD_RAM = LCD_RegValue ;            //寫(xiě)入數(shù)據(jù)
}
_lcd_dev lcddev ;                      //管理LCD重要參數(shù)
void LCD_SetCursor( u16 Xpos, u16 Ypos )
{
  LCD_WriteReg( lcddev.setxcmd, Xpos>>8 ) ;
  LCD_WriteReg( lcddev.setxcmd+1, Xpos&0xFF ) ;
  LCD_WriteReg( lcddev.setycmd, Ypos>>8 ) ;
  LCD_WriteReg( lcddev.setycmd+1, Ypos&0xFF ) ;
}
void LCD_Display_Dir()
{
  u16 temp;
  lcddev.wramcmd = 0x2C00 ;
  lcddev.setxcmd = 0x2A00 ;
  lcddev.setycmd = 0x2B00 ;
  lcddev.width = 480 ;
  lcddev.height = 800 ;
  //交換X,Y
  if( lcddev.width>lcddev.height )
  {
    temp = lcddev.width ;
    lcddev.width = lcddev.height ;
    lcddev.height = temp ;
  }
  //設(shè)置掃描方向
  LCD_WriteReg( 0x3600, 0 ) ;
  LCD_WriteReg( lcddev.setxcmd, 0 ) ;
  LCD_WriteReg( lcddev.setxcmd+1, 0 ) ;
  LCD_WriteReg( lcddev.setxcmd+2, ( lcddev.width-1 )>>8 ) ;
  LCD_WriteReg( lcddev.setxcmd+3, ( lcddev.width-1 )&0xFF ) ;
  LCD_WriteReg( lcddev.setycmd, 0 ) ;
  LCD_WriteReg( lcddev.setycmd+1, 0 ) ;
  LCD_WriteReg( lcddev.setycmd+2, ( lcddev.height-1 )>>8 ) ;
  LCD_WriteReg( lcddev.setycmd+3, ( lcddev.height-1 )&0xFF ) ;
}
void LCD_Init()
{
  RCC->AHBENR |= 1<<8 ;                  //使能FSMC時(shí)鐘
    RCC->APB2ENR |= 1<<3 ;                  //使能PORTB時(shí)鐘
  RCC->APB2ENR |= 1<<5 ;                  //使能PORTD時(shí)鐘
  RCC->APB2ENR |= 1<<6 ;                  //使能PORTE時(shí)鐘
   RCC->APB2ENR |= 1<<8 ;                  //使能PORTG時(shí)鐘
  GPIOB->CRL &= 0xFFFFFFF0 ;                //PB0 推挽輸出
  GPIOB->CRL |= 0x00000003 ;
  //PORTD復(fù)用推挽輸出
  GPIOD->CRH &= 0x00FFF000 ;
  GPIOD->CRH |= 0xBB000BBB ;
  GPIOD->CRL &= 0xFF00FF00 ;
  GPIOD->CRL |= 0x00BB00BB ;
  //PORTE復(fù)用推挽輸出
  GPIOE->CRH &= 0x00000000 ;
  GPIOE->CRH |= 0xBBBBBBBB ;
  GPIOE->CRL &= 0x0FFFFFFF ;
  GPIOE->CRL |= 0xB0000000 ;
  //PORTG12復(fù)用推挽輸出
  GPIOG->CRH &= 0xFFF0FFFF ;
  GPIOG->CRH |= 0x000B0000 ;
  GPIOG->CRL &= 0xFFFFFFF0 ;                //PG0->RS
  GPIOG->CRL |= 0x0000000B ;
  FSMC_Bank1->BTCR[ 6 ] = 0x00000000 ;
  FSMC_Bank1->BTCR[ 7 ] = 0x00000000 ;
  FSMC_Bank1E->BWTR[ 6 ] = 0x00000000 ;
  FSMC_Bank1->BTCR[ 6 ] |= 1<<12 ;              //存儲(chǔ)器寫(xiě)使能
  FSMC_Bank1->BTCR[ 6 ] |= 1<<14 ;              //讀寫(xiě)使用不同的時(shí)序
  FSMC_Bank1->BTCR[ 6 ] |= 1<<4 ;              //存儲(chǔ)器數(shù)據(jù)寬度為16bit
  FSMC_Bank1->BTCR[ 7 ] |= 0<<28 ;              //模式A
  FSMC_Bank1->BTCR[ 7 ] |= 1<<0 ;              //地址建立時(shí)間為2個(gè)HCLK 1/36M=27ns
  FSMC_Bank1->BTCR[ 7 ] |= 0xF<<8 ;              //數(shù)據(jù)保存時(shí)間為16個(gè)HCLK
  FSMC_Bank1E->BWTR[ 6 ] |= 0<<28 ;            //模式A
  FSMC_Bank1E->BWTR[ 6 ] |= 0<<0 ;              //地址建立時(shí)間為1個(gè)HCLK
  FSMC_Bank1E->BWTR[ 6 ] |= 3<<8 ;              //數(shù)據(jù)保存時(shí)間為4個(gè)HCLK
  FSMC_Bank1->BTCR[ 6 ] |= 1<<0 ;              //使能BANK1區(qū)域4
  delay_ms( 50 ) ;                      //delay 50 ms
  LCD_WriteReg( 0xF000, 0x55 ) ;
  LCD_WriteReg( 0xF001, 0xAA ) ;
  LCD_WriteReg( 0xF002, 0x52 ) ;
  LCD_WriteReg( 0xF003, 0x08 ) ;
  LCD_WriteReg( 0xF004, 0x01 ) ;
  //AVDD Set AVDD 5.2V
  LCD_WriteReg( 0xB000, 0x0D ) ;
  LCD_WriteReg( 0xB001, 0x0D ) ;
  LCD_WriteReg( 0xB002, 0x0D ) ;
  //AVDD ratio
  LCD_WriteReg( 0xB600, 0x34 ) ;
  LCD_WriteReg( 0xB601, 0x34 ) ;
  LCD_WriteReg( 0xB602, 0x34 ) ;
  //AVEE -5.2V
  LCD_WriteReg( 0xB100, 0x0D ) ;
  LCD_WriteReg( 0xB101, 0x0D ) ;
  LCD_WriteReg( 0xB102, 0x0D ) ;
  //AVEE ratio
  LCD_WriteReg( 0xB700, 0x34 ) ;
  LCD_WriteReg( 0xB701, 0x34 ) ;
  LCD_WriteReg( 0xB702, 0x34 ) ;
  //VCL -2.5V
  LCD_WriteReg( 0xB200, 0x00 ) ;
  LCD_WriteReg( 0xB201, 0x00 ) ;
  LCD_WriteReg( 0xB202, 0x00 ) ;
  //VCL ratio
  LCD_WriteReg( 0xB800, 0x24 ) ;
  LCD_WriteReg( 0xB801, 0x24 ) ;
  LCD_WriteReg( 0xB802, 0x24 ) ;
  //VGH 15V
  LCD_WriteReg( 0xBF00, 0x01 ) ;
  LCD_WriteReg( 0xB300, 0x0F ) ;
  LCD_WriteReg( 0xB301, 0x0F ) ;
  LCD_WriteReg( 0xB302, 0x0F ) ;
  //VGH ratio
  LCD_WriteReg( 0xB900, 0x34 ) ;
  LCD_WriteReg( 0xB901, 0x34 ) ;
  LCD_WriteReg( 0xB902, 0x34 ) ;
  //VGL_REG -10V
  LCD_WriteReg( 0xB500, 0x08 ) ;
  LCD_WriteReg( 0xB501, 0x08 ) ;
  LCD_WriteReg( 0xB502, 0x08 ) ;
  LCD_WriteReg( 0xC200, 0x03 ) ;
  //VGLX ratio
  LCD_WriteReg( 0xBA00, 0x24 ) ;
  LCD_WriteReg( 0xBA01, 0x24 ) ;
  LCD_WriteReg( 0xBA02, 0x24 ) ;
  //VGMP/VGSP 4.5V/0V
  LCD_WriteReg( 0xBC00, 0x00 ) ;
  LCD_WriteReg( 0xBC01, 0x78 ) ;
  LCD_WriteReg( 0xBC02, 0x00 ) ;
  //VGMN/VGSN -4.5V/0V
  LCD_WriteReg( 0xBD00, 0x00 ) ;
  LCD_WriteReg( 0xBD01, 0x78 ) ;
  LCD_WriteReg( 0xBD02, 0x00 ) ;
  //VCOM
  LCD_WriteReg( 0xBE00, 0x00 ) ;
  LCD_WriteReg( 0xBE01, 0x64 ) ;
  //Gamma Setting
  LCD_WriteReg( 0xD100, 0x00 ) ;
  LCD_WriteReg( 0xD101, 0x33 ) ;
  LCD_WriteReg( 0xD102, 0x00 ) ;
  LCD_WriteReg( 0xD103, 0x34 ) ;
  LCD_WriteReg( 0xD104, 0x00 ) ;
  LCD_WriteReg( 0xD105, 0x3A ) ;
  LCD_WriteReg( 0xD106, 0x00 ) ;
  LCD_WriteReg( 0xD107, 0x4A ) ;
  LCD_WriteReg( 0xD108, 0x00 ) ;
  LCD_WriteReg( 0xD109, 0x5C ) ;
  LCD_WriteReg( 0xD10A, 0x00 ) ;
  LCD_WriteReg( 0xD10B, 0x81 ) ;
  LCD_WriteReg( 0xD10C, 0x00 ) ;
  LCD_WriteReg( 0xD10D, 0xA6 ) ;
  LCD_WriteReg( 0xD10E, 0x00 ) ;
  LCD_WriteReg( 0xD10F, 0xE5 ) ;
  LCD_WriteReg( 0xD110, 0x01 ) ;
  LCD_WriteReg( 0xD111, 0x13 ) ;
  LCD_WriteReg( 0xD112, 0x01 ) ;
  LCD_WriteReg( 0xD113, 0x54 ) ;
  LCD_WriteReg( 0xD114, 0x01 ) ;
  LCD_WriteReg( 0xD115, 0x82 ) ;
  LCD_WriteReg( 0xD116, 0x01 ) ;
  LCD_WriteReg( 0xD117, 0xCA ) ;
  LCD_WriteReg( 0xD118, 0x02 ) ;
  LCD_WriteReg( 0xD119, 0x00 ) ;
  LCD_WriteReg( 0xD11A, 0x02 ) ;
  LCD_WriteReg( 0xD11B, 0x01 ) ;
  LCD_WriteReg( 0xD11C, 0x02 ) ;
  LCD_WriteReg( 0xD11D, 0x34 ) ;
  LCD_WriteReg( 0xD11E, 0x02 ) ;
  LCD_WriteReg( 0xD11F, 0x67 ) ;
  LCD_WriteReg( 0xD120, 0x02 ) ;
  LCD_WriteReg( 0xD121, 0x84 ) ;
  LCD_WriteReg( 0xD122, 0x02 ) ;
  LCD_WriteReg( 0xD123, 0xA4 ) ;
  LCD_WriteReg( 0xD124, 0x02 ) ;
  LCD_WriteReg( 0xD125, 0xB7 ) ;
  LCD_WriteReg( 0xD126, 0x02 ) ;
  LCD_WriteReg( 0xD127, 0xCF ) ;
  LCD_WriteReg( 0xD128, 0x02 ) ;
  LCD_WriteReg( 0xD129, 0xDE ) ;
  LCD_WriteReg( 0xD12A, 0x02 ) ;
  LCD_WriteReg( 0xD12B, 0xF2 ) ;
  LCD_WriteReg( 0xD12C, 0x02 ) ;
  LCD_WriteReg( 0xD12D, 0xFE ) ;
  LCD_WriteReg( 0xD12E, 0x03 ) ;
  LCD_WriteReg( 0xD12F, 0x10 ) ;
  LCD_WriteReg( 0xD130, 0x03 ) ;
  LCD_WriteReg( 0xD131, 0x33 ) ;
  LCD_WriteReg( 0xD132, 0x03 ) ;
  LCD_WriteReg( 0xD133, 0x6D ) ;
  LCD_WriteReg( 0xD200, 0x00 ) ;
  LCD_WriteReg( 0xD201, 0x33 ) ;
  LCD_WriteReg( 0xD202, 0x00 ) ;
  LCD_WriteReg( 0xD203, 0x34 ) ;
  LCD_WriteReg( 0xD204, 0x00 ) ;
  LCD_WriteReg( 0xD205, 0x3A ) ;
  LCD_WriteReg( 0xD206, 0x00 ) ;
  LCD_WriteReg( 0xD207, 0x4A ) ;
  LCD_WriteReg( 0xD208, 0x00 ) ;
  LCD_WriteReg( 0xD209, 0x5C ) ;
  LCD_WriteReg( 0xD20A, 0x00 ) ;
  LCD_WriteReg( 0xD20B, 0x81 ) ;
  LCD_WriteReg( 0xD20C, 0x00 ) ;
  LCD_WriteReg( 0xD20D, 0xA6 ) ;
  LCD_WriteReg( 0xD20E, 0x00 ) ;
  LCD_WriteReg( 0xD20F, 0xE5 ) ;
  LCD_WriteReg( 0xD210, 0x01 ) ;
  LCD_WriteReg( 0xD211, 0x13 ) ;
  LCD_WriteReg( 0xD212, 0x01 ) ;
  LCD_WriteReg( 0xD213, 0x54 ) ;
  LCD_WriteReg( 0xD214, 0x01 ) ;
  LCD_WriteReg( 0xD215, 0x82 ) ;
  LCD_WriteReg( 0xD216, 0x01 ) ;
  LCD_WriteReg( 0xD217, 0xCA ) ;
  LCD_WriteReg( 0xD218, 0x02 ) ;
  LCD_WriteReg( 0xD219, 0x00 ) ;
  LCD_WriteReg( 0xD21A, 0x02 ) ;
  LCD_WriteReg( 0xD21B, 0x01 ) ;
  LCD_WriteReg( 0xD21C, 0x02 ) ;
  LCD_WriteReg( 0xD21D, 0x34 ) ;
  LCD_WriteReg( 0xD21E, 0x02 ) ;
  LCD_WriteReg( 0xD21F, 0x67 ) ;
  LCD_WriteReg( 0xD220, 0x02 ) ;
  LCD_WriteReg( 0xD221, 0x84 ) ;
  LCD_WriteReg( 0xD222, 0x02 ) ;
  LCD_WriteReg( 0xD223, 0xA4 ) ;
  LCD_WriteReg( 0xD224, 0x02 ) ;
  LCD_WriteReg( 0xD225, 0xB7 ) ;
  LCD_WriteReg( 0xD226, 0x02 ) ;
  LCD_WriteReg( 0xD227, 0xCF ) ;
  LCD_WriteReg( 0xD228, 0x02 ) ;
  LCD_WriteReg( 0xD229, 0xDE ) ;
  LCD_WriteReg( 0xD22A, 0x02 ) ;
  LCD_WriteReg( 0xD22B, 0xF2 ) ;
  LCD_WriteReg( 0xD22C, 0x02 ) ;
  LCD_WriteReg( 0xD22D, 0xFE ) ;
  LCD_WriteReg( 0xD22E, 0x03 ) ;
  LCD_WriteReg( 0xD22F, 0x10 ) ;
  LCD_WriteReg( 0xD230, 0x03 ) ;
  LCD_WriteReg( 0xD231, 0x33 ) ;
  LCD_WriteReg( 0xD232, 0x03 ) ;
  LCD_WriteReg( 0xD233, 0x6D ) ;
  LCD_WriteReg( 0xD300, 0x00 ) ;
  LCD_WriteReg( 0xD301, 0x33 ) ;
  LCD_WriteReg( 0xD302, 0x00 ) ;
  LCD_WriteReg( 0xD303, 0x34 ) ;
  LCD_WriteReg( 0xD304, 0x00 ) ;
  LCD_WriteReg( 0xD305, 0x3A ) ;
  LCD_WriteReg( 0xD306, 0x00 ) ;
  LCD_WriteReg( 0xD307, 0x4A ) ;
  LCD_WriteReg( 0xD308, 0x00 ) ;
  LCD_WriteReg( 0xD309, 0x5C ) ;
  LCD_WriteReg( 0xD30A, 0x00 ) ;
  LCD_WriteReg( 0xD30B, 0x81 ) ;
  LCD_WriteReg( 0xD30C, 0x00 ) ;
  LCD_WriteReg( 0xD30D, 0xA6 ) ;
  LCD_WriteReg( 0xD30E, 0x00 ) ;
  LCD_WriteReg( 0xD30F, 0xE5 ) ;
  LCD_WriteReg( 0xD310, 0x01 ) ;
  LCD_WriteReg( 0xD311, 0x13 ) ;
  LCD_WriteReg( 0xD312, 0x01 ) ;
  LCD_WriteReg( 0xD313, 0x54 ) ;
  LCD_WriteReg( 0xD314, 0x01 ) ;
  LCD_WriteReg( 0xD315, 0x82 ) ;
  LCD_WriteReg( 0xD316, 0x01 ) ;
  LCD_WriteReg( 0xD317, 0xCA ) ;
  LCD_WriteReg( 0xD318, 0x02 ) ;
  LCD_WriteReg( 0xD319, 0x00 ) ;
  LCD_WriteReg( 0xD31A, 0x02 ) ;
  LCD_WriteReg( 0xD31B, 0x01 ) ;
  LCD_WriteReg( 0xD31C, 0x02 ) ;
  LCD_WriteReg( 0xD31D, 0x34 ) ;
  LCD_WriteReg( 0xD31E, 0x02 ) ;
  LCD_WriteReg( 0xD31F, 0x67 ) ;
  LCD_WriteReg( 0xD320, 0x02 ) ;
  LCD_WriteReg( 0xD321, 0x84 ) ;
  LCD_WriteReg( 0xD322, 0x02 ) ;
  LCD_WriteReg( 0xD323, 0xA4 ) ;
  LCD_WriteReg( 0xD324, 0x02 ) ;
  LCD_WriteReg( 0xD325, 0xB7 ) ;
  LCD_WriteReg( 0xD326, 0x02 ) ;
  LCD_WriteReg( 0xD327, 0xCF ) ;
  LCD_WriteReg( 0xD328, 0x02 ) ;
  LCD_WriteReg( 0xD329, 0xDE ) ;
  LCD_WriteReg( 0xD32A, 0x02 ) ;
  LCD_WriteReg( 0xD32B, 0xF2 ) ;
  LCD_WriteReg( 0xD32C, 0x02 ) ;
  LCD_WriteReg( 0xD32D, 0xFE ) ;
  LCD_WriteReg( 0xD32E, 0x03 ) ;
  LCD_WriteReg( 0xD32F, 0x10 ) ;
  LCD_WriteReg( 0xD330, 0x03 ) ;
  LCD_WriteReg( 0xD331, 0x33 ) ;
  LCD_WriteReg( 0xD332, 0x03 ) ;
  LCD_WriteReg( 0xD333, 0x6D ) ;
  LCD_WriteReg( 0xD400, 0x00 ) ;
  LCD_WriteReg( 0xD401, 0x33 ) ;
  LCD_WriteReg( 0xD402, 0x00 ) ;
  LCD_WriteReg( 0xD403, 0x34 ) ;
  LCD_WriteReg( 0xD404, 0x00 ) ;
  LCD_WriteReg( 0xD405, 0x3A ) ;
  LCD_WriteReg( 0xD406, 0x00 ) ;
  LCD_WriteReg( 0xD407, 0x4A ) ;
  LCD_WriteReg( 0xD408, 0x00 ) ;
  LCD_WriteReg( 0xD409, 0x5C ) ;
  LCD_WriteReg( 0xD40A, 0x00 ) ;
  LCD_WriteReg( 0xD40B, 0x81 ) ;
  LCD_WriteReg( 0xD40C, 0x00 ) ;
  LCD_WriteReg( 0xD40D, 0xA6 ) ;
  LCD_WriteReg( 0xD40E, 0x00 ) ;
  LCD_WriteReg( 0xD40F, 0xE5 ) ;
  LCD_WriteReg( 0xD410, 0x01 ) ;
  LCD_WriteReg( 0xD411, 0x13 ) ;
  LCD_WriteReg( 0xD412, 0x01 ) ;
  LCD_WriteReg( 0xD413, 0x54 ) ;
  LCD_WriteReg( 0xD414, 0x01 ) ;
  LCD_WriteReg( 0xD415, 0x82 ) ;
  LCD_WriteReg( 0xD416, 0x01 ) ;
  LCD_WriteReg( 0xD417, 0xCA ) ;
  LCD_WriteReg( 0xD418, 0x02 ) ;
  LCD_WriteReg( 0xD419, 0x00 ) ;
  LCD_WriteReg( 0xD41A, 0x02 ) ;
  LCD_WriteReg( 0xD41B, 0x01 ) ;
  LCD_WriteReg( 0xD41C, 0x02 ) ;
  LCD_WriteReg( 0xD41D, 0x34 ) ;
  LCD_WriteReg( 0xD41E, 0x02 ) ;
  LCD_WriteReg( 0xD41F, 0x67 ) ;
  LCD_WriteReg( 0xD420, 0x02 ) ;
  LCD_WriteReg( 0xD421, 0x84 ) ;
  LCD_WriteReg( 0xD422, 0x02 ) ;
  LCD_WriteReg( 0xD423, 0xA4 ) ;
  LCD_WriteReg( 0xD424, 0x02 ) ;
  LCD_WriteReg( 0xD425, 0xB7 ) ;
  LCD_WriteReg( 0xD426, 0x02 ) ;
  LCD_WriteReg( 0xD427, 0xCF ) ;
  LCD_WriteReg( 0xD428, 0x02 ) ;
  LCD_WriteReg( 0xD429, 0xDE ) ;
  LCD_WriteReg( 0xD42A, 0x02 ) ;
  LCD_WriteReg( 0xD42B, 0xF2 ) ;
  LCD_WriteReg( 0xD42C, 0x02 ) ;
  LCD_WriteReg( 0xD42D, 0xFE ) ;
  LCD_WriteReg( 0xD42E, 0x03 ) ;
  LCD_WriteReg( 0xD42F, 0x10 ) ;
  LCD_WriteReg( 0xD430, 0x03 ) ;
  LCD_WriteReg( 0xD431, 0x33 ) ;
  LCD_WriteReg( 0xD432, 0x03 ) ;
  LCD_WriteReg( 0xD433, 0x6D ) ;
  LCD_WriteReg( 0xD500, 0x00 ) ;
  LCD_WriteReg( 0xD501, 0x33 ) ;
  LCD_WriteReg( 0xD502, 0x00 ) ;
  LCD_WriteReg( 0xD503, 0x34 ) ;
  LCD_WriteReg( 0xD504, 0x00 ) ;
  LCD_WriteReg( 0xD505, 0x3A ) ;
  LCD_WriteReg( 0xD506, 0x00 ) ;
  LCD_WriteReg( 0xD507, 0x4A ) ;
  LCD_WriteReg( 0xD508, 0x00 ) ;
  LCD_WriteReg( 0xD509, 0x5C ) ;
  LCD_WriteReg( 0xD50A, 0x00 ) ;
  LCD_WriteReg( 0xD50B, 0x81 ) ;
  LCD_WriteReg( 0xD50C, 0x00 ) ;
  LCD_WriteReg( 0xD50D, 0xA6 ) ;
  LCD_WriteReg( 0xD50E, 0x00 ) ;
  LCD_WriteReg( 0xD50F, 0xE5 ) ;
  LCD_WriteReg( 0xD510, 0x01 ) ;
  LCD_WriteReg( 0xD511, 0x13 ) ;
  LCD_WriteReg( 0xD512, 0x01 ) ;
  LCD_WriteReg( 0xD513, 0x54 ) ;
  LCD_WriteReg( 0xD514, 0x01 ) ;
  LCD_WriteReg( 0xD515, 0x82 ) ;
  LCD_WriteReg( 0xD516, 0x01 ) ;
  LCD_WriteReg( 0xD517, 0xCA ) ;
  LCD_WriteReg( 0xD518, 0x02 ) ;
  LCD_WriteReg( 0xD519, 0x00 ) ;
  LCD_WriteReg( 0xD51A, 0x02 ) ;
  LCD_WriteReg( 0xD51B, 0x01 ) ;
  LCD_WriteReg( 0xD51C, 0x02 ) ;
  LCD_WriteReg( 0xD51D, 0x34 ) ;
  LCD_WriteReg( 0xD51E, 0x02 ) ;
  LCD_WriteReg( 0xD51F, 0x67 ) ;
  LCD_WriteReg( 0xD520, 0x02 ) ;
  LCD_WriteReg( 0xD521, 0x84 ) ;
  LCD_WriteReg( 0xD522, 0x02 ) ;
  LCD_WriteReg( 0xD523, 0xA4 ) ;
  LCD_WriteReg( 0xD524, 0x02 ) ;
  LCD_WriteReg( 0xD525, 0xB7 ) ;
  LCD_WriteReg( 0xD526, 0x02 ) ;
  LCD_WriteReg( 0xD527, 0xCF ) ;
  LCD_WriteReg( 0xD528, 0x02 ) ;
  LCD_WriteReg( 0xD529, 0xDE ) ;
  LCD_WriteReg( 0xD52A, 0x02 ) ;
  LCD_WriteReg( 0xD52B, 0xF2 ) ;
  LCD_WriteReg( 0xD52C, 0x02 ) ;
  LCD_WriteReg( 0xD52D, 0xFE ) ;
  LCD_WriteReg( 0xD52E, 0x03 ) ;
  LCD_WriteReg( 0xD52F, 0x10 ) ;
  LCD_WriteReg( 0xD530, 0x03 ) ;
  LCD_WriteReg( 0xD531, 0x33 ) ;
  LCD_WriteReg( 0xD532, 0x03 ) ;
  LCD_WriteReg( 0xD533, 0x6D ) ;
  LCD_WriteReg( 0xD600, 0x00 ) ;
  LCD_WriteReg( 0xD601, 0x33 ) ;
  LCD_WriteReg( 0xD602, 0x00 ) ;
  LCD_WriteReg( 0xD603, 0x34 ) ;
  LCD_WriteReg( 0xD604, 0x00 ) ;
  LCD_WriteReg( 0xD605, 0x3A ) ;
  LCD_WriteReg( 0xD606, 0x00 ) ;
  LCD_WriteReg( 0xD607, 0x4A ) ;
  LCD_WriteReg( 0xD608, 0x00 ) ;
  LCD_WriteReg( 0xD609, 0x5C ) ;
  LCD_WriteReg( 0xD60A, 0x00 ) ;
  LCD_WriteReg( 0xD60B, 0x81 ) ;
  LCD_WriteReg( 0xD60C, 0x00 ) ;
  LCD_WriteReg( 0xD60D, 0xA6 ) ;
  LCD_WriteReg( 0xD60E, 0x00 ) ;
  LCD_WriteReg( 0xD60F, 0xE5 ) ;
  LCD_WriteReg( 0xD610, 0x01 ) ;
  LCD_WriteReg( 0xD611, 0x13 ) ;
  LCD_WriteReg( 0xD612, 0x01 ) ;
  LCD_WriteReg( 0xD613, 0x54 ) ;
  LCD_WriteReg( 0xD614, 0x01 ) ;
  LCD_WriteReg( 0xD615, 0x82 ) ;
  LCD_WriteReg( 0xD616, 0x01 ) ;
  LCD_WriteReg( 0xD617, 0xCA ) ;
  LCD_WriteReg( 0xD618, 0x02 ) ;
  LCD_WriteReg( 0xD619, 0x00 ) ;
  LCD_WriteReg( 0xD61A, 0x02 ) ;
  LCD_WriteReg( 0xD61B, 0x01 ) ;
  LCD_WriteReg( 0xD61C, 0x02 ) ;
  LCD_WriteReg( 0xD61D, 0x34 ) ;
  LCD_WriteReg( 0xD61E, 0x02 ) ;
  LCD_WriteReg( 0xD61F, 0x67 ) ;
  LCD_WriteReg( 0xD620, 0x02 ) ;
  LCD_WriteReg( 0xD621, 0x84 ) ;
  LCD_WriteReg( 0xD622, 0x02 ) ;
  LCD_WriteReg( 0xD623, 0xA4 ) ;
  LCD_WriteReg( 0xD624, 0x02 ) ;
  LCD_WriteReg( 0xD625, 0xB7 ) ;
  LCD_WriteReg( 0xD626, 0x02 ) ;
  LCD_WriteReg( 0xD627, 0xCF ) ;
  LCD_WriteReg( 0xD628, 0x02 ) ;
  LCD_WriteReg( 0xD629, 0xDE ) ;
  LCD_WriteReg( 0xD62A, 0x02 ) ;
  LCD_WriteReg( 0xD62B, 0xF2 ) ;
  LCD_WriteReg( 0xD62C, 0x02 ) ;
  LCD_WriteReg( 0xD62D, 0xFE ) ;
  LCD_WriteReg( 0xD62E, 0x03 ) ;
  LCD_WriteReg( 0xD62F, 0x10 ) ;
  LCD_WriteReg( 0xD630, 0x03 ) ;
  LCD_WriteReg( 0xD631, 0x33 ) ;
  LCD_WriteReg( 0xD632, 0x03 ) ;
  LCD_WriteReg( 0xD633, 0x6D ) ;
  //LV2 Page 0 enable
  LCD_WriteReg( 0xF000, 0x55 ) ;
  LCD_WriteReg( 0xF001, 0xAA ) ;
  LCD_WriteReg( 0xF002, 0x52 ) ;
  LCD_WriteReg( 0xF003, 0x08 ) ;
  LCD_WriteReg( 0xF004, 0x00 ) ;
  //Display control
  LCD_WriteReg( 0xB100,  0xCC ) ;
  LCD_WriteReg( 0xB101,  0x00 ) ;
  //Source hold time
  LCD_WriteReg( 0xB600, 0x05 ) ;
  //Gate EQ control
  LCD_WriteReg( 0xB700, 0x70 ) ;
  LCD_WriteReg( 0xB701, 0x70 ) ;
  //Source EQ control ( Mode 2 )
  LCD_WriteReg( 0xB800, 0x01 ) ;
  LCD_WriteReg( 0xB801, 0x03 ) ;
  LCD_WriteReg( 0xB802, 0x03 ) ;
  LCD_WriteReg( 0xB803, 0x03 ) ;
  //Inversion mode ( 2-dot )
  LCD_WriteReg( 0xBC00, 0x02 ) ;
  LCD_WriteReg( 0xBC01, 0x00 ) ;
  LCD_WriteReg( 0xBC02, 0x00 ) ;
  //Timing control 4H w/ 4-delay
  LCD_WriteReg( 0xC900, 0xD0 ) ;
  LCD_WriteReg( 0xC901, 0x02 ) ;
  LCD_WriteReg( 0xC902, 0x50 ) ;
  LCD_WriteReg( 0xC903, 0x50 ) ;
  LCD_WriteReg( 0xC904, 0x50 ) ;
  LCD_WriteReg( 0x3500, 0x00 ) ;
  LCD_WriteReg( 0x3A00, 0x55 ) ;                                    //16-bit/pixel
  LCD->LCD_REG = 0x1100 ;
  delay_us( 120 ) ;
  LCD->LCD_REG = 0x2900 ;
  LCD_Display_Dir() ;                    //默認(rèn)為豎屏
  LCD_LED = 1 ;                      //點(diǎn)亮背光
  LCD_Clear( WHITE ) ;
}
void LCD_Clear( u16 color )
{
  u32 index = 0 ;
  u32 totalpoint = lcddev.width ;
  totalpoint *= lcddev.height ;                //得到總點(diǎn)數(shù)
  LCD_SetCursor( 0, 0 ) ;                    //設(shè)置光標(biāo)位置
  LCD->LCD_REG = lcddev.wramcmd ;              //開(kāi)始寫(xiě)入GRAM
  for( index=0; index

注1 :省略的初始化代碼是在采購(gòu)屏幕的時(shí)候生產(chǎn)廠家提供的驅(qū)動(dòng)代碼,這部分代碼包括初始化屏幕的伽馬校正以及顯示地址增加等功能,可以不去管,只需要復(fù)制到初始化的位置即可。

注2 :清屏函數(shù)LCD_Clear

清屏其實(shí)就是在屏幕中送入白色或者別的顏色,一般都是全部像素點(diǎn)寫(xiě)入白色,該函數(shù)也可以用于填充顏色使用,程序中首先通過(guò)橫坐標(biāo)點(diǎn)數(shù)和縱坐標(biāo)點(diǎn)數(shù)計(jì)算出所有像素點(diǎn)的個(gè)數(shù),由于初始化中設(shè)置了地址自增加功能,所以可以設(shè)定開(kāi)始地址后直接不停的發(fā)送白色的數(shù)據(jù)代碼,直到所有像素點(diǎn)全部填充后結(jié)束。

注3 :顯示1個(gè)字符函數(shù)LCD_ShowChar

TFTLCD由于內(nèi)部沒(méi)有字庫(kù),所以所有的英文包括ASCII碼,中文都需要自己取模,取模的方式類似于之前的51單片機(jī)驅(qū)動(dòng)點(diǎn)陣,這種情況下可以采用廠家提供的現(xiàn)成的代碼,或者自己用取模軟件直接生成代碼,文件中包含的頭文件font.h其實(shí)就是自己通過(guò)軟件得到的ASCII碼的字符點(diǎn)陣數(shù)據(jù)。讀取點(diǎn)陣的時(shí)候,1的位置寫(xiě)入設(shè)置的顏色(畫(huà)筆顏色),0的位置寫(xiě)入背景顏色,當(dāng)背景顏色和刷屏顏色一樣的時(shí)候,看起來(lái)就像是顯示了數(shù)據(jù)一樣(也可以不寫(xiě)入背景顏色,直接在1的位置寫(xiě)入畫(huà)筆顏色,0的位置不管,這種情況下可以實(shí)現(xiàn)字體的透明效果)。

注4 :顯示字符串函數(shù)LCD_ShowString

顯示字符串函數(shù)實(shí)際就是頻繁調(diào)用函數(shù)LCD_ShowChar,通過(guò)while循環(huán)來(lái)判斷字符串的結(jié)尾,將結(jié)尾之前的數(shù)據(jù)全部寫(xiě)入后退出循環(huán)。有的廠家會(huì)提供完整的例程,里面包括顯示數(shù)字,顯示圖像,其實(shí)本質(zhì)都是通過(guò)判斷點(diǎn)陣數(shù)據(jù)來(lái)寫(xiě)入畫(huà)筆顏色和背景顏色。

(3)創(chuàng)建font.h,自己通過(guò)取模軟件來(lái)添加字符的字模。

#ifndef _FONT_H_
#define _FONT_H_
//常用ASCII表
//陰碼+逐列式+順向+C51格式
const unsigned char asc2_1608[95][16]={    
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xCC,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/
{0x00,0x00,0x08,0x00,0x30,0x00,0x60,0x00,0x08,0x00,0x30,0x00,0x60,0x00,0x00,0x00},/*""",2*/
{0x02,0x20,0x03,0xFC,0x1E,0x20,0x02,0x20,0x03,0xFC,0x1E,0x20,0x02,0x20,0x00,0x00},/*"#",3*/
{0x00,0x00,0x0E,0x18,0x11,0x04,0x3F,0xFF,0x10,0x84,0x0C,0x78,0x00,0x00,0x00,0x00},/*"$",4*/
{0x0F,0x00,0x10,0x84,0x0F,0x38,0x00,0xC0,0x07,0x78,0x18,0x84,0x00,0x78,0x00,0x00},/*"%",5*/
{0x00,0x78,0x0F,0x84,0x10,0xC4,0x11,0x24,0x0E,0x98,0x00,0xE4,0x00,0x84,0x00,0x08},/*"&",6*/
{0x08,0x00,0x68,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x18,0x18,0x20,0x04,0x40,0x02,0x00,0x00},/*"(",8*/
{0x00,0x00,0x40,0x02,0x20,0x04,0x18,0x18,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00},/*")",9*/
{0x02,0x40,0x02,0x40,0x01,0x80,0x0F,0xF0,0x01,0x80,0x02,0x40,0x02,0x40,0x00,0x00},/*"*",10*/
{0x00,0x80,0x00,0x80,0x00,0x80,0x0F,0xF8,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00},/*"+",11*/
{0x00,0x01,0x00,0x0D,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*",",12*/
{0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80},/*"-",13*/
{0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*".",14*/
{0x00,0x00,0x00,0x06,0x00,0x18,0x00,0x60,0x01,0x80,0x06,0x00,0x18,0x00,0x20,0x00},/*"/",15*/
{0x00,0x00,0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"0",16*/
{0x00,0x00,0x08,0x04,0x08,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"1",17*/
{0x00,0x00,0x0E,0x0C,0x10,0x14,0x10,0x24,0x10,0x44,0x11,0x84,0x0E,0x0C,0x00,0x00},/*"2",18*/
{0x00,0x00,0x0C,0x18,0x10,0x04,0x11,0x04,0x11,0x04,0x12,0x88,0x0C,0x70,0x00,0x00},/*"3",19*/
{0x00,0x00,0x00,0xE0,0x03,0x20,0x04,0x24,0x08,0x24,0x1F,0xFC,0x00,0x24,0x00,0x00},/*"4",20*/
{0x00,0x00,0x1F,0x98,0x10,0x84,0x11,0x04,0x11,0x04,0x10,0x88,0x10,0x70,0x00,0x00},/*"5",21*/
{0x00,0x00,0x07,0xF0,0x08,0x88,0x11,0x04,0x11,0x04,0x18,0x88,0x00,0x70,0x00,0x00},/*"6",22*/
{0x00,0x00,0x1C,0x00,0x10,0x00,0x10,0xFC,0x13,0x00,0x1C,0x00,0x10,0x00,0x00,0x00},/*"7",23*/
{0x00,0x00,0x0E,0x38,0x11,0x44,0x10,0x84,0x10,0x84,0x11,0x44,0x0E,0x38,0x00,0x00},/*"8",24*/
{0x00,0x00,0x07,0x00,0x08,0x8C,0x10,0x44,0x10,0x44,0x08,0x88,0x07,0xF0,0x00,0x00},/*"9",25*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x03,0x0C,0x00,0x00,0x00,0x00,0x00,0x00},/*":",26*/
{0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*";",27*/
{0x00,0x00,0x00,0x80,0x01,0x40,0x02,0x20,0x04,0x10,0x08,0x08,0x10,0x04,0x00,0x00},/*"<",28*/
{0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00},/*"=",29*/
{0x00,0x00,0x10,0x04,0x08,0x08,0x04,0x10,0x02,0x20,0x01,0x40,0x00,0x80,0x00,0x00},/*">",30*/
{0x00,0x00,0x0E,0x00,0x12,0x00,0x10,0x0C,0x10,0x6C,0x10,0x80,0x0F,0x00,0x00,0x00},/*"?",31*/
{0x03,0xE0,0x0C,0x18,0x13,0xE4,0x14,0x24,0x17,0xC4,0x08,0x28,0x07,0xD0,0x00,0x00},/*"@",32*/
{0x00,0x04,0x00,0x3C,0x03,0xC4,0x1C,0x40,0x07,0x40,0x00,0xE4,0x00,0x1C,0x00,0x04},/*"A",33*/
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x04,0x11,0x04,0x0E,0x88,0x00,0x70,0x00,0x00},/*"B",34*/
{0x03,0xE0,0x0C,0x18,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x08,0x1C,0x10,0x00,0x00},/*"C",35*/
{0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"D",36*/
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x04,0x17,0xC4,0x10,0x04,0x08,0x18,0x00,0x00},/*"E",37*/
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x00,0x17,0xC0,0x10,0x00,0x08,0x00,0x00,0x00},/*"F",38*/
{0x03,0xE0,0x0C,0x18,0x10,0x04,0x10,0x04,0x10,0x44,0x1C,0x78,0x00,0x40,0x00,0x00},/*"G",39*/
{0x10,0x04,0x1F,0xFC,0x10,0x84,0x00,0x80,0x00,0x80,0x10,0x84,0x1F,0xFC,0x10,0x04},/*"H",40*/
{0x00,0x00,0x10,0x04,0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x04,0x00,0x00,0x00,0x00},/*"I",41*/
{0x00,0x03,0x00,0x01,0x10,0x01,0x10,0x01,0x1F,0xFE,0x10,0x00,0x10,0x00,0x00,0x00},/*"J",42*/
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x03,0x80,0x14,0x64,0x18,0x1C,0x10,0x04,0x00,0x00},/*"K",43*/
{0x10,0x04,0x1F,0xFC,0x10,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00},/*"L",44*/
{0x10,0x04,0x1F,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x1F,0xFC,0x10,0x04,0x00,0x00},/*"M",45*/
{0x10,0x04,0x1F,0xFC,0x0C,0x04,0x03,0x00,0x00,0xE0,0x10,0x18,0x1F,0xFC,0x10,0x00},/*"N",46*/
{0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"O",47*/
{0x10,0x04,0x1F,0xFC,0x10,0x84,0x10,0x80,0x10,0x80,0x10,0x80,0x0F,0x00,0x00,0x00},/*"P",48*/
{0x07,0xF0,0x08,0x18,0x10,0x24,0x10,0x24,0x10,0x1C,0x08,0x0A,0x07,0xF2,0x00,0x00},/*"Q",49*/
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x00,0x11,0xC0,0x11,0x30,0x0E,0x0C,0x00,0x04},/*"R",50*/
{0x00,0x00,0x0E,0x1C,0x11,0x04,0x10,0x84,0x10,0x84,0x10,0x44,0x1C,0x38,0x00,0x00},/*"S",51*/
{0x18,0x00,0x10,0x00,0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x00,0x18,0x00,0x00,0x00},/*"T",52*/
{0x10,0x00,0x1F,0xF8,0x10,0x04,0x00,0x04,0x00,0x04,0x10,0x04,0x1F,0xF8,0x10,0x00},/*"U",53*/
{0x10,0x00,0x1E,0x00,0x11,0xE0,0x00,0x1C,0x00,0x70,0x13,0x80,0x1C,0x00,0x10,0x00},/*"V",54*/
{0x1F,0xC0,0x10,0x3C,0x00,0xE0,0x1F,0x00,0x00,0xE0,0x10,0x3C,0x1F,0xC0,0x00,0x00},/*"W",55*/
{0x10,0x04,0x18,0x0C,0x16,0x34,0x01,0xC0,0x01,0xC0,0x16,0x34,0x18,0x0C,0x10,0x04},/*"X",56*/
{0x10,0x00,0x1C,0x00,0x13,0x04,0x00,0xFC,0x13,0x04,0x1C,0x00,0x10,0x00,0x00,0x00},/*"Y",57*/
{0x08,0x04,0x10,0x1C,0x10,0x64,0x10,0x84,0x13,0x04,0x1C,0x04,0x10,0x18,0x00,0x00},/*"Z",58*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x40,0x02,0x40,0x02,0x40,0x02,0x00,0x00},/*"[",59*/
{0x00,0x00,0x30,0x00,0x0C,0x00,0x03,0x80,0x00,0x60,0x00,0x1C,0x00,0x03,0x00,0x00},/*"\",60*/
{0x00,0x00,0x40,0x02,0x40,0x02,0x40,0x02,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00},/*"]",61*/
{0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x00,0x00},/*"^",62*/
{0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01},/*"_",63*/
{0x00,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/
{0x00,0x00,0x00,0x98,0x01,0x24,0x01,0x44,0x01,0x44,0x01,0x44,0x00,0xFC,0x00,0x04},/*"a",65*/
{0x10,0x00,0x1F,0xFC,0x00,0x88,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x70,0x00,0x00},/*"b",66*/
{0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x00},/*"c",67*/
{0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x11,0x08,0x1F,0xFC,0x00,0x04},/*"d",68*/
{0x00,0x00,0x00,0xF8,0x01,0x44,0x01,0x44,0x01,0x44,0x01,0x44,0x00,0xC8,0x00,0x00},/*"e",69*/
{0x00,0x00,0x01,0x04,0x01,0x04,0x0F,0xFC,0x11,0x04,0x11,0x04,0x11,0x00,0x18,0x00},/*"f",70*/
{0x00,0x00,0x00,0xD6,0x01,0x29,0x01,0x29,0x01,0x29,0x01,0xC9,0x01,0x06,0x00,0x00},/*"g",71*/
{0x10,0x04,0x1F,0xFC,0x00,0x84,0x01,0x00,0x01,0x00,0x01,0x04,0x00,0xFC,0x00,0x04},/*"h",72*/
{0x00,0x00,0x01,0x04,0x19,0x04,0x19,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"i",73*/
{0x00,0x00,0x00,0x03,0x00,0x01,0x01,0x01,0x19,0x01,0x19,0xFE,0x00,0x00,0x00,0x00},/*"j",74*/
{0x10,0x04,0x1F,0xFC,0x00,0x24,0x00,0x40,0x01,0xB4,0x01,0x0C,0x01,0x04,0x00,0x00},/*"k",75*/
{0x00,0x00,0x10,0x04,0x10,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"l",76*/
{0x01,0x04,0x01,0xFC,0x01,0x04,0x01,0x00,0x01,0xFC,0x01,0x04,0x01,0x00,0x00,0xFC},/*"m",77*/
{0x01,0x04,0x01,0xFC,0x00,0x84,0x01,0x00,0x01,0x00,0x01,0x04,0x00,0xFC,0x00,0x04},/*"n",78*/
{0x00,0x00,0x00,0xF8,0x01,0x04,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0xF8,0x00,0x00},/*"o",79*/
{0x01,0x01,0x01,0xFF,0x00,0x85,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x70,0x00,0x00},/*"p",80*/
{0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x01,0x05,0x01,0xFF,0x00,0x01},/*"q",81*/
{0x01,0x04,0x01,0x04,0x01,0xFC,0x00,0x84,0x01,0x04,0x01,0x00,0x01,0x80,0x00,0x00},/*"r",82*/
{0x00,0x00,0x00,0xCC,0x01,0x24,0x01,0x24,0x01,0x24,0x01,0x24,0x01,0x98,0x00,0x00},/*"s",83*/
{0x00,0x00,0x01,0x00,0x01,0x00,0x07,0xF8,0x01,0x04,0x01,0x04,0x00,0x00,0x00,0x00},/*"t",84*/
{0x01,0x00,0x01,0xF8,0x00,0x04,0x00,0x04,0x00,0x04,0x01,0x08,0x01,0xFC,0x00,0x04},/*"u",85*/
{0x01,0x00,0x01,0x80,0x01,0x70,0x00,0x0C,0x00,0x10,0x01,0x60,0x01,0x80,0x01,0x00},/*"v",86*/
{0x01,0xF0,0x01,0x0C,0x00,0x30,0x01,0xC0,0x00,0x30,0x01,0x0C,0x01,0xF0,0x01,0x00},/*"w",87*/
{0x00,0x00,0x01,0x04,0x01,0x8C,0x00,0x74,0x01,0x70,0x01,0x8C,0x01,0x04,0x00,0x00},/*"x",88*/
{0x01,0x01,0x01,0x81,0x01,0x71,0x00,0x0E,0x00,0x18,0x01,0x60,0x01,0x80,0x01,0x00},/*"y",89*/
{0x00,0x00,0x01,0x84,0x01,0x0C,0x01,0x34,0x01,0x44,0x01,0x84,0x01,0x0C,0x00,0x00},/*"z",90*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x3E,0xFC,0x40,0x02,0x40,0x02},/*"{",91*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00},/*"|",92*/
{0x00,0x00,0x40,0x02,0x40,0x02,0x3E,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"}",93*/
{0x00,0x00,0x60,0x00,0x80,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00},/*"~",94*/
};


#endif
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16802

    瀏覽量

    349377
  • RGB
    RGB
    +關(guān)注

    關(guān)注

    4

    文章

    794

    瀏覽量

    58307
  • TFT
    TFT
    +關(guān)注

    關(guān)注

    10

    文章

    381

    瀏覽量

    110809
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    2.8寸屏下載程序后按復(fù)位瞬間屏亮了下,后面就黑了

    修改了原子哥的IO控制,我用的IO跟原程序不一樣,其它的什么都沒(méi)改。4、再將程序貼上來(lái),請(qǐng)朋友們幫看看,指出其中的問(wèn)題。謝謝! ALIENTEK MINISTM32 實(shí)驗(yàn)10 TFTLCD顯示
    發(fā)表于 04-19 04:43

    新手裸機(jī)移植uCGUI編譯時(shí)出現(xiàn)下圖錯(cuò)誤

    我用的戰(zhàn)艦板子,在原子大哥的TFTLCD顯示實(shí)驗(yàn)上移植的,編譯時(shí)出現(xiàn)這樣的錯(cuò)誤,如圖。還請(qǐng)大家指點(diǎn)迷津??!不勝感謝?。?/div>
    發(fā)表于 05-21 21:07

    TFTLCD顯示實(shí)驗(yàn)寫(xiě)入程序后屏幕閃一下就不亮了是怎么回事?

    做ALIENTEK MINISTM32 實(shí)驗(yàn)10 TFTLCD顯示實(shí)驗(yàn)時(shí),寫(xiě)入程序后屏幕閃一下就一直不亮,請(qǐng)問(wèn)什么原因,怎么解決
    發(fā)表于 07-25 00:20

    「正點(diǎn)原子STM32Mini板資料連載」第十六章 TFTLCD 顯示實(shí)驗(yàn)

    1)實(shí)驗(yàn)平臺(tái):正點(diǎn)原子STM32mini開(kāi)發(fā)板2)摘自《正點(diǎn)原子STM32 不完全手冊(cè)(HAL 庫(kù)版)》關(guān)注官方微信號(hào)公眾號(hào),獲取更多資料:正點(diǎn)原子第十六章 TFTLCD 顯示實(shí)驗(yàn)上一
    發(fā)表于 04-08 14:47

    TFTLCD顯示實(shí)驗(yàn)的寄存器歷程出現(xiàn)錯(cuò)誤

    TEST.axf: Error: L6218E: Undefined symbol USART_RX_BUF (referred from usmart.o).TEST.axf: Error: L6218E: Undefined symbol USART_RX_STA (referred from usmart.o).TEST.axf: Error: L6218E: Undefined symbol led_set (referred from usmart_config.o).TEST.axf: Error: L6218E: Undefined symbol test_fun (referred from usmart_config.o).TEST.axf: Not enough information to list image symbols.TEST.axf: Finished: 1 information, 0 warning and 4 error messages.把usmart的頭文件加入產(chǎn)生的錯(cuò)誤
    發(fā)表于 04-14 01:47

    「正點(diǎn)原子NANO STM32開(kāi)發(fā)板資料連載第二十五章 TFTLCD 顯示實(shí)驗(yàn)

    顯示實(shí)驗(yàn)前幾章的實(shí)例均沒(méi)有涉及到液晶顯示,這一章我們將向大家介紹 1.3 寸 TFTLCD 顯示屏模塊。該
    發(fā)表于 04-22 14:50

    如何用stm32f101CBT6控制顯示LCD?

    本人想用STM32F101控制顯示單色LCD,LCD是12232C-8,122*32的,程序就只是簡(jiǎn)單的在LCD上顯示數(shù)字即可,代碼想修改原子的代碼,是寄存器版本的實(shí)驗(yàn)10TFTLCD
    發(fā)表于 06-01 15:53

    「ALIENTEK 探索者 STM32F407 開(kāi)發(fā)板資料連載」第十八章 TFTLCD 顯示實(shí)驗(yàn)

    1)實(shí)驗(yàn)平臺(tái):alientek 阿波羅 STM32F767 開(kāi)發(fā)板2)摘自《STM32F7 開(kāi)發(fā)指南(HAL 庫(kù)版)》關(guān)注官方微信號(hào)公眾號(hào),獲取更多資料:正點(diǎn)原子第十八章 TFTLCD 顯示實(shí)
    發(fā)表于 06-06 11:29

    開(kāi)發(fā)板的顯示屏怎么設(shè)置一開(kāi)機(jī)就顯示

    本來(lái)是通電后,按電源開(kāi)關(guān),顯示屏就一起打開(kāi)的。然后我看視頻用ISP寫(xiě)入了一個(gè)實(shí)驗(yàn)代碼,現(xiàn)在打開(kāi)電源開(kāi)關(guān)屏幕不跟著一起打開(kāi),怎么恢復(fù)呢。我寫(xiě)入TFTLCD顯示
    發(fā)表于 10-19 07:13

    ALIENTEK_MINISTM32_實(shí)驗(yàn)10_TFT_LCD顯示

    ALIENTEK MINISTM32 實(shí)驗(yàn)10 TFTLCD顯示實(shí)驗(yàn),很好的資料,快來(lái)下載吧
    發(fā)表于 02-19 11:37 ?45次下載

    進(jìn)行TFT LCD顯示實(shí)驗(yàn)GUI移植完成和4.3電容屏的詳細(xì)資料合集

    本文檔的主要內(nèi)容詳細(xì)介紹的是進(jìn)行TFTLCD顯示實(shí)驗(yàn)GUI移植完成和4.3電容屏的詳細(xì)資料合集。
    發(fā)表于 05-23 17:15 ?28次下載
    進(jìn)行TFT LCD<b class='flag-5'>顯示</b><b class='flag-5'>實(shí)驗(yàn)</b>GUI移植完成和4.3電容屏的詳細(xì)資料合集

    STM32入門(mén)學(xué)習(xí)筆記之TFTLCD顯示實(shí)驗(yàn)1

    之前在51為核心的系統(tǒng)里面,常用的顯示器件有LED,數(shù)碼管,LCD1602和LCD12864,這些器件都有一個(gè)共同的特點(diǎn),那就是只有一個(gè)顏色,沒(méi)有辦法顯示彩色圖片,為了顯示彩色圖片,我們引入了TFT
    的頭像 發(fā)表于 02-16 11:05 ?4024次閱讀
    STM32入門(mén)學(xué)習(xí)筆記之<b class='flag-5'>TFTLCD</b><b class='flag-5'>顯示</b><b class='flag-5'>實(shí)驗(yàn)</b>1

    STM32入門(mén)學(xué)習(xí)筆記之TFTLCD顯示實(shí)驗(yàn)2

    之前在51為核心的系統(tǒng)里面,常用的顯示器件有LED,數(shù)碼管,LCD1602和LCD12864,這些器件都有一個(gè)共同的特點(diǎn),那就是只有一個(gè)顏色,沒(méi)有辦法顯示彩色圖片,為了顯示彩色圖片,我們引入了TFT
    的頭像 發(fā)表于 02-16 11:05 ?686次閱讀

    STM32入門(mén)學(xué)習(xí)筆記之TFTLCD顯示實(shí)驗(yàn)3

    之前在51為核心的系統(tǒng)里面,常用的顯示器件有LED,數(shù)碼管,LCD1602和LCD12864,這些器件都有一個(gè)共同的特點(diǎn),那就是只有一個(gè)顏色,沒(méi)有辦法顯示彩色圖片,為了顯示彩色圖片,我們引入了TFT
    的頭像 發(fā)表于 02-16 11:05 ?1362次閱讀

    STM32入門(mén)學(xué)習(xí)筆記之TFTLCD顯示實(shí)驗(yàn)4

    之前在51為核心的系統(tǒng)里面,常用的顯示器件有LED,數(shù)碼管,LCD1602和LCD12864,這些器件都有一個(gè)共同的特點(diǎn),那就是只有一個(gè)顏色,沒(méi)有辦法顯示彩色圖片,為了顯示彩色圖片,我們引入了TFT
    的頭像 發(fā)表于 02-16 11:06 ?971次閱讀