一、用STM32控制TFTLCD显示的编程方法,在编程驱动TFTLCD液晶显示器之前,我们先熟悉以下概念:
1、色彩深度,这是一个与TFTLCD显存对应的概念;所谓色彩深度就是每个像素点需要多少位的RGB
数据表示该点的颜色信息。注意,不同的TFTLCD显示器的RGB的对应关系不一样,这个可以在LCD
控制芯片手册中找到答案。
例: 某LCD显示支持8、16、24位RGB,这些位数是指该像素点颜色由8、16、24位RGB构成,但是
R\G\B三种颜色各占的位数可以查看数据手册。
2、TFTLCD的操作分为两种:
A、对控制寄存器的读写操作(即程序员将要操作LCD显存寄存器的地址设置成可读或者可写)。
B、对显存寄存器的读写操作(即读写LCD显存寄存器)。
3、TFTLCD有一个索引寄存器,对控制寄存器操作前,需要对索引寄存器进行定入操作,用以指明
寄存器读写是针对那个寄存器的,具体操作步骤如下:
RS为低电平状态下,写入两个字节的数据,第一个字节为零,第二个字节为寄存器索引值。
RS为高电平状态下,读取两个字节数据,第一个字节为高八位,第二个字节为低八位。
程序功能介绍:上电后屏幕显示40*40小图片若干和一些字符。按S4按键会显示纯色,每按一次颜色变一次,红绿蓝交替显示.
单片机源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "lcd.h"
- #include "usart.h"
- #include "24cxx.h"
- #include "flash.h"
- #include "flash.h"
- #include "spi.h"
- u8 state=0;
- void beepms(u16 va);
- void xianshi(void);//显示信息
- void refshow(void);//刷新显示
- void Load_Drow_Dialog(void)
- {
- LCD_Clear(WHITE);//清屏
- POINT_COLOR=BLUE;//设置字体为蓝色
- LCD_ShowString(lcddev.width-24,0,200,16,16,"RST");//显示清屏区域
- POINT_COLOR=RED;//设置画笔蓝色
- }
- void xianshi()//显示信息
- {
- BACK_COLOR=WHITE;
- POINT_COLOR=RED;
- //显示32*32汉字
- showhanzi32(0,0,0); //淘
- showhanzi32(40,0,1); //晶
- showhanzi32(80,0,2); //驰
- //显示16*16汉字
- showhanzi16(0,35,0); //专
- showhanzi16(20,35,1); //注
- showhanzi16(40,35,2); //显
- showhanzi16(60,35,3); //示
- showhanzi16(80,35,4); //方
- showhanzi16(100,35,5); //案
- LCD_ShowString(0,55,200,16,16,"2.2 TFT SPI 240*320");
- }
- void showqq()
- {
- u16 x,y;
- x=0;
- y=75;
- while(y<lcddev.height-39)
- {
- x=0;
- while(x<lcddev.width-39)
- {
- showimage(x,y);
- x+=40;
- }
- y+=40;
- }
- }
- void refshow(void) //刷新显示
- {
- switch(state)
- {
- case 0:
- LCD_Clear(WHITE);
- xianshi();
- showqq();
- break;
- case 1:
- LCD_Clear(BLACK);
- break;
- case 2:
- LCD_Clear(RED);
- break;
- case 3:
- LCD_Clear(GREEN);
- break;
- case 4:
- LCD_Clear(BLUE);
- break;
- }
- }
- void jiance(u8 key) //检测按键
- {
- if(key==2)
- {
- state++;
- if(state==5)
- {
- state=0;
- }
- refshow();//刷新显示
- }
- }
- void beepms(u16 va)
- {
- beep=1;
- delay_ms(va);
- beep=0;
- }
- int main(void)
- {
- u16 i=0;
- u8 key=0;
- delay_init(); //延时函数初始化
- NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
- uart_init(9600); //串口初始化为9600
- LED_Init(); //LED端口初始化
- SPI_Flash_Init();//初始化Flash;
- KEY_Init(); //按键初始化
-
- SPI1_Init(); //SPI1初始化
- LCD_Init();
- POINT_COLOR=RED;//设置字体为红色
- xianshi(); //显示信息
- showqq(); //显示QQ
- while(1)
- {
- key=KEY_Scan(0);//扫描按键
- jiance(key);//检测按键
- i++;
- if(i==65000)
- {
- i=0;
- LED0=!LED0;
- }
- }
- }
复制代码
所有资料51hei提供下载:
3寸触摸屏.7z
(4.04 MB, 下载次数: 97)
|