15.1實(shí)驗(yàn)內(nèi)容
通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容:
LCD觸控原理
SPI外設(shè)功能
15.2實(shí)驗(yàn)原理
本實(shí)驗(yàn)介紹通過SPI接口控制8080接口屏的touch功能。
15.3硬件設(shè)計(jì)
8080接口屏touch部分實(shí)現(xiàn)如下圖所示,通過SPI接口進(jìn)行實(shí)現(xiàn)。
15.4代碼解析
15.4.1Touch SPI定義
Touch 的SPI定義如下所示:
JSON
//定義TOUCH_SPI
SPI_MASTER_SCK_GPIO_DEF(TOUCH_SPI,B,3,GPIO_AF_5);
SPI_MASTER_MOSI_GPIO_DEF(TOUCH_SPI,B,5,GPIO_AF_5);
SPI_MASTER_MISO_GPIO_DEF(TOUCH_SPI,B,4,GPIO_AF_5);
SPI_MASTER_CS_GPIO_DEF(TOUCH_SPI,A,8);
SPI_TX_DMA_DEF(TOUCH_SPI,SPI0,DMA1,DMA_CH1);
SPI_RX_DMA_DEF(TOUCH_SPI,SPI0,DMA1,DMA_CH0);
SPI_DEF(TOUCH_SPI,SPI0,SPI_MASTER,SPI_DATASIZE_8BIT,SPI_CK_PL_LOW_PH_1EDGE,SPI_PSC_64,SPI_ENDIAN_MSB,MODE_POLL);
15.4.2SPI初始化配置
Touch SPI初始化配置如下所示:
JSON
void bsp_spi_init(typdef_spi_struct *spix)
{
driver_spi_init(spix);
}
15.4.3屏幕touch狀態(tài)獲取函數(shù)
屏幕touch狀態(tài)獲取函數(shù)如下所示,通過該函數(shù)可掃描獲取touch位置。
JSON
Drv_Err bsp_touch_scan(uint16_t *x, uint16_t *y)
{
static uint8_t count=0;
uint16_t touch_ad_x,touch_ad_y = 0;
/* touch pen is active */
if (SET == bsp_touch_pen_irq())
{
if(++count>=20 || lcd_touch_panel_struct.TOUCH_State==1)
{
lcd_touch_panel_struct.TOUCH_State=1;
if((SUCCESS != bsp_touch_ad_xy_get(&touch_ad_x, &touch_ad_y))){
return DRV_ERROR;
}
// if(invalid_count >= 20){
// return DRV_ERROR;
// }
}else
{
return DRV_ERROR;
}
}else{
count=0;
if(lcd_touch_panel_struct.TOUCH_State==1){
lcd_touch_panel_struct.TOUCH_State=2;
lcd_touch_panel_struct.Touch_x_Last=*x;
lcd_touch_panel_struct.Touch_y_Last=*y;
}
return DRV_ERROR;
}
*x=bsp_touch_coordinate_x_get(touch_ad_x);
*y=bsp_touch_coordinate_y_get(touch_ad_y);
if(count==20)
{
lcd_touch_panel_struct.TOUCH_State=1;
lcd_touch_panel_struct.Touch_x_First=*x;
lcd_touch_panel_struct.Touch_y_First=*y;
}
lcd_touch_panel_struct.Touch_x_Now=*x;
lcd_touch_panel_struct.Touch_y_Now=*y;
return DRV_SUCCESS;
}
15.4.4主函數(shù)
本例程主函數(shù)如下所示,在本例程中,8080液晶屏上顯示4個(gè)LED圖標(biāo),通過觸控點(diǎn)到哪個(gè)LED,MCU檢測(cè)到后打開對(duì)應(yīng)的LED燈。
JSON
int main(void)
{
uint16_t num[4]={0,0,0,0}; /* store the touch point number on four buttons */
uint8_t count=0;
char* led_string[4]={'LED1','LED2','LED3','LED4'} ;
uint8_t button_id=0;
driver_init(); /* 延時(shí)和公共驅(qū)動(dòng)部分初始化 */
bsp_8080_lcd_init(); /* 初始化LCD */
bsp_led_group_init();
//初始化SPI
bsp_spi_init(&TOUCH_SPI);
/* configure the GPIO of SPI touch panel */
bsp_touch_panel_init(bsp_8080_lcd_parameter.width,bsp_8080_lcd_parameter.height);
delay_ms(50);
/* clear the LCD screen */
bsp_8080_lcd_clear(WHITE);
bsp_8080_lcd_show_log();
bsp_8080_lcd_show_string(a1+30, b1+80,bsp_8080_lcd_parameter.width,FONT_ASCII_24_12,FONT_ASCII_24_12,led_string[0],BLUE);
/* draw picture of button on LCD screen */
bsp_8080_lcd_color_fill(a1+30,b1+40,a1+30+40-1,b1+40+40-1,(uint16_t *)(image_off + BMP_HEADSIZE));
bsp_8080_lcd_show_string(a2+30, b1+80,bsp_8080_lcd_parameter.width,FONT_ASCII_24_12,FONT_ASCII_24_12,led_string[1],BLUE);
bsp_8080_lcd_color_fill(a2+30,b1+40,a2+30+40-1,b1+40+40-1,(uint16_t *)(image_off + BMP_HEADSIZE));
bsp_8080_lcd_show_string(a1+30, b2+80,bsp_8080_lcd_parameter.width,FONT_ASCII_24_12,FONT_ASCII_24_12,led_string[2],BLUE);
bsp_8080_lcd_color_fill(a1+30,b2+40,a1+30+40-1,b2+40+40-1,(uint16_t *)(image_off + BMP_HEADSIZE));
bsp_8080_lcd_show_string(a2+30, b2+80,bsp_8080_lcd_parameter.width,FONT_ASCII_24_12,FONT_ASCII_24_12,led_string[3],BLUE);
bsp_8080_lcd_color_fill(a2+30,b2+40,a2+30+40-1,b2+40+40-1,(uint16_t *)(image_off + BMP_HEADSIZE));
while(1){
/* get the position of touch on LCD screen */
if(DRV_SUCCESS == bsp_touch_scan(&touch_x,&touch_y)){
count++;
get_touch_area(touch_x,touch_y,num);
}
else
{
count=0;
}
/* generate response to the touch(turn on LED and change picture )*/
if(count==10){
button_id = find_max(num);
turn_on_led(button_id);
change_picture(button_id);
num[0]=num[1]=num[2]=num[3]=0;
count=0;
}
}
}
15.5實(shí)驗(yàn)結(jié)果
將本例程燒錄到海棠派開發(fā)板中,通過手指點(diǎn)擊屏幕上的LED圖標(biāo),可以點(diǎn)亮對(duì)應(yīng)的LED.
上一篇:【GD32H757Z海棠派開發(fā)板使用手冊(cè)】第七講 FWDG-看門狗實(shí)驗(yàn)
下一篇:【GD32F303紅楓派開發(fā)板使用手冊(cè)】第二十講八 USB-虛擬串口實(shí)驗(yàn)
推薦閱讀最新更新時(shí)間:2025-06-28 16:46





