chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LCD觸摸屏功能實(shí)現(xiàn)控制電機(jī)的設(shè)計(jì)

冬至子 ? 來源:聆思科技AI芯片 ? 作者:vesperW ? 2023-01-18 17:02 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

LCD屏顯示實(shí)現(xiàn)觸摸功能

驅(qū)動(dòng)320* 240 ST7789的SPI屏幕進(jìn)行內(nèi)容顯示,顯示文字和觸控屏的基本使用;參考了:驅(qū)動(dòng)模型中定義了可供上層應(yīng)用調(diào)用的關(guān)鍵接口,如 讀/寫framebuffer 、開/關(guān)觸控動(dòng)作的操作畫面 、獲取屏幕設(shè)備信息 、 設(shè)置亮度/對(duì)比度/像素格式/方向等。

下圖為觸控屏的四個(gè)觸控開/關(guān)四個(gè)電機(jī)的“按鍵”

圖一 上電開機(jī)后顯示.jpg

圖一(上電開機(jī)后顯示)

圖二 1號(hào)電機(jī)工作.jpg

圖二(1號(hào)電機(jī)工作)

圖三 2號(hào)電機(jī)工作.jpg

圖三(2號(hào)電機(jī)工作)

圖四 3號(hào)電機(jī)工作.jpg

圖四(3號(hào)電機(jī)工作)

圖五 4號(hào)電機(jī)工作.jpg

圖五(4號(hào)電機(jī)工作)

圖六 等待操作的狀態(tài).jpg

圖六(等待操作的狀態(tài))

顯示觸控屏的常用API接口

void display_get_capabilities(const struct device *dev, struct display_capabilities *capabilities)

參數(shù)說明

圖七_(dá)屏的API接口參數(shù)說明.JPG

圖七

顯示屏設(shè)備樹配置

&csk6002_9s_nano_pinctrl{
            ...
            /* 顯示屏SPI接口配置 */
            pinctrl_spi0_sclk_default: spi0_sclk_default {
                    pinctrls = < &pinmuxa 15 6 >;
            };
            pinctrl_spi0_mosi_default: spi0_mosi_default {
                    pinctrls = < &pinmuxa 10 6 >;
            };
            pinctrl_spi0_miso_default: spi0_miso_default {
                    pinctrls = < &pinmuxa 17 6 >;
            };
            pinctrl_spi0_cs_default: spi0_cs_default {
                    pinctrls = < &pinmuxa 12 6 >;
            }; 
};

觸摸屏設(shè)備樹配置

用到引腳:i2c0_scl(pb2)、i2c0_sda(pb3)。

在 csk6011a_nano.overlay中完成外設(shè)接口的配置,具體實(shí)現(xiàn)如下:

在app/boards/目錄下的csk6002_9s_nano.overlay文件并添加如下設(shè)備樹配置:

圖八_overlay設(shè)備樹配置.JPG

圖八

&csk6002_9s_nano_pinctrl{
   // ...
    /* 觸摸屏I2C接口配置 */
    pinctrl_i2c0_scl_default: i2c0_scl_default{
            pinctrls = <&pinmuxb 2 8>;
    };
    
    pinctrl_i2c0_sda_default: i2c0_sda_default{
            pinctrls = <&pinmuxb 3 8>;
    }; 
};

&i2c0 {
        status = "okay";
        pinctrl-0 = <&pinctrl_i2c0_scl_default &pinctrl_i2c0_sda_default>; 
        pinctrl-names = "default";
        ft5336@0 {
                compatible = "focaltech,ft5336";
                reg = <0x38>;
                label = "FT5336";
                status = "okay";
                int-gpios = <&gpioa 3 0>;
        };
};

日志串口設(shè)備樹配置

本示例中將SDK默認(rèn)的日志串口(GPIOA_2、GPIOA_3)中的GPIOA_3復(fù)用為觸控屏的int使能腳,因此將日志輸出串口配置為GPIOb_10 、GPIOb_11,具體如下:

