女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

零知開源——STM32F4實現ILI9486顯示屏UI界面系列教程(三):記事本功能實現

PCB56242069 ? 來源:PCB56242069 ? 作者:PCB56242069 ? 2025-06-27 09:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

?

智能設備的人機交互界面中,記事本功能是基礎且重要的應用場景。本教程將基于STM32F4和LVGL庫,在3.5英寸ILI9486顯示屏上實現完整的記事本功能,包含文本輸入、虛擬鍵盤、內容清除等核心功能。

一、硬件連接(同電子書教程)

硬件連接方式與電子書閱讀器完全一致,請參考系列教程(一)的硬件連接部分。顯示屏直接插入零知增強板專用接口,無需額外連線。

系列教程直達:零知開源——STM32F4實現ILI9486顯示屏UI界面系列教程(一):電子書閱讀器功能

ILI9486擴展板顯示屏及記事本UI頁面圖:

wKgZPGhahOOAOmqWACUdxV-WDhM491.jpg

二、軟件UI組件實現

2.1 核心功能實現

lv_obj_t *win = create_app_win("NotePad");
    lv_coord_t hres = lv_disp_get_hor_res(NULL);
    lv_coord_t vres = lv_disp_get_ver_res(NULL);
    lv_coord_t header_height = 32; // 標題欄高度

    // 創建文本區域
    lv_obj_t *ta = lv_ta_create(win, NULL);
    lv_obj_set_size(ta, hres - 40, (vres - header_height) / 2);
    lv_obj_align(ta, NULL, LV_ALIGN_IN_TOP_MID, 0, header_height + 10);
    lv_ta_set_text(ta, "");
    lv_ta_set_cursor_type(ta, LV_CURSOR_BLOCK);
    lv_ta_set_placeholder_text(ta, "Type your note here...");
    lv_ta_set_sb_mode(ta, LV_SB_MODE_AUTO);

    // 創建鍵盤 - 使用更小的鍵盤節省空間
    lv_obj_t *kb = lv_kb_create(win, NULL);
    lv_obj_set_size(kb, hres - 40, (vres - header_height) / 3);
    lv_obj_align(kb, ta, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
    lv_kb_set_ta(kb, ta);

    // 創建按鈕容器 - 簡化按鈕數量
    lv_obj_t *btn_cont = lv_cont_create(win, NULL);
    lv_cont_set_layout(btn_cont, LV_LAYOUT_ROW_M);
    lv_obj_set_size(btn_cont, hres - 40, 40);
    lv_obj_align(btn_cont, kb, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);

    // 只保留清除按鈕節省空間
    lv_obj_t *btn_clear = lv_btn_create(btn_cont, NULL);
    lv_obj_t *btn_clear_label = lv_label_create(btn_clear, NULL);
    lv_label_set_text(btn_clear_label, "Clear");
    lv_obj_set_event_cb(btn_clear, note_clear_event_cb);
    lv_obj_set_user_data(btn_clear, ta);

2.2 文本區域功能詳解

光標控制

LV_CURSOR_BLOCK: 塊狀光標,提高可視性

自動光標跟蹤:滾動時保持光標可見

觸摸精確定位:點擊任意位置移動光標

滾動優化

自動滾動條管理(LV_SB_MODE_AUTO)

平滑滾動動畫

長文本分頁渲染

占位提示

引導用戶輸入的提示文本

輸入內容時自動消失

內容清空后重新顯示

2.3 清除功能實現

// 清除按鈕事件處理
static void note_clear_event_cb(lv_obj_t * btn, lv_event_t event)
{
    if(event == LV_EVENT_SHORT_CLICKED) {
        lv_obj_t *ta = (lv_obj_t *)lv_obj_get_user_data(btn);
        lv_ta_set_text(ta, "");
    }
}

三、零知IDE配置(同電子書教程)

請參考系列教程(一)的零知IDE配置部分,確保:

正確配置LCD屏幕驅動

啟用觸摸屏支持

添加LVGL庫依賴

關鍵配置項:

#define LV_USE_TA            1
#define LV_USE_KB            1
#define LV_USE_ANIMATION     1    // 啟用動畫效果
#define LV_FONT_ROBOTO_16    1    // 啟用默認字體

觸摸屏校準:

bool my_touchpad_read(lv_indev_drv_t * indev, lv_indev_data_t * data)
{
        static lv_coord_t last_x = 0;
        static lv_coord_t last_y = 0;
        
        data->state = ts.touched() ? LV_INDEV_STATE_PR : LV_INDEV_STATE_REL;
        if(data->state == LV_INDEV_STATE_PR){
                TS_Point p = ts.getPoint();
                 
               
                last_x = LV_HOR_RES-(p.y *LV_HOR_RES)/4095;       
                last_y = (p.x *LV_VER_RES)/4095;       
                 
                Serial.print("touched:");
                Serial.print(last_x);Serial.print(",");Serial.println(last_y);
        }
        data->point.x = last_x;
        data->point.y = last_y;
         
        return false; 
}

四、演示效果

4.1 功能演示

觸摸鍵盤輸入英文內容

觸摸文本區域移動光標

滑動查看長文本內容

點擊清除按鈕清空內容

大小寫和符號鍵盤切換

4.2 視頻效果

https://www.bilibili.com/video/BV1QdKgzjEpe/?spm_id_from=333.1387.homepage.video_card.click&vd_source=a31e3d8d8ce008260eee442534c2f63d

記事本界面包含文本編輯區、虛擬鍵盤和清除按鈕

4.3 性能指標

項目 數值 說明
鍵盤響應時間 < 50ms 從觸碰到鍵盤彈出的延遲
內存占用 32KB 包括LVGL核心和文本緩沖區
輸入響應延遲 < 30ms 按鍵到字符顯示的時間
最大字符容量 無限制 動態內存管理
觸摸精度 ±3像素 鍵盤按鍵觸發精度

五、常見問題解決

?輸入卡頓/優化方法

// 在lv_conf.h中增加內存池大小
#define LV_MEM_SIZE (16U* 1024U) // 增加至48KB
#define LV_DISP_DEF_REFR_PERIOD 30 // 降低刷新率至30ms

六、總結與擴展

6.1 實現總結

本教程實現了基礎記事本功能:

文本輸入與編輯功能

虛擬鍵盤輸入支持

一鍵清除內容

滾動查看長文本

觸摸優化的用戶界面

6.2 擴展建議

// 1. 中文輸入支持(需外置字庫)
void init_chinese_font() {
    lv_font_t * cn_font = lv_font_load("S:/fonts/simhei_20.bin");
    static lv_style_t style;
    lv_style_init(&style);
    lv_style_set_text_font(&style, LV_STATE_DEFAULT, cn_font);
    lv_obj_add_style(ta, LV_TEXTAREA_PART_MAIN, &style);
}

// 2. 保存到Flash
void save_to_flash() {
    const char* text = lv_ta_get_text(ta);
    // 使用W25Q128 Flash芯片存儲
    w25qxx_write_str(0x1000, text);
}

// 3. 添加時間戳
void add_timestamp() {
    char time_str[20];
    sprintf(time_str, "n[%02d:%02d]", rtc.getHours(), rtc.getMinutes());
    lv_ta_add_text(ta, time_str);
}

// 4. 云同步功能
void sync_to_cloud() {
    if(WiFi.status() == WL_CONNECTED) {
        httpClient.post("/api/notes", lv_ta_get_text(ta));
    }
}

6.3 下一步

在下一個系列教程中,我們將實現相冊瀏覽功能,支持圖片預覽和大圖查看模式。

?零知開源是一個真正屬于國人自己的開源軟硬件平臺,在開發效率上超越了Arduino平臺并且更加容易上手,大大降低了開發難度。
?零知開源在軟件方面提供了完整的學習教程和豐富示例代碼,讓不懂程序的工程師也能非常輕而易舉的搭建電路來創作產品,測試產品。快來動手試試吧!

?訪問零知開源平臺,獲取更多實戰項目和教程資源吧!


審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 顯示屏
    +關注

    關注

    28

    文章

    4593

    瀏覽量

    76132
  • STM32F4
    +關注

    關注

    3

    文章

    201

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    開源——STM32F4驅動MAX31865實現PT100高精度測溫

    材料增強板(STM32F407VET6) MAX31865模塊(支持線制PT100) 線制PT100傳感器 0.96寸I2C OLE
    發表于 05-26 18:52

    開源——STM32F4實現ILI9486顯示屏UI界面系列教程(一):電子書閱讀器功能

    教程將詳細介紹如何在增強板上使用3.5寸ILI9486顯示屏實現電子書閱讀器
    發表于 06-24 19:09

    開源——STM32F4實現ILI9486顯示屏UI界面系列教程(二):日歷功能實現

    ——STM32F4實現ILI9486顯示屏UI界面系列
    發表于 06-25 17:51

    開源——STM32F4實現ILI9486顯示屏UI界面系列教程():記事本功能實現

    在智能設備的人機交互界面中,記事本功能是基礎且重要的應用場景。教程將基于STM32F4和LVGL庫,在3.5英寸
    發表于 06-27 09:51

    關于用STC52芯片單片機實現英文記事本功能

    本人小白,課程要求制作一個單片機開發板并實現一個英文記事本,現在板做好了,但是關于程序編寫沒有什么思路,希望大神們可以指點指點,最好給點程序哈哈,因為沒什么思路了,下面是設計要求:1、開機密碼設置
    發表于 12-06 18:20

    利用stm32F4驅動攝像頭在ILI9341顯示屏顯示畫面

    (本文建立在對OV7725有一定了解的基礎上)我的目的很簡單,就是利用stm32F4 驅動攝像頭在我的ILI9341顯示屏(240*320分辨率)上顯示畫面。把我手頭上的器件圖先給出把
    發表于 08-03 07:04

    如何利用stm32F4驅動攝像頭在ILI9341顯示屏顯示畫面

    如何利用stm32F4驅動攝像頭在ILI9341顯示屏顯示畫面?
    發表于 10-11 09:25

    STM32F4系列簡單簡介

    STM32F4系列簡單簡介
    發表于 09-29 15:16 ?21次下載
    <b class='flag-5'>STM32F4</b><b class='flag-5'>系列</b>簡單簡介

    TFTLCD液晶顯示屏芯片ILI9486L的數據手冊免費下載

    的320RGBX480點圖形數據包和電源電路。ILI9486L支持并行CPU 8-/9-/16-/18位數據總線接口和3-/4線串行外圍接口(SPI)。ILI9486L還兼容用于視頻圖像顯示
    發表于 10-10 08:00 ?63次下載
    TFTLCD液晶<b class='flag-5'>顯示屏</b>芯片<b class='flag-5'>ILI9486</b>L的數據手冊免費下載

    TFT3.5 ILI9486彩屏電路原理圖免費下載

    本文檔的主要內容詳細介紹的是TFT3.5 ILI9486彩屏電路原理圖免費下載。
    發表于 03-05 08:00 ?37次下載
    TFT3.5 <b class='flag-5'>ILI9486</b>彩屏電路原理圖免費下載

    AWTK 開源串口開發(12) - 記事本應用

    傳統的的串口中,開發一個記事本應用,即使可能,也是非常麻煩的事情。在AWTK串口中,內置文件模型和文件選擇對話框,實現一個簡單的記事本,
    的頭像 發表于 03-09 08:23 ?596次閱讀
    AWTK <b class='flag-5'>開源</b>串口<b class='flag-5'>屏</b>開發(12) - <b class='flag-5'>記事本</b>應用

    如何在Windows 11恢復舊版記事本

    據了解,Microsoft于今年二月對Windows 11的兩大應用程序——記事本與媒體播放器做出更新,引入了新的UI設計和增強功能。然而仍有部分用戶偏愛老版本的應用。
    的頭像 發表于 03-28 10:21 ?1987次閱讀

    開源——STM32F4驅動MAX31865實現PT100高精度測溫

    教程詳細介紹了增強板(STM32F407VET6)通過MAX31865模塊讀取線制PT100鉑電阻溫度的完整
    的頭像 發表于 06-06 09:27 ?369次閱讀
    <b class='flag-5'>零</b><b class='flag-5'>知</b><b class='flag-5'>開源</b>——<b class='flag-5'>STM32F4</b>驅動MAX31865<b class='flag-5'>實現</b>PT100高精度測溫

    開源——STM32F4實現ILI9486顯示屏UI界面系列教程(二):日歷功能實現

    教程詳細介紹了基于STM32F4ILI9486觸摸的日歷應用開發,涵蓋硬件連接、軟件實現
    的頭像 發表于 06-25 17:34 ?115次閱讀
    <b class='flag-5'>零</b><b class='flag-5'>知</b><b class='flag-5'>開源</b>——<b class='flag-5'>STM32F4</b><b class='flag-5'>實現</b><b class='flag-5'>ILI9486</b><b class='flag-5'>顯示屏</b><b class='flag-5'>UI</b><b class='flag-5'>界面</b><b class='flag-5'>系列</b>教程(二):日歷<b class='flag-5'>功能</b><b class='flag-5'>實現</b>

    開源——STM32F4實現ILI9486顯示屏UI界面系列教程(四):相冊預覽和大圖功能

    教程詳細講解如何在LVGL中實現相冊預覽和圖片放大功能。通過事件回調、窗口管理和圖片取模技術,構建流暢的用戶體驗。主要內容包括:硬件連接方式(與電子書教程相同)、軟件UI組件
    的頭像 發表于 06-27 12:01 ?47次閱讀
    <b class='flag-5'>零</b><b class='flag-5'>知</b><b class='flag-5'>開源</b>——<b class='flag-5'>STM32F4</b><b class='flag-5'>實現</b><b class='flag-5'>ILI9486</b><b class='flag-5'>顯示屏</b><b class='flag-5'>UI</b><b class='flag-5'>界面</b><b class='flag-5'>系列</b>教程(四):相冊預覽和大圖<b class='flag-5'>功能</b>