設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁(yè)和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- LTC3119IFE 5V、500kHz 寬輸入穩(wěn)壓器的典型應(yīng)用電路
- BPC292封裝的SPC58 C,E,G和N線的微型插座模塊
- FRDM-17C724EVB: Freedom套件 - MPC17C724, 0.4 A雙H橋
- LTC695-3.3 的典型應(yīng)用 - 3.3V 微處理器監(jiān)控電路
- 使用 Analog Devices 的 LTC6263HMS 的參考設(shè)計(jì)
- FSA3000 兩端口高速 MHL 交換機(jī)的典型移動(dòng) MHL 應(yīng)用
- LTC3633AIFE 1.5V 1MHz 雙相降壓穩(wěn)壓器的典型應(yīng)用電路
- NCV33074ADR2G 運(yùn)算放大器用作 LED 驅(qū)動(dòng)器的典型應(yīng)用
- 4463-915-PDK,用于 Si4463 915-MHz 射頻收發(fā)器的 EZRadio-PRO 無線開發(fā)套件
- CN0313
- ARXML 規(guī)則下 ECU 總線通訊與 ADTF 測(cè)試方案
- 日產(chǎn)在歐洲推出第三代e-POWER技術(shù)
- 福特CEO更看好Waymo激光雷達(dá)方案:比特斯拉純視覺自動(dòng)駕駛路線可靠
- 智元機(jī)器人兩大核心產(chǎn)品啟動(dòng)規(guī)模化生產(chǎn)
- 固態(tài)電池2026量產(chǎn)豪賭,真相還是泡沫?
- 100億元!湖北“下注”人形機(jī)器人產(chǎn)業(yè)
- 海外磷酸鐵鋰電池產(chǎn)能從0到1
- 基于多傳感器數(shù)據(jù)的自動(dòng)駕駛仿真確定性驗(yàn)證
- 國(guó)芯科技發(fā)布全球首款48V安全氣囊芯片,引領(lǐng)智能汽車新紀(jì)元
- 亞馬遜全球部署100萬臺(tái)機(jī)器人
- 谷歌恢復(fù)對(duì)華為供應(yīng),鴻蒙OS系統(tǒng)將何去何從
- 面板報(bào)價(jià)恐跌破成本 廠商將面臨運(yùn)營(yíng)壓力
- 美國(guó)擬對(duì)歐盟再加征40億美元關(guān)稅
- 日本制裁韓國(guó) 或致iPhone減產(chǎn)
- 毫米級(jí)多功能水母機(jī)器人問世
- NEC單片機(jī) UPD78F9234 16位定時(shí)器使用例程
- 單片機(jī)端USB接口數(shù)據(jù)上傳源程序
- vivo APEX概念手機(jī)解析:不止98%全面屏完成度
- 使用C8051F單片機(jī)程序下載器將代碼寫進(jìn)單片機(jī)內(nèi)
- Intel i7-8750H曝光:六核心首次進(jìn)入筆記本