STM32控制TFTLCD显示屏(理论)

        原本不想学LCD屏幕的,但是有两个想法:一个是玩摄像头模块,另一个是想做一个示波器,买的话太贵,试试自己能不能做出来,这两个东西都不得不用到TFTLCD显示,从基础抓起,会显示,才能配置更高级的东西。

        一个就是显存展现图像的颜色输出格式(RGB格式:565)正常一个输出16位数据高5位表示红色(11111:表示红色;00000:表示白色),中间6位表示绿色,最低四位表示蓝色,0位和12位不能用,所以18位变成16位:

控制屏幕的方法:说实话没有太理解,但是我会用(哈哈哈),找出来让大家体会一下。

我的理解:就是其实都是16位数据,无论是控制芯片ILI9341的指令,还是读写GRAM,只不过在控制ILI9341时,高8位默认不要,直接舍弃

看一下官方的原话(ILI9341是这个显示屏的驱动芯片,控制它就能控制这个屏幕)

看一下这个指令以及参数:

这是指令的解释: 从上表可以看出,0XD3 指令后面跟了 4 个参数,最后 2 个参数,读出来是 0X93 和 0X41, 刚好是我们控制器 ILI9341 的数字部分,从而,通过该指令,即可判别所用的 LCD 驱动器是什 么型号,这样,我们的代码,就可以根据控制器的型号去执行对应驱动 IC 的初始化代码,从而 兼容不同驱动 IC 的屏,使得一个代码支持多款 LCD。

#include "system.h" #include "SysTick.h" #include "led.h" #include "usart.h" #include "tftlcd.h" #include "dht11.h" #include "ds18b20.h" u8 temp; u8 humi; u8 temp_buf[3],humi_buf[3]; void data_pros() //Êý¾Ý´¦Àíº¯Êý { DHT11_Read_Data(&temp;,&humi;); temp_buf[0]=temp/10+0x30; temp_buf[1]=temp+0x30; temp_buf[2]='\0'; humi_buf[0]=humi/10+0x30; humi_buf[1]=humi+0x30; humi_buf[2]='\0'; } int main() { u8 i=0; u8 temper; SysTick_Init(168); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //ÖжÏÓÅÏȼ¶·Ö×é ·Ö2×é LED_Init(); USART1_Init(9600); TFTLCD_Init(); //LCD³õʼ»¯ FRONT_COLOR=BLACK; LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,16,"PRECHIN STM32F4"); LCD_ShowString(10,30,tftlcd_data.width,tftlcd_data.height,16,"www.prechin.net"); LCD_ShowString(10,50,tftlcd_data.width,tftlcd_data.height,16,"DHT11 Test"); LCD_ShowString(10,100,tftlcd_data.width,tftlcd_data.height,16,"Temp: C"); LCD_ShowString(10,130,tftlcd_data.width,tftlcd_data.height,16,"Humi: %RH"); FRONT_COLOR=RED; while(DHT11_Init()) //¼ì²âDS18B20ÊÇ·ñ´¿ÔÚ { LCD_ShowString(130,50,tftlcd_data.width,tftlcd_data.height,16,"Error "); delay_ms(500); } LCD_ShowString(130,50,tftlcd_data.width,tftlcd_data.height,16,"Success"); while(1) { i++; if(iP==0) { temper=DS18B20_GetTemperture(); led1=!led1; data_pros(); //¶Áȡһ´ÎDHT11Êý¾Ý×îÉÙÒª´óÓÚ100ms } LCD_ShowString(55,100,tftlcd_data.width,tftlcd_data.height,16,temp_buf); LCD_ShowString(55,130,tftlcd_data.width,tftlcd_data.height,16,humi_buf); LCD_ShowNum(55,160,temper,8,12); delay_ms(10); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的猫咪死了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值