&csk6002_9s_nano_pinctrl{  
            /* 日志串口配置 */
            pinctrl_uart0_rx_default: uart0_rx_default{
                    pinctrls = <&pinmuxb 10 2>;
            };
            
            pinctrl_uart0_tx_default: uart0_tx_default{
                    pinctrls = <&pinmuxb 11 2>;
            };
            ...
};

觸摸屏組件配置

在prj.conf文件中打開觸摸屏功能配置:

觸摸配置

CONFIG_KSCAN=y

I2C功能配置

CONFIG_I2C=y

觸摸屏屏驅(qū)動(dòng)配置

CONFIG_KSCAN_BL6XXX=y

顯示屏組件配置

在prj.conf文件中打開顯示屏功能配置:

CONFIG_HEAP_MEM_POOL_SIZE=16384
CONFIG_LOG=y

GPIO功能配置

CONFIG_GPIO=y

顯示功能配置

CONFIG_DISPLAY=y

spi功能配置

CONFIG_SPI=y

ST7789V顯示屏驅(qū)動(dòng)配置

CONFIG_ST7789V=y

LCD屏顯示實(shí)現(xiàn)

void main(void)
{
    size_t x;
    size_t y;
    size_t rect_w;
    size_t rect_h;
    size_t h_step;
    size_t scale;
    size_t grey_count;
    uint8_t *buf;
    int32_t grey_scale_sleep;
    const struct device *display_dev;
    struct display_capabilities capabilities;
    struct display_buffer_descriptor buf_desc;
    size_t buf_size = 0;
    fill_buffer fill_buffer_fnc = NULL;

    LOG_INF("Display sample for %s", DISPLAY_DEV_NAME);
    
    /* kscan初始化 */
    kscan_init();
    
    /* 獲取display設(shè)備實(shí)例 */
    display_dev = device_get_binding(DISPLAY_DEV_NAME);

    if (display_dev == NULL) {
        LOG_ERR("Device %s not found. Aborting sample.",
            DISPLAY_DEV_NAME);
        RETURN_FROM_MAIN(1);
    }
    
    /* 獲取顯示功能 */
    display_get_capabilities(display_dev, &capabilities);

    if (capabilities.screen_info & SCREEN_INFO_MONO_VTILED) {
        rect_w = 32;
        rect_h = 10;
    } else {
        rect_w = 2;
        rect_h = 1;
    }

    h_step = rect_h;
    scale = (capabilities.x_resolution / 8) / rect_h;

    rect_w *= scale;
    rect_h *= scale;

    if (capabilities.screen_info & SCREEN_INFO_EPD) {
        grey_scale_sleep = 10000;
    } else {
        grey_scale_sleep = 100;
    }

    buf_size = rect_w * rect_h;

    if (buf_size < (capabilities.x_resolution * h_step)) {
        buf_size = capabilities.x_resolution * h_step;
    }
    
    /* 色塊配置 */
    switch (capabilities.current_pixel_format) {
    case PIXEL_FORMAT_ARGB_8888:
        fill_buffer_fnc = fill_buffer_argb8888;
        buf_size *= 4;
        break;
    case PIXEL_FORMAT_RGB_888:
        fill_buffer_fnc = fill_buffer_rgb888;
        buf_size *= 3;
        break;
    case PIXEL_FORMAT_RGB_565:
        fill_buffer_fnc = fill_buffer_rgb565;
        buf_size *= 2;
        break;
    case PIXEL_FORMAT_BGR_565:
        fill_buffer_fnc = fill_buffer_bgr565;
        buf_size *= 2;
        break;
    case PIXEL_FORMAT_MONO01:
    case PIXEL_FORMAT_MONO10:
        fill_buffer_fnc = fill_buffer_mono;
        buf_size /= 8;
        break;
    default:
        LOG_ERR("Unsupported pixel format. Aborting sample.");
        RETURN_FROM_MAIN(1);
    }

    buf = k_malloc(buf_size);

    if (buf == NULL) {
        LOG_ERR("Could not allocate memory. Aborting sample.");
        RETURN_FROM_MAIN(1);
    }
    
    (void)memset(buf, 0xFFu, buf_size);

    buf_desc.buf_size = buf_size;
    buf_desc.pitch = capabilities.x_resolution;
    buf_desc.width = capabilities.x_resolution;
    buf_desc.height = h_step;

    /*整屏填充白色背景*/
    for (int idx = 0; idx < capabilities.y_resolution; idx += h_step) {
        display_write(display_dev, 0, idx, &buf_desc, buf);
    }

    /*左上角填充紅色塊*/
    fill_buffer_fnc(TOP_LEFT, 0, buf, buf_size);
    x = 0;
    y = 0;
    display_write(display_dev, x, y, &buf_desc, buf);

    /*右上角填充綠色塊*/
    fill_buffer_fnc(TOP_RIGHT, 0, buf, buf_size);
    x = capabilities.x_resolution - rect_w;
    y = 0;
    display_write(display_dev, x, y, &buf_desc, buf);

    /*右下角填充藍(lán)色塊*/
    fill_buffer_fnc(BOTTOM_RIGHT, 0, buf, buf_size);
    x = capabilities.x_resolution - rect_w;
    y = capabilities.y_resolution - rect_h;
    display_write(display_dev, x, y, &buf_desc, buf);
    
    /* 關(guān)閉顯示消隱 */
    display_blanking_off(display_dev);

    grey_count = 0;
    x = 0;
    y = capabilities.y_resolution - rect_h;

    /*左下角灰色動(dòng)態(tài)色塊*/
    while (1) {
        fill_buffer_fnc(BOTTOM_LEFT, grey_count, buf, buf_size);
        display_write(display_dev, x, y, &buf_desc, buf);
        ++grey_count;
        k_msleep(grey_scale_sleep);
    }
}

