HMI USART串口屏
做爲在電賽中負責軟件部分的成員,學會使用單片機進行數據和信息的顯示是必要的,大部分人會選擇使用oled或者TFT屏幕去進行顯示,可是使用過的人都知道這樣會比較複雜,會加大程序的複雜度,所以經過他人的建議,我開始學習並使用串口屏進行顯示,下面是我學習串口屏時的經驗和總結:
php
上面這個是我使用的串口屏的型號,電阻式觸摸屏,只有四根線,VCC GND TX RX,3.5寸基本徹底知足交互式界面的大小,價格大概幾十元。數組
1、硬件鏈接
我通常使用stm32比較多,所以這裏就用stm32做爲主控,我選用的是STM32F103ZET6最小系統板做爲主控,其實使用C8T6也是能夠的,主要是由於當時跟着正點原子學習的時候使用的是精英版,所以用ZET6就用習慣了,畢竟資源多仍是要舒服一點。
網絡
板上資源:這裏使用到的是USART3和UART1,USART3和串口屏相連,UART1和電腦相連(默認)
IO鏈接:
VCC----VCC
GND----GND
TX-----PB11
RX-----PB10
一共就四根線,鏈接很是方便。
2、STM32軟件設計
軟件方面呢爲了既能使用串口給串口屏發送信息,也能經過串口接收串口屏發來的信息,所以設計功能以下:
1.串口屏上會顯示一個數字Freq,而且該數字每秒會+1,能夠經過屏幕上的按鍵控制每秒增長的數值。
2.數字Freq每更新一次,就會將該數字發送給單片機一次
3.單片機每接收到一次該數字,就會將該數字再從USART1發送給電腦的串口助手
4.單片機每隔幾毫秒給串口屏發送一次指令,讓串口屏上的波形控件增長一個點
學習
不墨跡就直接放程序了,看不懂程序的能夠留言:網站
#include "delay.h" #include "sys.h" #include "usart.h" #include "usart3.h" #include "timer.h" /************************************************ ************************************************/ int main(void) { int b; u16 t; u16 len; u16 times=0; delay_init(); //延時初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷分組 uart_init(115200); //usart1初始化波特率115200 usart3_init(115200); //usart3初始化波特率115200 while(1) { if(USART3_RX_STA&0x8000) { len=USART3_RX_STA&0x3fff;//獲得這次接受數據的長度 printf("\r\n您發送的消息爲:\r\n\r\n"); for(t=0;t<len;t++) { //USART_SendData(USART1, USART3_RX_BUF[t]);//向串口一發送數據 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發送結束 } b=(USART3_RX_BUF[0]); printf("%d",b); printf("\r\n\r\n"); USART3_RX_STA=0; } delay_ms(1000); { u3_printf("add 4,0,100",a); //波形空間上添加一個點 u3_printf("\xff\xff\xff"); //結束標誌 } } }
這段程序基本都是由正點原子的例程改編的,只是簡單的兩個串口的通訊,主要有幾點須要注意:
(都是我踩過的坑)
1🤭向串口屏發送指令時,後面必定要接\xff\xff\xff,做爲結束指令,不然串口屏不知道你這段話是否說完了,具體可見最後一行代碼。
2🤭若是你想接收串口屏發來的字符或者整型浮點數的信息,必定要注意定義的類型,例如當USART_RX_BUF[ ]這個用來看成接收緩衝區的數組是char型時,那麼若是你想接收它發來的字符型信息時能夠直接調用這個數組,但當你是想調用接收到的整數或者浮點數時,不能直接使用這個數組,不然顯示會出現亂碼,你能夠像我代碼中寫的那樣,定義一個int型的變量b,而後用b去獲取USART3_RX_BUF這個數組中的整型常量,這樣再進行顯示就不會亂碼了。
spa
3、串口屏界面設計
HMI USART這款串口屏的教程挺多的,不管是它自帶的仍是網絡上其餘人拍的視頻,都有不少資源能夠去學習,這裏我就放一個官方最經常使用的一個網址吧:串口屏幫助中心
不管是學習仍是查找指令均可以在這個網站中找到!而後是我設計的串口屏界面,大體以下:
兩個界面,第一個是用來顯示曲線的主要驗證功能4,第二個是用來顯示數字Freq的主要驗證功能1。
具體如何設計你們能夠根據本身的狀況來,我這個只是一個比較簡單的例子。
設計
4、總結
串口屏能作到的功能遠不止如此,所以還有許多須要學習與實踐的,不過熟練運用串口屏能夠說在某種程度上是能夠取代經常使用的oled TFT這種液晶屏的,除非題目有功耗要求,那另當別論。在此我只是分享我在學習串口屏中遇到的問題以及總結的經驗,若是有問題你們也能夠一塊兒討論!
code
最後我把程序的源代碼以及串口屏的工程放在下方,你們有須要能夠借鑑學習!
連接:https://pan.baidu.com/s/1Gk2g_cON9bCM40BahFyajA
提取碼:8i16
視頻