找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4661|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

Stm32 ILI9431 3寸觸摸屏源程序與資料下載

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
一、用STM32控制TFTLCD顯示的編程方法,在編程驅(qū)動(dòng)TFTLCD液晶顯示器之前,我們先熟悉以下概念:
1、色彩深度,這是一個(gè)與TFTLCD顯存對(duì)應(yīng)的概念;所謂色彩深度就是每個(gè)像素點(diǎn)需要多少位的RGB
      數(shù)據(jù)表示該點(diǎn)的顏色信息。注意,不同的TFTLCD顯示器的RGB的對(duì)應(yīng)關(guān)系不一樣,這個(gè)可以在LCD
      控制芯片手冊(cè)中找到答案。
     例: 某LCD顯示支持8、16、24位RGB,這些位數(shù)是指該像素點(diǎn)顏色由8、16、24位RGB構(gòu)成,但是
     R\G\B三種顏色各占的位數(shù)可以查看數(shù)據(jù)手冊(cè)。

2、TFTLCD的操作分為兩種:

A、對(duì)控制寄存器的讀寫操作(即程序員將要操作LCD顯存寄存器的地址設(shè)置成可讀或者可寫)。
B、對(duì)顯存寄存器的讀寫操作(即讀寫LCD顯存寄存器)。
3、TFTLCD有一個(gè)索引寄存器,對(duì)控制寄存器操作前,需要對(duì)索引寄存器進(jìn)行定入操作,用以指明
      寄存器讀寫是針對(duì)那個(gè)寄存器的,具體操作步驟如下:

RS為低電平狀態(tài)下,寫入兩個(gè)字節(jié)的數(shù)據(jù),第一個(gè)字節(jié)為零,第二個(gè)字節(jié)為寄存器索引值。
RS為高電平狀態(tài)下,讀取兩個(gè)字節(jié)數(shù)據(jù),第一個(gè)字節(jié)為高八位,第二個(gè)字節(jié)為低八位。



程序功能介紹:上電后屏幕顯示40*40小圖片若干和一些字符。按S4按鍵會(huì)顯示純色,每按一次顏色變一次,紅綠藍(lán)交替顯示.

單片機(jī)源程序如下:
  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;//設(shè)置字體為藍(lán)色
  19.         LCD_ShowString(lcddev.width-24,0,200,16,16,"RST");//顯示清屏區(qū)域
  20.           POINT_COLOR=RED;//設(shè)置畫筆藍(lán)色
  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) //檢測(cè)按鍵
  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();                     //延時(shí)函數(shù)初始化          
  101.         NVIC_Configuration();          //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
  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;//設(shè)置字體為紅色
  110.         xianshi();           //顯示信息
  111.         showqq();           //顯示QQ
  112.         while(1)
  113.         {
  114.            key=KEY_Scan(0);//掃描按鍵
  115.             jiance(key);//檢測(cè)按鍵  

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

所有資料51hei提供下載:
3寸觸摸屏.7z (4.04 MB, 下載次數(shù): 99)




評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1577 發(fā)表于 2022-8-26 01:40 | 只看該作者
非常感謝 剛進(jìn)了9431屏
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表