觸摸屏功能實(shí)現(xiàn)

Zephyr具備kscan(keyboard scan matrix)驅(qū)動(dòng)模型,其驅(qū)動(dòng)程序用于檢測(cè)矩陣鍵盤或帶有按鈕的設(shè)備中的按鍵(用戶觸碰觸摸屏本質(zhì)上是生成一個(gè)行列坐標(biāo))。查閱zephyr官網(wǎng)Display Interface。

圖九_(tái)LCD點(diǎn)陣坐標(biāo)觸控1.JPG

圖九

注冊(cè)callback函數(shù)

/* 觸摸回調(diào)函數(shù),打印坐標(biāo) */
static void k_callback(const struct device *dev, uint32_t row, uint32_t col,
               bool pressed)
{
    ARG_UNUSED(dev);
    printk("row = %u col = %u, pressed:%s\\n", row, col, pressed ? "TRUE" : "FLASE");
}

void kscan_init(void)
{   
    /* 獲取kscan設(shè)備實(shí)例 */
    const struct device *kscan_dev = device_get_binding(DISPLAY_KSAN_DEV_NAME);

    if (!device_is_ready(kscan_dev)) {
        LOG_ERR("kscan device %s not ready", kscan_dev->name);
        return;
    }
    
    /* 注冊(cè)回調(diào),在k_callback中可看到對(duì)應(yīng)的坐標(biāo)與狀態(tài)printk輸出操作 */
    kscan_config(kscan_dev, k_callback);
    /* 使能回調(diào) */
    kscan_enable_callback(kscan_dev);
}

void main(void)
{
    kscan_init();
    ...
}

編譯的指令是:

lisa zep build

燒錄的指令是:

lisa zep flash

結(jié)果

觸控屏顯示了四個(gè)觸控開關(guān)符,分別觸摸對(duì)應(yīng)顯示在(LED1符 LED2符 LED3符 LED4符的下面觸控開關(guān))。四個(gè)功能(GPIO) PWM 控制電機(jī)運(yùn)行,后面補(bǔ)上(高發(fā)性的疫情過后,回公司上班補(bǔ)上,焊接上電機(jī)驅(qū)動(dòng)板)。我們開發(fā)了一個(gè)PC上位機(jī)軟件(視覺圖分析用)。GC032A攝像頭上傳的圖像以后可以在觸控屏顯(一個(gè)靜態(tài)圖)。

圖十_圖像LCD點(diǎn)陣坐標(biāo)分析.JPG

圖十

審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1801

    瀏覽量

    95716
  • LCD觸摸屏
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    6826
  • 回調(diào)函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    88

    瀏覽量

    11883
  • 控制電機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    244

    瀏覽量

    18665
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    LCD電阻觸摸屏的設(shè)計(jì)安裝

    如今LCD 觸摸屏的應(yīng)用在日常生活中已經(jīng)很常見,觸摸屏的人機(jī)交互簡(jiǎn)單快捷,本文介紹了在設(shè)計(jì)安裝LCD的電阻式觸摸屏時(shí),我們需要注意的事項(xiàng)。
    發(fā)表于 04-08 10:41 ?1376次閱讀

    電阻式觸摸屏,什么是電阻式觸摸屏

    電阻式觸摸屏,什么是電阻式觸摸屏   這種觸摸屏利用壓力感應(yīng)進(jìn)行控制。電阻觸摸屏的主要部分是一塊與顯示器表面非常配合的電
    發(fā)表于 03-24 11:02 ?6384次閱讀

    EP7212處理器的LCD控制觸摸屏接口設(shè)計(jì)

    介紹EP7212 嵌入式處理器上LCD 控制器的結(jié)構(gòu)和功能;深入探討 ADS7843 觸摸屏接口芯片的模式選擇才應(yīng)用技巧;基于該系統(tǒng)給出一個(gè)與彩色L
    發(fā)表于 07-19 15:08 ?29次下載
    EP7212處理器的<b class='flag-5'>LCD</b><b class='flag-5'>控制</b>及<b class='flag-5'>觸摸屏</b>接口設(shè)計(jì)

    LCD控制觸摸屏接口設(shè)計(jì)

    觸摸屏作為一種特殊的計(jì)算機(jī)外設(shè), 是目前最自然、便利的一種人機(jī)交互方式。提出了一種用8位單片機(jī)控制16位帶觸摸屏LCD的設(shè)計(jì)方法。TFT- LCD
    發(fā)表于 05-02 11:08 ?8003次閱讀
    <b class='flag-5'>LCD</b><b class='flag-5'>控制</b>及<b class='flag-5'>觸摸屏</b>接口設(shè)計(jì)

    電阻式觸摸屏的結(jié)構(gòu)和實(shí)現(xiàn)原理介紹

    很多LCD模塊都采用了電阻式觸摸屏,這些觸摸屏等效于將物理位置轉(zhuǎn)換為代表X、Y坐標(biāo)的電壓值的傳感器。通常有4線、5線、7線和8線觸摸屏實(shí)現(xiàn)
    的頭像 發(fā)表于 12-11 09:35 ?2.7w次閱讀
    電阻式<b class='flag-5'>觸摸屏</b>的結(jié)構(gòu)和<b class='flag-5'>實(shí)現(xiàn)</b>原理介紹

    如何掌握PLC觸摸屏控制電機(jī)的正反轉(zhuǎn)

    PLC觸摸屏控制電機(jī)的正反轉(zhuǎn)是plc編程中很重要的一個(gè)環(huán)節(jié),所以難度是可想而知的。有些自動(dòng)化高級(jí)工程師在初期也是經(jīng)過4到5編的練習(xí)才熟練掌握了技巧。今天就為大家做一下觸摸屏
    發(fā)表于 08-01 17:45 ?7442次閱讀

    PLC觸摸屏的作用_觸摸屏是怎樣控制PLC的

    PLC程序是用來控制電氣設(shè)備傳動(dòng)的智能儀器,它需要工程人員利用編程語言編寫程序,以實(shí)現(xiàn)各種控制方式。觸摸屏程序可與PLC可編程序控制器直接連
    發(fā)表于 05-21 10:46 ?2.1w次閱讀

    基于EP7212處理器芯片實(shí)現(xiàn)LCD觸摸屏控制器的應(yīng)用方案

    隨著生活中類似于PDA的手持設(shè)備的增多,彩色LCD觸摸屏也越來越普及。本文除了簡(jiǎn)單介紹EP7212的特性以外,主要討論EP7212上的LCD控制器如何驅(qū)動(dòng)彩色
    的頭像 發(fā)表于 03-18 09:28 ?3600次閱讀
    基于EP7212處理器芯片<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>LCD</b><b class='flag-5'>觸摸屏</b><b class='flag-5'>控制</b>器的應(yīng)用方案

    電容觸摸屏的優(yōu)勢(shì)

    當(dāng)你使用手機(jī)和POS設(shè)備時(shí),有曾想過為什么可以通過LCD觸摸屏控制他們嗎? 沒錯(cuò),電容式觸摸技術(shù)可以實(shí)現(xiàn)這些
    的頭像 發(fā)表于 02-24 11:26 ?2338次閱讀

    LCD電容觸摸屏的三種觸摸技術(shù)In-Cell/On-Cell/OGS

    相信了解過TFT LCD觸摸顯示的朋友們一定都聽說過In-Cell/ On-Cell/ OGS電容觸摸技術(shù)。在很多的行業(yè)領(lǐng)域,都會(huì)應(yīng)用到
    的頭像 發(fā)表于 04-28 15:14 ?6916次閱讀
    <b class='flag-5'>LCD</b>電容<b class='flag-5'>觸摸屏</b>的三種<b class='flag-5'>觸摸</b>技術(shù)In-Cell/On-Cell/OGS

    LCD | TFT LCD 觸摸屏的選擇

    具有觸摸功能的TFT LCD顯示操作簡(jiǎn)單,被廣泛應(yīng)用在各個(gè)領(lǐng)域。觸摸屏技術(shù)有5種類型,他們具有優(yōu)點(diǎn)和局限性,領(lǐng)域成本,圖像質(zhì)量,
    的頭像 發(fā)表于 10-13 16:57 ?3114次閱讀
    <b class='flag-5'>LCD</b> | TFT <b class='flag-5'>LCD</b> <b class='flag-5'>觸摸屏</b>的選擇

    modbus觸摸屏

    modbus觸摸屏是指支持Modbus通訊協(xié)議的觸摸屏,它可以通過串口或網(wǎng)絡(luò)與其他設(shè)備進(jìn)行通訊,從而實(shí)現(xiàn)對(duì)其他設(shè)備的控制和監(jiān)測(cè)。Modbus觸摸屏
    的頭像 發(fā)表于 06-28 09:34 ?1995次閱讀
    modbus<b class='flag-5'>觸摸屏</b>

    基于嵌入式LCD觸摸屏的設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于嵌入式LCD觸摸屏的設(shè)計(jì).doc》資料免費(fèi)下載
    發(fā)表于 10-12 10:18 ?4次下載
    基于嵌入式<b class='flag-5'>LCD</b>的<b class='flag-5'>觸摸屏</b>的設(shè)計(jì)

    電容觸摸屏原理 電容觸摸屏和電阻觸摸屏有什么區(qū)別

    電容觸摸屏和電阻觸摸屏是兩種常見的觸摸屏技術(shù),它們?cè)谠?、結(jié)構(gòu)和應(yīng)用方面都有很大的區(qū)別。下面將詳細(xì)介紹電容觸摸屏的原理、結(jié)構(gòu)和特點(diǎn),并與電阻觸摸屏
    的頭像 發(fā)表于 01-22 16:13 ?7143次閱讀

    LCD觸摸屏的PCB設(shè)計(jì)

    液晶顯示LCD)和觸摸屏技術(shù)已經(jīng)成為各種電子設(shè)備的核心組成部分,從智能手機(jī)到電視和醫(yī)療設(shè)備。在這些設(shè)備中,PCB的設(shè)計(jì)對(duì)于LCD觸摸屏
    的頭像 發(fā)表于 07-18 11:17 ?3235次閱讀
    <b class='flag-5'>LCD</b><b class='flag-5'>屏</b>和<b class='flag-5'>觸摸屏</b>的PCB設(shè)計(jì)