最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【開源串口屏方案】五步教你設(shè)計串口屏,30分鐘快速上手

2023-08-28 20:08 作者:OPEN_GT  | 我要投稿

前言

本文詳細(xì)介紹串口屏原理、設(shè)計方法、實現(xiàn)步驟,給出完整代碼實例,30分鐘即可完成串口屏的設(shè)計使用。適合初學(xué)者快速上手。

一、什么串口屏?

串口屏是一種能夠通過串行接口接收指令,并進(jìn)行顯示控制的液晶顯示屏。它的主要優(yōu)點是操作簡單,接口統(tǒng)一,用GUI軟件進(jìn)行界面的快速編寫與設(shè)計。

二、串口屏原理與組成

串口屏的組成部分:

1.顯示屏:這是串口屏的核心部分,可以選擇液晶顯示屏或其他類型的顯示屏.

2.微控制器:這是控制顯示屏的關(guān)鍵部分。它可以接收和發(fā)送數(shù)據(jù),控制顯示屏的顯示內(nèi)

容。

3.串口通信接口: 這是微控制器和顯示屏之間的通信接口。通常使用UART (通用異步收

發(fā)器) 接口。

4.電源:為顯示屏和微控制器提供電源

5.嵌入式GUI軟件: 采用高通GT-HMI,可以作為上位機(jī)Designer和下位機(jī)Engine的開源設(shè)計工具,幫助用戶設(shè)計和實現(xiàn)自己的界面。

三、硬件制作

在高通GT-HMI官網(wǎng)上獲取串口屏原理圖,可參考制作自己的串口屏硬件。

四、實現(xiàn)方法

以GT-HMI顯示模塊為例,這是一個做好的串口屏板子,包含開源的軟硬件。只需幾個步驟就可以實現(xiàn)串口屏的控制。您將需要以下準(zhǔn)備:

1. 硬件設(shè)備:

GT-HMI顯示模塊、一根USB轉(zhuǎn)UART轉(zhuǎn)接線、一臺電腦,筆記本和臺式機(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è)計:

在高通GT-HMI Designer設(shè)計界面,可以參考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;? //無校驗位

??UART_initStruct.StopBits = UART_STOP_1BIT;? //1個停止位

? ?UART_initStruct.RXThreshold = _UART3_RX_BUFFER_SIZE;//設(shè)置FIFO個數(shù)

UART_initStruct.RXThresholdIEn = 1;//使能接收中斷

UART_initStruct.TXThreshold = _UART3_Threshold_Size;//設(shè)置FIFO個數(shù)

UART_initStruct.TXThresholdIEn = 0;? ? ?//失能發(fā)送中斷

UART_initStruct.TimeoutTime = 10; //10個字符時間內(nèi)未接收到新的數(shù)據(jù)則觸發(fā)超時中斷

UART_initStruct.TimeoutIEn = 1;? ? ? ? ?//使能超時中斷

?UART_Init(UART3, &UART_initStruct);

UART3->TOCR &= ~(1 << UART_TOCR_MODE_Pos);??

UART_Open(UART3);//開啟uart3

}

2:串口數(shù)據(jù)通過中斷接收,接收數(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個數(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ù)存在這個全局變量數(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è)備啟動狀態(tài)+間隔時間+重復(fù)次數(shù)+工作溫度+等待速度+包長度+校驗和

**設(shè)備啟動狀態(tài):0x0、0x1

**間隔時間: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++)//計算接收到的數(shù)據(jù)校驗和。

{

verify += data[i];

}

if(data[0] == 0xaa && verify == data[7])//判斷幀頭(0xAA)和校驗和均是和接收數(shù)據(jù)符合。

{

if(data[1]==1)//設(shè)備啟動

{

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è)置間隔時間

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. 下載程序,運行示例


int main(void)

{?

SystemInit();//mcu系統(tǒng)初始化

__enable_irq();//使能中斷

bsp_uart0_init();//uart0初始化

bsp_uart3_init();//uart3初始化

bsp_sfc_config(1);//存儲芯片讀取配置

bsp_lcd_rgb_init();//rgb接口屏顯配置

systick_init();//systick時鐘配置

TP_Init();//時鐘I2C初始化

TIMR_Init(TIMR4, TIMR_MODE_TIMER, CyclesPerUs, 1000, 1);//定時器初始化

TIMR_Start(TIMR4);//啟動定時器

GT_Font_Init();//字庫初始化

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ù)顯示到對應(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è)備啟動狀態(tài)+間隔時間+重復(fù)次數(shù)+工作溫度+等待速度+包長度+校驗和)其中第二個數(shù)據(jù)“01”代表設(shè)備啟動狀態(tài),我們可以考到設(shè)備啟動開關(guān)被打開,第三個數(shù)據(jù)”02”代表間隔時間,我們可以看到間隔時間被設(shè)置成2min, 第四個數(shù)據(jù)工作溫度“38”是16進(jìn)制的,換算成10進(jìn)制就是56,我們可以看到工作溫度被改成56。

測試命令:AA 01 02 08 46 54 08 57

我們再次發(fā)送測試命令,可以看到其中重復(fù)次數(shù)和工作溫度都被改變了。

總結(jié)

您可以嘗試自己制作串口屏硬件,或者使用高通GT-HMI開發(fā)板/顯示模塊。我們提供了相應(yīng)的軟硬件資料供您參考。您需要注意的是,制作硬件需要一定的電子技術(shù)知識。

如果您是初學(xué)者,我們建議您先從使用高通的開發(fā)板開始。利用高通GT-HMI開發(fā)框架,您也可以快速實現(xiàn)串口屏的顯示控制。歡迎分享您的創(chuàng)作經(jīng)驗!


【開源串口屏方案】五步教你設(shè)計串口屏,30分鐘快速上手的評論 (共 條)

分享到微博請遵守國家法律
成安县| 青铜峡市| 青河县| 衢州市| 泰和县| 马尔康县| 五家渠市| 平顶山市| 广安市| 浦东新区| 兖州市| 嘉峪关市| 育儿| 兴业县| 中阳县| 海兴县| 娄底市| 韩城市| 邮箱| 宜昌市| 岑巩县| 碌曲县| 绍兴市| 焉耆| 毕节市| 玉田县| 陆良县| 丰镇市| 拜城县| 临桂县| 老河口市| 台南市| 陆川县| 武功县| 安图县| 韩城市| 富民县| 白水县| 白河县| 隆昌县| 武汉市|