找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

ESK32-360開發(fā)板的串行通訊及應(yīng)用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:776997 發(fā)表于 2020-8-31 23:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
1. 串口通信電路
ESK32-360開發(fā)板上提供了串行通訊功能,其接口如圖1所示。


1  RS232接口



2  DB9的引腳連接

2.基本應(yīng)用
有了串行通訊后,我們用它可以做什么呢?
我們還是將它與LCD屏顯示結(jié)合起來,最簡單的就是發(fā)送數(shù)據(jù)在LCD屏上進(jìn)行繪制,如動態(tài)地指定一個寬度,然后進(jìn)行指定色彩的填充,見圖3和圖4所示。


3.通訊傳輸顯示圖片
有了前面簡單的測試,我們就可以大膽地期待著通過傳輸數(shù)據(jù)來顯示圖片了,因為前面用數(shù)組來顯示大的圖片時會導(dǎo)致下載崩潰。
首先以小圖片來測試,成功通過!其效果如圖5所示。


5 以傳送數(shù)據(jù)來顯示圖片


傳送數(shù)據(jù)的界面如圖6所示,其中“00 38”是圖片寬度,即56個像素,而“00 44”是圖片的高度,即68個像素。別小看這個圖片,它可是占用了7616個字節(jié)呀!


6 傳送圖片數(shù)據(jù)


那么把膽子再放大些呢?能傳送153600個字節(jié)嗎?它可是滿屏圖片的規(guī)格,153600=240*320*2

( 320=0140H 240=F0H 153600=240*320*2  )

首先用Image2Lcd軟件將一幅240*320像素點(diǎn)的圖片轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)文件BIN,其格式設(shè)置如圖7所示,然后進(jìn)行串口傳送,則效果如圖8所示,一樣的成功!

當(dāng)然在執(zhí)行時有些嚇人,首先是讀入文件時串口調(diào)試器有點(diǎn)懵,像是被打暈,好一會沒找到北;好容易在發(fā)送窗口有了數(shù)據(jù),這次該輪到發(fā)送器暈了,也是一段時間沒響應(yīng),近乎是要崩潰!還在還算頑強(qiáng),終于挺過來了,屏幕上一絲絲彩線在游走,終于是一個圓滿!

7 準(zhǔn)備數(shù)據(jù)文件


8 圖片顯示


為防止偶然,又傳第2幅、第3 ... ... 完全抗擊打!


9 演示效果


最后請出我們的主角,功能程序:
  1. int main(void)
  2. {
  3.   u32 err = 0, result;
  4.   u16 uData,a,b;
  5.   u32 xid = 0;
  6.   u32 ImgAdds = 0;
  7.   u32 yid = 0;
  8.   u32 i = 0, j = 0, color = 0;
  9.   u8  X_Location=0, Height;
  10.   u16 Y_Location=0, Width;
  11.   /* Initialize LEDs      */
  12.   HT32F_DVB_LEDInit(HT_LED1);
  13.   HT32F_DVB_LEDInit(HT_LED2);
  14.   HT32F_DVB_LEDInit(HT_LED3);
  15.   LCD_Init();
  16.   LCD_Config();
  17.   LCD_BackColorSet(Black);
  18.   LCD_TextColorSet(Yellow);
  19.   LCD_StringLineDisplay(Line3, "       Holtek       ");
  20.   LCD_StringLineDisplay(Line4, "     HT32 Series    ");
  21.   LCD_StringLineDisplay(Line5, "     LCD Example    ");
  22.         
  23.   UxART_Configuration();
  24.   UxART_TxTest();
  25.         
  26.   for (i = 0; i < 4; i++)
  27.   {
  28.          while (USART_GetFlagStatus(HTCFG_UART_PORT, USART_FLAG_RXDR) == RESET);
  29.          uData = USART_ReceiveData(HTCFG_UART_PORT);
  30.          Tx_Buffer[i]=(u8)uData;
  31.          UxART_TxSend(uData);
  32.   }
  33.         
  34.          a=Tx_Buffer[0];
  35.          b=Tx_Buffer[1];
  36.          Width=a << 8 | b;
  37.          a=Tx_Buffer[2];
  38.          b=Tx_Buffer[3];
  39.          Height=a << 8 | b;
  40.         
  41.          xid = X_Location;
  42.          yid = Y_Location;
  43.         
  44.          LCD_StarterSet(xid, yid);
  45.          for (i = 0; i < Height; i++)
  46.         {
  47.            LCD_WriteRAMPrior();
  48.            for (j = 0; j < Width; j++)
  49.           {
  50.              while(USART_GetFlagStatus(HTCFG_UART_PORT, USART_FLAG_RXDR) == RESET);
  51.              a = USART_ReceiveData(HTCFG_UART_PORT);
  52.                            
  53.            while(USART_GetFlagStatus(HTCFG_UART_PORT, USART_FLAG_RXDR) == RESET);
  54.            b = USART_ReceiveData(HTCFG_UART_PORT);
  55.            color = a << 8 | b;
  56.                            
  57.           LCD_WriteRAM(color);
  58.        }
  59.        xid++;
  60.        LCD_StarterSet(xid, yid);
  61.   }
  62.   while (1);
  63. }
復(fù)制代碼

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

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