找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3898|回复: 1
收起左侧

Stm32 ILI9431 3寸触摸屏源程序与资料下载

[复制链接]
ID:465301 发表于 2019-1-9 18:32 | 显示全部楼层 |阅读模式
一、用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为高电平状态下,读取两个字节数据,第一个字节为高八位,第二个字节为低八位。

0.png

程序功能介绍:上电后屏幕显示40*40小图片若干和一些字符。按S4按键会显示纯色,每按一次颜色变一次,红绿蓝交替显示.

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"         
  7. #include "24cxx.h"
  8. #include "flash.h"
  9. #include "flash.h"
  10. #include "spi.h"          

  11. u8 state=0;
  12. void beepms(u16 va);
  13. void xianshi(void);//显示信息  
  14. void refshow(void);//刷新显示

  15. void Load_Drow_Dialog(void)
  16. {
  17.         LCD_Clear(WHITE);//清屏   
  18.         POINT_COLOR=BLUE;//设置字体为蓝色
  19.         LCD_ShowString(lcddev.width-24,0,200,16,16,"RST");//显示清屏区域
  20.           POINT_COLOR=RED;//设置画笔蓝色
  21. }
  22. void xianshi()//显示信息
  23. {
  24.         BACK_COLOR=WHITE;
  25.         POINT_COLOR=RED;   
  26.         //显示32*32汉字
  27.         showhanzi32(0,0,0);         //淘
  28.         showhanzi32(40,0,1);         //晶
  29.         showhanzi32(80,0,2);    //驰
  30.         //显示16*16汉字
  31.         showhanzi16(0,35,0);          //专
  32.         showhanzi16(20,35,1);          //注
  33.         showhanzi16(40,35,2);          //显
  34.         showhanzi16(60,35,3);          //示
  35.         showhanzi16(80,35,4);          //方
  36.         showhanzi16(100,35,5);          //案          
  37.         LCD_ShowString(0,55,200,16,16,"2.2 TFT SPI 240*320");
  38. }
  39. void showqq()
  40. {
  41.         u16 x,y;
  42.         x=0;
  43.         y=75;
  44.         while(y<lcddev.height-39)
  45.         {
  46.                 x=0;
  47.                 while(x<lcddev.width-39)
  48.                 {
  49.                         showimage(x,y);       
  50.                         x+=40;
  51.                 }
  52.                 y+=40;
  53.          }          
  54. }
  55. void refshow(void)         //刷新显示
  56. {
  57.         switch(state)
  58.         {
  59.                 case 0:
  60.                 LCD_Clear(WHITE);
  61.             xianshi();
  62.             showqq();
  63.                 break;
  64.                 case 1:
  65.                 LCD_Clear(BLACK);       
  66.                 break;
  67.                 case 2:
  68.                 LCD_Clear(RED);
  69.                 break;
  70.                 case 3:
  71.                 LCD_Clear(GREEN);
  72.                 break;
  73.                 case 4:
  74.                 LCD_Clear(BLUE);
  75.                 break;
  76.         }       
  77. }
  78. void jiance(u8 key) //检测按键
  79. {
  80.         if(key==2)
  81.         {
  82.                 state++;       
  83.                 if(state==5)
  84.                 {
  85.                         state=0;
  86.                 }
  87.                 refshow();//刷新显示
  88.         }

  89. }
  90. void beepms(u16 va)
  91. {
  92.         beep=1;
  93.         delay_ms(va);
  94.     beep=0;
  95. }                               
  96. int main(void)
  97. {         
  98.         u16 i=0;         
  99.         u8 key=0;       
  100.         delay_init();                     //延时函数初始化          
  101.         NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  102.         uart_init(9600);                 //串口初始化为9600
  103.         LED_Init();                             //LED端口初始化
  104.     SPI_Flash_Init();//初始化Flash;
  105.         KEY_Init();         //按键初始化                    
  106.                 
  107.         SPI1_Init();        //SPI1初始化
  108.         LCD_Init();                                 
  109.         POINT_COLOR=RED;//设置字体为红色
  110.         xianshi();           //显示信息
  111.         showqq();           //显示QQ
  112.         while(1)
  113.         {
  114.            key=KEY_Scan(0);//扫描按键
  115.             jiance(key);//检测按键  

  116.                 i++;
  117.                 if(i==65000)
  118.                 {
  119.                         i=0;
  120.                         LED0=!LED0;
  121.                 }
  122.         }
  123. }
复制代码

所有资料51hei提供下载:
3寸触摸屏.7z (4.04 MB, 下载次数: 97)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:1577 发表于 2022-8-26 01:40 | 显示全部楼层
非常感谢 刚进了9431屏
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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