找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11518|回復(fù): 8
收起左側(cè)

stm32與hmi串口屏通信調(diào)試詳解與源程序分享

  [復(fù)制鏈接]
ID:314035 發(fā)表于 2020-10-25 20:40 | 顯示全部樓層 |閱讀模式
關(guān)于陶晶池串口屏與 STM32F103 芯片的通信小工程

拿到串口屏,可能很多人都通過視頻(本文件夾下”網(wǎng)絡(luò)資料.txt”文件)搞懂了如何用上位 機(jī)下載程序。但空有表面花架卻始終搞不懂它與各芯片之間是如何通過串口通信的。下面我 將為大家介紹它的通信規(guī)則。芯片以市場上用的最多的 STM32F103 為例。

一.準(zhǔn)備工作:
前提:確定是陶晶池 USART HMI 串口屏,不確定可以對照屏幕編號百度或者對照淘寶網(wǎng)上 的圖片看一下;安裝上位機(jī)(壓縮包里有);學(xué)會上位機(jī)的使用。
51hei.png 51hei.png
1.首先先搞懂如何用上位機(jī)給串口屏編輯屏幕的界面、下載程序以及用上位機(jī)軟件給屏幕發(fā) 送指令。(具體請看視頻,網(wǎng)址在“網(wǎng)絡(luò)資料.txt”中有。特別是調(diào)試時發(fā)送的指令這一塊。 指令集在壓縮包“USARTHMI 屏幕資料.rar”里的“串口 HMI 指令集.pdf”

注意

2.如果下載時串口屏型號與例程型號不一致,可選擇“設(shè)備 ID”修改(與“調(diào)試”同一行


的最右邊按鈕),但前提是是陶晶池 USART HMI 串口屏。

二.例程講解 例程說明:
此例程由 ADC 實(shí)驗(yàn)改編而來,采集電壓值顯示?梢酝ㄟ^ TFT 液晶屏和串口屏數(shù)值進(jìn)行比 較。
ADC 用的是引腳 PA1,串口屏的串口輸出用的是 USART3:PB10(TX)              PB11(RX)(引腳是對應(yīng) STM32F103ZET6 芯片的,如果是 STM32F1 其它型號的芯片則需要在程序中自行修改引腳)。 本例程主要講解上位機(jī)指令在程序中如何實(shí)現(xiàn),從而達(dá)到程序指令與上位機(jī)調(diào)試指令一樣的 效果。


1.編輯上位機(jī)。 在上位機(jī)上編輯自己想要的外觀、指令數(shù)值輸出口(如該例程的“n0,n1,n2,t2,t3”,即可以 修改的部分)等。

2.學(xué)會用調(diào)試窗口給串口屏發(fā)送指令,可以參照視頻,還可以參照文件“串口 HMI 指令集.pdf”。 只有這個會用了才能進(jìn)行下一步。


51hei.png 3.接下來看例程。打開我寫的陶晶池串口程序,在例程中我將數(shù)據(jù)發(fā)送指令單獨(dú)用放在了函
數(shù)“hmi.c”“hmi.h”中。主函數(shù)中直接調(diào)用那兩個函數(shù)(數(shù)值發(fā)送函數(shù)和字符串發(fā)送函數(shù)) 就能實(shí)現(xiàn)給串口屏發(fā)送數(shù)據(jù)了。功能和上位機(jī)調(diào)試發(fā)送的指令是一樣的。





4.在函數(shù)“hmi.c”中我已經(jīng)說明了函數(shù)各參數(shù)的含義?傮w思路是將上位機(jī)上的一條指令拆
成兩部分-指令和數(shù)據(jù)。先發(fā)指令,再發(fā)數(shù)據(jù)。例如:將上位機(jī)上的調(diào)試指令“n0.val=2”拆 成指令“n0.val=”和數(shù)據(jù)“2”。后帶的只是它們的長度“l(fā)en”或位數(shù)“l(fā)en2”。


5.接下來是以“數(shù)值發(fā)送函數(shù)”為例的詳解,字符串發(fā)送也是一樣的。

代碼行 40:函數(shù)名(串口,指令,指令長度,數(shù)據(jù),數(shù)據(jù)長度) 該函數(shù)的指令一般是“n_.val=”,指令長度是 7,具體是改哪個的值要與上位機(jī)
上設(shè)置的一致。 數(shù)據(jù)是自己想填入的值。如下面上位機(jī)上的數(shù)值“2”,數(shù)值位數(shù)“1” 如果要實(shí)現(xiàn)下圖所示上位機(jī)指令只需在主函數(shù)中調(diào)用函數(shù)
HMI_SendNum(USART3,"n0.val=",7,2,1);


51hei.png 代碼行 42-47:指令發(fā)送。
由于串口需要一個一個字符發(fā)送數(shù)據(jù),所以我將“data[t]”(即函數(shù)中的“u8 *data”
或例程中的“n0.val=”)拆分成了單個字母一個一個發(fā)送給串口


代碼行 48-54:數(shù)據(jù)發(fā)送。 將多位數(shù)的數(shù)值也拆分成單個數(shù)值一個一個發(fā)送。要注意的是所有的發(fā)送都是以
ASCII 碼(單個字符)的形式發(fā)送的,所以數(shù)值要加字符‘0’。由于數(shù)值無法顯示數(shù)字前位 零,所以我將例程的“電壓值”部分拆成了四個單個數(shù)值顯示

代碼行 56-65:結(jié)束符發(fā)送。
這是陶晶池串口屏的數(shù)據(jù)發(fā)送格式。在文檔“串口 HMI 指令集.pdf”中有重點(diǎn)提到。



5.字符串發(fā)送指令是類似的,在此不予贅述。主函數(shù)中只要在使能串口后調(diào)用該函數(shù)就能使
用了。

結(jié)束語:由于是例程,所以就只編寫了兩個函數(shù)。如果您還想調(diào)用其他函數(shù)可以自行查看文 檔“串口HMI 指令集.pdf”,先用上位機(jī)調(diào)試一遍,成功后再在程序上編寫添加相應(yīng)程序, 通信方式和編碼方式都是一樣的。

stm32
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"         

#include "hmi.h"

u8 dat[] = "add 1,0,9 0xff,0xff,0xff";
int t=0;
u8 date[] = {0xff,0xff,0xff};

int main(void)
{         
        delay_init();                     //延時函數(shù)初始化         
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
        uart_init(9600);                 //串口初始化為115200         
        uart3_init(9600);
         LED_Init();                             //LED端口初始化
         
        while(1)
        {
                for(t=0;t<56;t++)
        {        
            while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET);
            USART_SendData(USART3,dat[t]);                                         
        }
                //                HMI_SendNum(USART3,"n0.val=",0,2,4);
//          HMI_SendNum(USART3,"n1.val=",7,(int)2,1);
//          HMI_SendNum(USART3,"n2.val=",7,((int)2)/100,1);
//          HMI_SendNum(USART3,"n3.val=",7,(((int)2)/10)%10,1);
//          HMI_SendNum(USART3,"n4.val=",7,((int)2)%10,1);
//               
//          HMI_SendText(USART3,"t2.txt=",7,"此處用以文本測試",16);        
                                                
                LED0=!LED0;
                delay_ms(250);        
        }
}

