找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

零知開源分享 - 增強(qiáng)板FSMC接口TFT顯示屏實(shí)驗(yàn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
零知增強(qiáng)板與標(biāo)準(zhǔn)板相比,增強(qiáng)板增加了FSMC接口,該接口能很方便的連接TFT顯示屏,進(jìn)行LCD相關(guān)的顯示操作,下面以ILI9341型號為例介紹在零知-增強(qiáng)板上的使用方法。1、硬件準(zhǔn)備
(1)零知開發(fā)板-增強(qiáng)板




零知增強(qiáng)板采用Arduino mega2560相同的板框設(shè)計(jì),同時(shí)引腳接口和mega2560完全兼容。零知增強(qiáng)板使用了STM32F407VET6 作為MCU,包含70個(gè)IO引腳、16路PWM、16路ADC(12位精度)、6個(gè)UART接口,還擁有FSMC、DCMI、I2S、CAN、Ethernet、SDIO、SWD、USB-OTG等專用外設(shè)接口,其中的DCMI接口單獨(dú)引出可以直接接入OV2640/OV7670模塊使用;板上的一個(gè)USB轉(zhuǎn)串口設(shè)備接口可以配合零知開發(fā)工具實(shí)現(xiàn)一鍵下載,使用非常方便。
(2)TFT液晶顯示屏


(3)杜邦線若干
2、電路連接
為了高速顯示,我們使用LCD的16位模式,因此我們要把LCD模塊在硬件上切換到16位模式(一般是通過短路或者斷開一個(gè)焊點(diǎn))。這里我們先使用杜邦線連接,后面會(huì)考慮做一個(gè)擴(kuò)展板直接插入LCD模塊以去除連線的麻煩,線路如下進(jìn)行連接:



3、程序
確保連線正確即可上傳程序驗(yàn)證可不可行。使用零知開發(fā)工具。



零知實(shí)驗(yàn)室官網(wǎng)提供完整的工程,可以免費(fèi)獲取。完整工程需放置到軟件庫目錄的project目錄下,然后在零知開發(fā)工具中打開,已經(jīng)把接口進(jìn)行了二次封裝以便更易使用,在這個(gè)基礎(chǔ)上再進(jìn)行自己的開發(fā)將會(huì)非常容易。
核心代碼如下:
  1. /**********************************************************
  2. *    文件: fsmc-ili9341.ino      by 零知實(shí)驗(yàn)
  3. *    -^^- 零知開源,讓電子制作變得更簡單! -^^-
  4. ************************************************************/

  5. #include "fsmc_tft.h"

  6. //圖片測試文件
  7. #include "image_board.h"
  8. #include "img1.h"
  9. #include "img2.h"
  10. #include "img3.h"
  11. #include "img4.h"
  12. #include "img5.h"
  13. #include "img6.h"
  14. #include "img7.h"

  15. FSMC_TFT tft;

  16. // 復(fù)位或上電后運(yùn)行一次:
  17. void setup() {
  18.     //在這里加入初始化相關(guān)代碼,只運(yùn)行一次:
  19.         Serial.begin(9600);

  20.         Serial.println("init lcd");

  21.         tft.begin();
  22.          
  23.         uint16_t lcd_id = tft.get_id();

  24.         Serial.print("init done, lcd id:0x");
  25.         Serial.println(lcd_id,HEX);
  26.          
  27.         /*********************************************************/
  28.          
  29.         //清屏
  30.         tft.clear(WHITE);
  31.                  
  32.         //設(shè)置背景:WHITE, 繪圖顏色:RED
  33.         tft.setColor(WHITE, RED);
  34.          
  35.         //顯示字符串,x,y坐標(biāo),尺寸大小
  36.         tft.print(16,10,24, "www點(diǎn)lingzhilab<font face="&quot;">點(diǎn)</font>com");
  37.          
  38.         tft.setColor(WHITE, BLUE);
  39.         //顯示自定義漢字,為減小代碼體積,在tft_font中開啟16號/24號字體,再然后這里就可以使用了,要與開啟字號對應(yīng)
  40.         tft.printCN(70,40,24,"零知開源");
  41.         tft.printCN(2,70,24,"讓電子制作變得更簡單");
  42.          
  43.         //圖片表情
  44.         tft.showPicture(0,100,20,120,gImage_1);
  45.         tft.showPicture(30,100,50,120,gImage_2);
  46.         tft.showPicture(60,100,80,120,gImage_3);
  47.         tft.showPicture(90,100,110,120,gImage_4);
  48.         tft.showPicture(120,100,140,120,gImage_5);
  49.         tft.showPicture(150,100,170,120,gImage_6);
  50.         tft.showPicture(180,100,200,120,gImage_7);
  51.          
  52.         //圖像尺寸要對應(yīng),否則容易圖像混亂
  53.         tft.showPicture(0,140,237,320,gImage_pics);
  54.          
  55.         //繪制圓,坐標(biāo)80,80,半徑20
  56.         //tft.circle(80,80,20);
  57.          
  58.         //直線
  59.         //tft.line(80,100,90,200);
  60.          
  61.         //矩形
  62.         //tft.rectangle(120,100,140,200);
  63.          
  64.         //填充矩形
  65.         //tft.fill(150,100,170,200,RED);
  66.          
  67.         //數(shù)字,坐標(biāo)20,130,打印的數(shù)字:1234, 數(shù)字位數(shù):4, 尺寸:24
  68.         //tft.print(20,130,1234,4,24);
  69.          
  70.          
  71. }


  72. //一直循環(huán)執(zhí)行:
  73. void loop() {
  74.     // 在這里加入主要程序代碼,重復(fù)執(zhí)行:

  75. }
復(fù)制代碼
4、顯示效果
代碼編寫了顯示中文、英文、表情、圖片等功能,還提供了繪制直線、圓、矩形、填充矩形等功能,由于中文編碼太大,這里為了演示用僅添加了要用的幾個(gè)中文字,需要其他中文字可自行添加。
最終顯示效果如下:


完整工程代碼可到零知實(shí)驗(yàn)室官網(wǎng)免費(fèi)獲取。

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

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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