目錄
- 前言
- 一、什么是串口屏?
- 二、串口屏原理與組成
- 三、硬件制作
- 四、實(shí)現(xiàn)方法
- 1.硬件設(shè)備
- 2.環(huán)境依賴
- 3.界面設(shè)計(jì)
- 4.編寫串口通信代碼和示例?
前言
本文詳細(xì)介紹串口屏原理、設(shè)計(jì)方法、實(shí)現(xiàn)步驟,給出完整代碼實(shí)例,30分鐘即可完成串口屏的設(shè)計(jì)使用。適合初學(xué)者快速上手。
一、什么串口屏?
串口屏是一種能夠通過(guò)串行接口接收指令,并進(jìn)行顯示控制的液晶顯示屏。它的主要優(yōu)點(diǎn)是操作簡(jiǎn)單,接口統(tǒng)一,用GUI軟件進(jìn)行界面的快速編寫與設(shè)計(jì)。
二、串口屏原理與組成
串口屏的組成部分:
1.顯示屏:這是串口屏的核心部分,可以選擇液晶顯示屏或其他類型的顯示屏.
2.微控制器:這是控制顯示屏的關(guān)鍵部分。它可以接收和發(fā)送數(shù)據(jù),控制顯示屏的顯示內(nèi)
容。
3.串口通信接口:?這是微控制器和顯示屏之間的通信接口。通常使用UART?(通用異步收
發(fā)器)?接口。
4.電源:為顯示屏和微控制器提供電源
5.嵌入式GUI軟件:?采用高通GT-HMI,可以作為上位機(jī)Designer和下位機(jī)Engine的開(kāi)源設(shè)計(jì)工具,幫助用戶設(shè)計(jì)和實(shí)現(xiàn)自己的界面。
三、硬件制作
在高通GT-HMI官網(wǎng)上獲取串口屏原理圖,可參考制作自己的串口屏硬件。
?四、實(shí)現(xiàn)方法
以GT-HMI顯示模塊為例,這是一個(gè)做好的串口屏板子,包含開(kāi)源的軟硬件。只需幾個(gè)步驟就可以實(shí)現(xiàn)串口屏的控制。您將需要以下準(zhǔn)備:(連接步驟部分可以增加簡(jiǎn)單的示意圖,輔助說(shuō)明)
1.?硬件設(shè)備:
GT-HMI顯示模塊、一根USB轉(zhuǎn)UART轉(zhuǎn)接線、一臺(tái)電腦,筆記本和臺(tái)式機(jī)均可。???首先將USB轉(zhuǎn)UART轉(zhuǎn)接線連接到我們的GT-HMI顯示模塊上,然后將USB轉(zhuǎn)UART轉(zhuǎn)接線與您的電腦連接。
2.?環(huán)境依賴:
軟件環(huán)境:KEIL5, 串口調(diào)試助手。硬件環(huán)境:USB轉(zhuǎn)UART轉(zhuǎn)接線,GTC-480272TFT43XP.
3.?界面設(shè)計(jì):
在高通GT-HMI?Designer設(shè)計(jì)界面,可以參考GT-HMI視頻教程及文檔資料。
4.?編寫串口通信代碼,示例如下:
1、串口uart3初始化:
- void bsp_uart3_init(void)
- {
- ????UART_InitStructure UART_initStruct;
- ????PORT_Init(UART3_RX_PORT, UART3_RX_PIN, UART3_RX_SEL, 1); //GPIOM.0配置為UART0輸入引腳
- ????PORT_Init(UART3_TX_PORT, UART3_TX_PIN, UART3_TX_SEL, 0); //GPIOM.1配置為UART0輸出引腳
- ????UART_initStruct.Baudrate = UART3_Baudrate; ?//波特率
- ????UART_initStruct.DataBits = UART_DATA_8BIT; ?//8位數(shù)據(jù)位
- ????UART_initStruct.Parity = UART_PARITY_NONE; ?//無(wú)校驗(yàn)位
- ????UART_initStruct.StopBits = UART_STOP_1BIT; ?//1個(gè)停止位
- ????UART_initStruct.RXThreshold = _UART3_RX_BUFFER_SIZE;//設(shè)置FIFO個(gè)數(shù)
- UART_initStruct.RXThresholdIEn = 1;//使能接收中斷
- UART_initStruct.TXThreshold = _UART3_Threshold_Size;//設(shè)置FIFO個(gè)數(shù)
- UART_initStruct.TXThresholdIEn = 0; ????//失能發(fā)送中斷
- UART_initStruct.TimeoutTime = 10; //10個(gè)字符時(shí)間內(nèi)未接收到新的數(shù)據(jù)則觸發(fā)超時(shí)中斷
- UART_initStruct.TimeoutIEn = 1; ????????//使能超時(shí)中斷
- ????UART_Init(UART3, &UART_initStruct);
- ????UART3->TOCR &= ~(1 << UART_TOCR_MODE_Pos); ?
- ????UART_Open(UART3);//開(kāi)啟uart3
- }
2:串口數(shù)據(jù)通過(guò)中斷接收,接收數(shù)據(jù)的部分
void UART3_Handler(void)
{
????char count = _UART3_Threshold_Size;
????char i=0;
????uint32_t chr ;
????if(UART_INTStat(UART3, UART_IT_RX_THR))//接收中斷
????{
????????UART_INTClr(UART3, UART_IT_RX_THR);//清除接收中斷標(biāo)志位
????????while (count--)//FIFO個(gè)數(shù)接收數(shù)據(jù)
????????{
if(UART_ReadByte(UART3, &chr) == 0)//接收數(shù)據(jù)
????????????{
????????????????if(_uart3_count < _UART3_RX_BUFFER_SIZE)
????????????????{
????????????????????_uart3_rx_buf[_uart3_count] = chr;
????????????????????//接收到的數(shù)據(jù)存在這個(gè)全局變量數(shù)組內(nèi)
????????????????????UART_BUF[_uart3_count] = chr;
????????????????????_uart3_count++;//數(shù)組下標(biāo)自增
????????????????}
????????????}
????????}
}
接收數(shù)據(jù)并進(jìn)行相應(yīng)的數(shù)據(jù)顯示
/***********************
**數(shù)據(jù)包格式:頭(0xAA)+設(shè)備啟動(dòng)狀態(tài)+間隔時(shí)間+重復(fù)次數(shù)+工作溫度+等待速度+包長(zhǎng)度+校驗(yàn)和
**設(shè)備啟動(dòng)狀態(tài):0x0、0x1
**間隔時(shí)間:1~30
**重復(fù)次數(shù):1~10
**工作溫度:10~100
**等待速度:0~100
***********************/
void Refresh_New_Page(unsigned char *data)
{
unsigned char verify=0 ,i=0;
for ( i = 0; i < data[6]-1; i++)//計(jì)算接收到的數(shù)據(jù)校驗(yàn)和。
{
verify += data[i];
}
if(data[0] == 0xaa && verify == data[7])//判斷幀頭(0xAA)和校驗(yàn)和均是和接收數(shù)據(jù)符合。
{
if(data[1]==1)//設(shè)備啟動(dòng)
{
gt_obj_set_state(switch1, 1);
}else if(data[1]==0)
{
gt_obj_set_state(switch1, 0);//設(shè)備關(guān)閉
}
gt_input_number_set_value(inputNum1, data[2]);//設(shè)置間隔時(shí)間
gt_input_number_set_value(inputNum2,data[3]);//設(shè)置重復(fù)次數(shù)
gt_input_number_set_value(inputNum3,data[4]);//設(shè)置重復(fù)次數(shù)
gt_slider_set_pos(slider1, data[5]);
gt_disp_load_scr(screen_home);
}
}
3.?下載程序,運(yùn)行示例
int main(void)
{?
SystemInit();//mcu系統(tǒng)初始化
__enable_irq();//使能中斷
bsp_uart0_init();//uart0初始化
bsp_uart3_init();//uart3初始化
bsp_sfc_config(1);//存儲(chǔ)芯片讀取配置
bsp_lcd_rgb_init();//rgb接口屏顯配置
systick_init();//systick時(shí)鐘配置
TP_Init();//時(shí)鐘I2C初始化
TIMR_Init(TIMR4, TIMR_MODE_TIMER, CyclesPerUs, 1000, 1);//定時(shí)器初始化
TIMR_Start(TIMR4);//啟動(dòng)定時(shí)器
GT_Font_Init();//字庫(kù)初始化
gt_init();
gt_ui_init();
while (1) {
gt_task_handler();//gt-hmi engine 任務(wù)調(diào)度
swm_delay_ms(1);
// WDT_Feed(WDT);
if(uart_status)//uart3串口數(shù)據(jù)接收完標(biāo)記
{
uart_status=0;
Refresh_New_Page(UART_BUF); //處理串口數(shù)據(jù)將串口數(shù)據(jù)顯示到對(duì)應(yīng)的屏上面。
memset(UART_BUF,0,8);
}
#if _RUNNING_PRINT
if (_cnt >= 1000) {
_cnt = 0;
GT_LOGI(GT_LOG_TAG_TEST, "tick: %d s", gt_tick_get() / 1000);
}
#endif
}
}
4、程序下載到高通GTC-480272TFT43XP 顯示模塊效果:
串口屏初始界面:
串口助手發(fā)送如下圖命令:
發(fā)送命令之后顯示的界面:
?發(fā)送的數(shù)據(jù)為AA 01 02 01 38 37 08 25 (發(fā)送數(shù)據(jù)格式:頭(0xAA)+設(shè)備啟動(dòng)狀態(tài)+間隔時(shí)間+重復(fù)次數(shù)+工作溫度+等待速度+包長(zhǎng)度+校驗(yàn)和)其中第二個(gè)數(shù)據(jù)“01”代表設(shè)備啟動(dòng)狀態(tài),我們可以考到設(shè)備啟動(dòng)開(kāi)關(guān)被打開(kāi),第三個(gè)數(shù)據(jù)”02”代表間隔時(shí)間,我們可以看到間隔時(shí)間被設(shè)置成2min, 第四個(gè)數(shù)據(jù)工作溫度“38”是16進(jìn)制的,換算成10進(jìn)制就是56,我們可以看到工作溫度被改成56。
測(cè)試命令:AA 01 02 08 46 54 08 57
我們?cè)俅伟l(fā)送測(cè)試命令,可以看到其中重復(fù)次數(shù)和工作溫度都被改變了。
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-743823.html
總結(jié)
您可以嘗試自己制作串口屏硬件,或者使用高通GT-HMI開(kāi)發(fā)板/顯示模塊。我們提供了相應(yīng)的軟硬件資料供您參考。您需要注意的是,制作硬件需要一定的電子技術(shù)知識(shí)。
如果您是初學(xué)者,我們建議您先從使用高通的開(kāi)發(fā)板開(kāi)始。利用高通GT-HMI開(kāi)發(fā)框架,您也可以快速實(shí)現(xiàn)串口屏的顯示控制。歡迎分享您的創(chuàng)作經(jīng)驗(yàn)!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-743823.html
到了這里,關(guān)于【開(kāi)源串口屏方案】五步教你設(shè)計(jì)串口屏,5分鐘快速上手的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!