注意:串口屏用的開發(fā)軟件自行搜索。

全部資料51hei下載地址:
自寫的與STM32F1通信程序.7z (469.13 KB, 下載次數(shù): 207)
自寫例程詳解.pdf (468.24 KB, 下載次數(shù): 113)
320240例.rar (269.18 KB, 下載次數(shù): 81)

評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:857251 發(fā)表于 2021-6-3 09:17 | 顯示全部樓層
謝謝,請問串口屏用的開發(fā)軟件名稱?
回復(fù)

使用道具 舉報

ID:233756 發(fā)表于 2021-9-9 20:21 | 顯示全部樓層
無法使用
回復(fù)

使用道具 舉報

ID:1005649 發(fā)表于 2022-2-18 11:21 | 顯示全部樓層
正在學(xué)習(xí)HMI的通訊,謝謝
回復(fù)

使用道具 舉報

ID:1006580 發(fā)表于 2022-2-24 12:12 | 顯示全部樓層
陶晶池3.2寸停產(chǎn)了,只能換3.5,工作量很大
回復(fù)

使用道具 舉報

ID:1053899 發(fā)表于 2022-11-29 22:56 | 顯示全部樓層
HMI_Pow()函數(shù)是怎么定義的?
回復(fù)

使用道具 舉報

ID:786132 發(fā)表于 2024-12-19 19:00 | 顯示全部樓層
USART-HMI串口屏與STM32相互通訊實(shí)例
回復(fù)

使用道具 舉報

ID:929517 發(fā)表于 2025-1-6 04:07 來自手機(jī) | 顯示全部樓層
西瓜視頻上有個叫澄泉的博主有發(fā)布的視頻,很詳細(xì)
回復(fù)

使用道具 舉報

ID:1142015 發(fā)表于 2025-1-6 09:50 | 顯示全部樓層
正在學(xué)習(xí)串口屏的使用,這個很有用,先從點(diǎn)燈開始吧
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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