標(biāo)題: ESK32-360開發(fā)板的串行通訊及應(yīng)用 [打印本頁(yè)]
作者: jinglixixi 時(shí)間: 2020-8-31 23:00
標(biāo)題: ESK32-360開發(fā)板的串行通訊及應(yīng)用
1. 串口通信電路
在ESK32-360開發(fā)板上提供了串行通訊功能,其接口如圖1所示。
1.jpg (16.91 KB, 下載次數(shù): 84)
下載附件
2020-8-31 22:51 上傳
圖1 RS232接口
2.jpg (21.41 KB, 下載次數(shù): 95)
下載附件
2020-8-31 22:51 上傳
圖2 DB9的引腳連接
2.基本應(yīng)用
有了串行通訊后,我們用它可以做什么呢?
我們還是將它與LCD屏顯示結(jié)合起來(lái),最簡(jiǎn)單的就是發(fā)送數(shù)據(jù)在LCD屏上進(jìn)行繪制,如動(dòng)態(tài)地指定一個(gè)寬度,然后進(jìn)行指定色彩的填充,見圖3和圖4所示。
3.jpg (36.46 KB, 下載次數(shù): 71)
下載附件
2020-8-31 22:57 上傳
3.通訊傳輸顯示圖片
有了前面簡(jiǎn)單的測(cè)試,我們就可以大膽地期待著通過(guò)傳輸數(shù)據(jù)來(lái)顯示圖片了,因?yàn)榍懊嬗脭?shù)組來(lái)顯示大的圖片時(shí)會(huì)導(dǎo)致下載崩潰。
首先以小圖片來(lái)測(cè)試,成功通過(guò)!其效果如圖5所示。
4.jpg (14.67 KB, 下載次數(shù): 78)
下載附件
2020-8-31 22:57 上傳
圖5 以傳送數(shù)據(jù)來(lái)顯示圖片
傳送數(shù)據(jù)的界面如圖6所示,其中“00 38”是圖片寬度,即56個(gè)像素,而“00 44”是圖片的高度,即68個(gè)像素。別小看這個(gè)圖片,它可是占用了7616個(gè)字節(jié)呀!
5.jpg (44.96 KB, 下載次數(shù): 90)
下載附件
2020-8-31 22:57 上傳
圖6 傳送圖片數(shù)據(jù)
那么把膽子再放大些呢?能傳送153600個(gè)字節(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í)行時(shí)有些嚇人,首先是讀入文件時(shí)串口調(diào)試器有點(diǎn)懵,像是被打暈,好一會(huì)沒(méi)找到北;好容易在發(fā)送窗口有了數(shù)據(jù),這次該輪到發(fā)送器暈了,也是一段時(shí)間沒(méi)響應(yīng),近乎是要崩潰!還在還算頑強(qiáng),終于挺過(guò)來(lái)了,屏幕上一絲絲彩線在游走,終于是一個(gè)圓滿!
3.jpg (29.04 KB, 下載次數(shù): 81)
下載附件
2020-9-1 01:06 上傳
圖7 準(zhǔn)備數(shù)據(jù)文件
4.jpg (14.11 KB, 下載次數(shù): 72)
下載附件
2020-9-1 01:06 上傳
圖8 圖片顯示
為防止偶然,又傳第2幅、第3幅 ... ... 完全抗擊打!
8.jpg (24.16 KB, 下載次數(shù): 75)
下載附件
2020-8-31 22:58 上傳
圖9 演示效果
最后請(qǐng)出我們的主角,功能程序:
- int main(void)
- {
- u32 err = 0, result;
- u16 uData,a,b;
- u32 xid = 0;
- u32 ImgAdds = 0;
- u32 yid = 0;
- u32 i = 0, j = 0, color = 0;
- u8 X_Location=0, Height;
- u16 Y_Location=0, Width;
- /* Initialize LEDs */
- HT32F_DVB_LEDInit(HT_LED1);
- HT32F_DVB_LEDInit(HT_LED2);
- HT32F_DVB_LEDInit(HT_LED3);
- LCD_Init();
- LCD_Config();
- LCD_BackColorSet(Black);
- LCD_TextColorSet(Yellow);
- LCD_StringLineDisplay(Line3, " Holtek ");
- LCD_StringLineDisplay(Line4, " HT32 Series ");
- LCD_StringLineDisplay(Line5, " LCD Example ");
-
- UxART_Configuration();
- UxART_TxTest();
-
- for (i = 0; i < 4; i++)
- {
- while (USART_GetFlagStatus(HTCFG_UART_PORT, USART_FLAG_RXDR) == RESET);
- uData = USART_ReceiveData(HTCFG_UART_PORT);
- Tx_Buffer[i]=(u8)uData;
- UxART_TxSend(uData);
- }
-
- a=Tx_Buffer[0];
- b=Tx_Buffer[1];
- Width=a << 8 | b;
- a=Tx_Buffer[2];
- b=Tx_Buffer[3];
- Height=a << 8 | b;
-
- xid = X_Location;
- yid = Y_Location;
-
- LCD_StarterSet(xid, yid);
- for (i = 0; i < Height; i++)
- {
- LCD_WriteRAMPrior();
- for (j = 0; j < Width; j++)
- {
- while(USART_GetFlagStatus(HTCFG_UART_PORT, USART_FLAG_RXDR) == RESET);
- a = USART_ReceiveData(HTCFG_UART_PORT);
-
- while(USART_GetFlagStatus(HTCFG_UART_PORT, USART_FLAG_RXDR) == RESET);
- b = USART_ReceiveData(HTCFG_UART_PORT);
- color = a << 8 | b;
-
- LCD_WriteRAM(color);
- }
- xid++;
- LCD_StarterSet(xid, yid);
- }
- while (1);
- }
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |