wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2568|回復: 1
收起左側

單片機設計之基于STM32的LCD電子鐘的設計(LVGL+TFT彩屏)

[復制鏈接]
ID:1090924 發表于 2024-12-2 12:57 | 顯示全部樓層 |閱讀模式
零.前置說明
由于本項目使用了LVGL開源框架,建議至少需要了解一點LVGL!!!
一.項目背景     
最近學校開始了單片機設計,筆者深知自己學疏才淺,思索再三,選擇了相對比較容易完成的LCD電子鐘的制作。
        要求如下:​
c004186a972d4cda933cb16206044d9c.jpg
        也是因為筆者最近淺淺學習了下LVGL,所以便想利用手里的一塊TFT彩屏STM32F407來完成這次的設計。
二.材料介紹        
筆者手里的這塊屏幕是1.8寸128*160的SPI屏幕:
9276135b8fc048ccb0d7cb978c15dcb1.png
        主控為嘉立創天空星(STM32F407VET6): e688af948af249c9b2711c1c779218a5.png
        還有一塊不知是什么芯片的降壓12V-5V,大小大概是16mm*22mm:
57e6ff6cd47945b186c2d8a840270700.jpeg
        底板是筆者自己繪制的PCB:
82ff5058735c4401b7c4d8bd5adfd79f.png
        實物如下:
030150f9cbe44df58531ab0dc2395f11.jpeg
d6d5cd485eb14e3db8dea60ffe1e03fe.png
三.代碼編寫        
由于整體功能還是比較簡單的,軟件部分只涉及到按鍵掃描以及時鐘屏幕刷新,所以我們直接建立好Clock和Key的文件:
按鍵        
按鍵就完全是正常按鍵掃描代碼的寫法,注意這里消抖選用的三行按鍵消抖,主要是考慮到延時按鍵消抖可能會破壞掉LVGL整個框架的時基,所以使用的這種方式。
  1. //              KEY1   PD8
  2. //              KEY2   PD9
  3. //              KEY3   PD10
  4. //              KEY4   PD11
  5. //              KEY5   PD12
  6. //              KEY6   PD13

  7. #include "Key.h"

  8. uint8_t Key_Value,Key_Down,Key_Up,Key_Last;

  9. uint8_t Key_GetValue(void)
  10. {
  11.         if(HAL_GPIO_ReadPin(GPIOD,KEY1_Pin) == 0)
  12.                 return 1;
  13.         if(HAL_GPIO_ReadPin(GPIOD,KEY2_Pin) == 0)
  14.                 return 2;
  15.         if(HAL_GPIO_ReadPin(GPIOD,KEY3_Pin) == 0)
  16.                 return 3;
  17.         if(HAL_GPIO_ReadPin(GPIOD,KEY4_Pin) == 0)
  18.                 return 4;
  19.         if(HAL_GPIO_ReadPin(GPIOD,KEY5_Pin) == 0)
  20.                 return 5;
  21.         if(HAL_GPIO_ReadPin(GPIOD,KEY6_Pin) == 0)
  22.                 return 6;
  23.         return 0;
  24. }

  25. void Key_RemoveShake(void)
  26. {
  27.         Key_Value = Key_GetValue();//獲取按下鍵值
  28.         Key_Down = Key_Value & (Key_Value ^ Key_Last);//獲取下降沿
  29.         Key_Up = ~Key_Value & (Key_Value ^ Key_Last);//獲取上升沿
  30.         Key_Last = Key_Value;//鍵值覆蓋
  31. }

  32. Key_Type Key_Press(void)
  33. {
  34.         return Key_Down ? (Key_Type)Key_Value : 0;
  35. }
復制代碼
時鐘

        時鐘要實現正常顯示以及修改界面顯示,所以最好定義一個模式變量來進行分辨,然后根據模式不同顯示不同的數據。

  1. #include "Clock.h"
  2. #include <stdio.h>
  3. #include "Key.h"

  4. extern lv_ui guider_ui;

  5. uint8_t ClockNow[3] = {23,59,55},ClockChange[3] = {0,0,0};
  6. uint8_t ClockString_hour[2],ClockString_minute[2],ClockString_second[2];

  7. Clock_DisMode Clock_Mode = NormalMode;

  8. //時鐘初始化
  9. void Clock_Init(void)
  10. {
  11.         
  12. }

  13. void Clock_NumToString(void)
  14. {
  15.         if(Clock_Mode == NormalMode)
  16.         {
  17.                 ClockString_hour[0] = ClockNow[0] / 10 + '0'; // 十位數字
  18.                 ClockString_hour[1] = ClockNow[0] % 10 + '0'; // 個位數字
  19.                
  20.                 ClockString_minute[0] = ClockNow[1] / 10 + '0'; // 十位數字
  21.                 ClockString_minute[1] = ClockNow[1] % 10 + '0'; // 個位數字
  22.                
  23.                 ClockString_second[0] = ClockNow[2] / 10 + '0'; // 十位數字
  24.                 ClockString_second[1] = ClockNow[2] % 10 + '0'; // 個位數字
  25.         }
  26.         else
  27.         {
  28.                 ClockString_hour[0] = ClockChange[0] / 10 + '0'; // 十位數字
  29.                 ClockString_hour[1] = ClockChange[0] % 10 + '0'; // 個位數字
  30.                
  31.                 ClockString_minute[0] = ClockChange[1] / 10 + '0'; // 十位數字
  32.                 ClockString_minute[1] = ClockChange[1] % 10 + '0'; // 個位數字
  33.                
  34.                 ClockString_second[0] = ClockChange[2] / 10 + '0'; // 十位數字
  35.                 ClockString_second[1] = ClockChange[2] % 10 + '0'; // 個位數字
  36.         }
  37. }

  38. //時鐘正常調度
  39. void Clock_Handler(void)
  40. {
  41.         static uint16_t Timer_1000ms;
  42.         if(++Timer_1000ms > 20)
  43.         {
  44.                 Timer_1000ms = 0;
  45.                 if(++ClockNow[2] >= 60)
  46.                 {
  47.                         ClockNow[2] = 0;
  48.                         if(++ClockNow[1] >= 60)
  49.                         {
  50.                                 ClockNow[1] = 0;
  51.                                 if(++ClockNow[0] >= 24)
  52.                                 {
  53.                                         ClockNow[0] = 0;
  54.                                 }
  55.                         }
  56.                 }
  57.         }
  58. }

  59. void Clock_RefreshToPage(void)
  60. {
  61.         Clock_NumToString();
  62.         lv_label_set_text(guider_ui.screen_label_hour,(const char*)ClockString_hour);
  63.         lv_label_set_text(guider_ui.screen_label_minute,(const char*)ClockString_minute);
  64.         lv_label_set_text(guider_ui.screen_label_second, (const char*)ClockString_second);
  65. }

  66. //設置時鐘完成
  67. void Clock_SetValueFinish(void)
  68. {
  69.         uint8_t i;
  70.         for(i = 0;i < 3;i ++)
  71.         {
  72.                 ClockNow[i] = ClockChange[i];
  73.         }
  74. }

  75. //設置時間任務
  76. void Clock_SetValueTask(void)
  77. {
  78.         Key_RemoveShake();
  79.         switch(Key_Press())
  80.         {
  81.                 case KEY1:
  82.                 {
  83.                         uint8_t i;
  84.                         for(i = 0;i < 3;i ++)//更新設置時間
  85.                         {
  86.                                 ClockChange[i] = ClockNow[i];
  87.                         }
  88.                         Clock_Mode = SetMode;//轉換模式
  89.                         break;
  90.                 }
  91.                 case KEY2://小時++
  92.                 {
  93.                         ClockChange[0] = ClockChange[0] >= 23 ? 0 : ClockChange[0] + 1;
  94.                         break;
  95.                 }
  96.                 case KEY3://分鐘++
  97.                 {
  98.                         ClockChange[1] = ClockChange[1] >= 59 ? 0 : ClockChange[1] + 1;
  99.                         break;
  100.                 }
  101.                 case KEY4:
  102.                 {
  103.                         Clock_SetValueFinish();
  104.                         Clock_Mode = NormalMode;//轉換模式
  105.                         break;
  106.                 }
  107.                 default:
  108.                         break;
  109.         }
  110. }

  111. //按鍵測試案例
  112. void Clock_Demo(void)
  113. {
  114.         Key_RemoveShake();
  115.         if(Key_Press() == KEY1)
  116.                 ClockNow[0]++;
  117. }

復制代碼
主函數

        主函數中只需要在while里調用CLock的文件即可(整個工程要在移植好的LVGL環境下):


  1.   while (1)
  2.   {
  3.                 static uint8_t LVGL_Timer_5ms = 0;//任務調度函數的5ms定時
  4.                 HAL_Delay(1-1);
  5.                 if(LVGL_Timer_5ms++ >= 5)
  6.                 {
  7.                         lv_timer_handler();//任務調度函數
  8.                         LVGL_Timer_5ms = 0;
  9.                 }
  10.                 Clock_Init();
  11.                 Clock_Handler();
  12.                 Clock_SetValueTask();
  13.                 Clock_RefreshToPage();
  14.     /* USER CODE END WHILE */

  15.     /* USER CODE BEGIN 3 */
  16. }</font></font></font>
復制代碼

四.效果
五.總結

        本次只是做了個簡單的界面實現了LCD電子鐘,后續更復雜的功能待讀者們自行開發!

由于整個工程太過龐大,總體積有100+MB無法上傳至本站,因此只上傳核心代碼至此 code.zip (453.16 KB, 下載次數: 0)

,LVGL環境框架還需讀者自行配置。

評分

參與人數 1黑幣 +60 收起 理由
admin + 60 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:108361 發表于 2025-6-26 11:01 | 顯示全部樓層
發一個點亮效果,看看LVGL好看不
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
色网站免费在线观看| www.久久com| 亚洲午夜私人影院| 亚洲大尺度视频在线观看| 欧美精品在线观看播放| 国产一区二区三区在线观看网站| 97人人干人人| 成人www视频在线观看| 男人精品网站一区二区三区| 亚洲爱爱综合网| 天天曰天天操| 一本一道波多野毛片中文在线 | 欧美另类69xxxxx| 色鬼7777久久| 久久99国产视频| 欧美free性69| 国产chinasex对白videos麻豆| 少妇av在线播放| 九色porny视频国产网曝| 在线视频您懂的| 僵尸再翻生在线观看免费国语| 亚洲综合小说| 日韩精品欧美精品| 老司机午夜免费福利| 狼狼综合久久久久综合网| 成人97在线观看视频| 欧美午夜精品久久久| 久久久久久久久岛国免费| 影音先锋亚洲一区| 999久久久精品一区二区| 日韩av中文| 天天影院图片亚洲| 天天做日日爱夜夜爽| 午夜一区在线观看| 日本特级黄色片| 亚洲一区二区三区四区五区六区| 国精产品一区一区三区视频| 欧美韩国日本精品一区二区三区| 国产日韩欧美日韩大片| 久久99亚洲热视| 日韩精品黄色网| 欧美性猛交xxxx乱大交退制版| 国产精品水嫩水嫩| 粉嫩久久99精品久久久久久夜| 在线精品福利| 一本一道久久a久久精品蜜桃| 97久久超碰| 天堂а√在线最新版中文在线| 欧美拍拍视频| 114美女做爰视频在线| 视频免费在线观看| 成人短视频在线看| 欧美在线视频二区| 2014亚洲精品| 国产精品一区久久| 69av在线播放| 欧美高清在线观看| 中文字幕日韩在线视频| 精品一区二区三区四区| 欧美tickling网站挠脚心| 91高清视频在线| 婷婷夜色潮精品综合在线| 亚洲黄一区二区三区| 国产性天天综合网| 久久亚洲综合av| 懂色av中文字幕一区二区三区| 久久偷看各类wc女厕嘘嘘偷窃 | 欧洲一级在线观看| 日本桃色视频| 天天操夜夜逼| www.超级碰| 黄网免费入口| avlululu| 免费观看羞羞视频网站| 成人天堂av| 草莓视频性福宝| 免费看黄色网址| 国产麻豆精品一区二区三区v视界| 国产精品入口麻豆免费| 日本免费资源| 好色视频app| 四虎影视av| 午夜电影福利网| 国产精品㊣新片速递bt| 免费特级黄毛片| 免费男女羞羞的视频网站主页在线观看 | 大地资源第二页在线观看高清版| 欧美一区二区三区精美影视| 日本福利一区二区三区| 欧美日韩日本网| 亚洲欧洲国产精品久久| 免费观看亚洲视频| 大地资源网在线观看免费官网| 中文精品无码中文字幕无码专区| www.四虎.com| 圆产精品久久久久久久久久久| 婷婷综合在线视频| 亚洲综合网在线| 国产一级性生活| 亚洲手机在线观看| 亚洲第一视频在线播放| 四虎影院影音| 啪啪av大全导航福利网址| 色佬视频在线观看| 日本天码aⅴ片在线电影网站| 欧美日韩在线精品一区二区三区激情综合 | 91最新在线| 91露出在线| 97在线超碰| 视频欧美精品| 国产一区二区观看| 午夜亚洲伦理| 99精品视频在线播放观看| 亚洲日本在线视频观看| 欧美日韩精品一区视频| 亚洲男人的天堂在线播放| 欧美日本精品在线| 亚洲综合中文字幕在线观看| 成年人视频网站免费| 久久成人18免费网站| 51精品在线观看| 久久久久久久久久久久久久久久av| 男人添女荫道口女人有什么感觉| 国产乱国产乱老熟300部视频| 国产日韩欧美在线观看视频| 国产熟女一区二区三区四区| 91网站进入| 福利视频在线导航| 成人免费av电影| 99精品在线| 粉嫩一区二区三区在线看| 亚洲国产日日夜夜| 日韩电影免费观看在线观看| 欧洲一区二区视频| 亚洲在线欧美| 成人免费看片载| www.久久精品视频| 国产精品第八页| 狠狠色伊人亚洲综合网站l| 99热播精品免费| 亚洲91久久| 成人在线视频中文字幕| 99精品热6080yy久久| 国产日韩在线不卡| 日韩一卡二卡三卡四卡| 69影院欧美专区视频| 欧美一区二区三区四区夜夜大片 | 四虎国产成人免费观看| 色播在线观看| 亚洲伊人伊成久久人综合网| 亚洲韩日在线| 亚洲精品亚洲人成人网| 亚洲热线99精品视频| 114国产精品久久免费观看| 99久久激情视频| 国产在线视频99| 国产美女极度色诱视频www| 9色在线观看| 国产成人调教视频在线观看 | 国产视频在线观看一区| 国产激情在线观看视频| 免费在线观看av网址| 欧美最猛性xxxx高清| 可以在线观看的av网站| 黄色免费大全亚洲| 国产一区91精品张津瑜| 欧美性猛交xxxx乱大交退制版 | 日韩美一区二区三区| 欧美一级免费视频| 日本午夜激情视频| 久久午夜鲁丝片午夜精品| 国产精品69一区二区三区| dy888亚洲精品一区二区三区| 久久在线视频| 国产精品国产三级国产aⅴ入口 | 亚洲欧美制服第一页| 黄色99视频| 国产毛片毛片毛片毛片毛片毛片| 亚洲国产精品久久久久久久| 日本黄在线观看| 国产va免费精品观看精品视频| 99视频有精品| 一区二区中文字幕| 椎名由奈jux491在线播放| 娇小11一12╳yⅹ╳毛片| 国产精品久久久亚洲第一牛牛| 国产在线天堂www网在线观看| 9色精品在线| 欧美亚洲国产一区二区三区va| 国产精品av免费在线观看| 色婷婷成人在线| 亚洲黄色片视频| 久草资源在线观看| 欧美日韩日本国产亚洲在线| 性做久久久久久免费观看| 日韩美女免费视频| 亚洲男人天堂av在线| 成人免费观看在线视频| 麻豆视频在线观看免费网站| 激情视频一区| 欧美色图免费看| 国产美女99p| 极品尤物一区二区| 免费av福利在线观看| 久久精品福利| 亚洲伦理在线精品| 国产精品久久久久久久电影| 日本一级大毛片a一| 热re66久久精品国产99re| 伊人久久视频| 国产成人亚洲精品青草天美| 亚洲欧美日本另类| 国产精品国三级国产av| 成人黄色片在线观看| 国产1区2区3区在线| 亚洲全部视频| 成人黄色一级视频| 中国china体内裑精亚洲片| 99热亚洲精品| 精品国产亚洲av麻豆| 2024最新电影免费在线观看 | 波多野结衣亚洲色图| 先锋成人影院| 成人亚洲一区| 在线欧美日韩国产| 欧美精品一区二区三区在线四季| 久久久久99精品成人片试看| 天堂资源av| 欧美jjzz| 亚洲高清久久网| 国产精品一色哟哟| 蜜臀av在线观看| 人人鲁人人莫人人爱精品| 不卡免费追剧大全电视剧网站| 欧美激情乱人伦一区| xxxwww国产| 免费女人黄页| 精品动漫一区| 日韩激情av在线播放| 国产精品99久久免费黑人人妻| 2025韩国理伦片在线观看| juy有坂深雪中文字幕| 日韩av黄色| 一区二区三区成人在线视频| 波多野结衣久草一区| 日韩av电影网址| 老司机av在线免费看| 国产成人精品综合在线观看 | 六十路息与子猛烈交尾| av电影免费在线| 一区二区在线影院| 精品国产乱码久久久久久图片 | 加勒比在线日本| 在线精品一区| 日韩小视频在线| 亚洲成人福利视频| 白天操夜夜操| 国产欧美成人| 日韩视频在线免费| 一女三黑人理论片在线| 4480yy私人影院高清不卡| 亚洲综合不卡| 欧美日韩国产999| 在线看片中文字幕| 国产三级在线观看| 成人涩涩免费视频| 国产精品爽爽爽爽爽爽在线观看| 国产一级二级三级| 蜜桃麻豆av在线| 亚洲久本草在线中文字幕| 日韩电影天堂视频一区二区| 99久久久久久久| 日韩中文字幕无砖| 欧美色爱综合网| 亚洲成熟丰满熟妇高潮xxxxx| 天堂视频在线免费观看| 国产精品www.| 操91在线视频| 欧美日韩免费一区二区| av美女在线观看| 亚洲一区二区三区三| 99re6这里有精品热视频| 欧美人成在线观看网站高清| 久久中文字幕二区| 亚洲精品国产a久久久久久| 日本一区二区免费看| av中文字幕网| 一区二区影院| 欧美高清视频在线观看| 精品在线免费观看视频| 欧美日韩视频免费观看| 色综合久久中文综合久久97| 凹凸国产熟女精品视频| 4虎在线播放1区| 国产精品资源站在线| 91福利入口| 天天摸夜夜添狠狠添婷婷| 成人激情在线| 插插插亚洲综合网| 国产精品a成v人在线播放| 深夜视频一区二区| 欧美精品一二三| 亚洲欧洲日韩综合| 国内在线精品| 亚洲色图制服丝袜| aa视频在线播放| 黄色漫画在线免费观看| 顶级嫩模精品视频在线看| 极品校花啪啪激情久久| 在线观看精品视频一区二区三区| 欧美在线视屏| 日av在线播放中文不卡| avove在线观看| 热re66久久精品国产99热| 国产精品a久久久久| 午夜美女久久久久爽久久| 亚洲性猛交富婆| 欧美三级午夜理伦三级在线观看 | 国产欧美精品一二三| 国产黄在线看| 午夜久久久久久| 91亚洲精品久久久蜜桃借种| 国产在线黄色| 精品久久久久久久久久久久久| 亚洲欧美另类动漫| 黄色片在线看| 午夜影院久久久| 日本一二三区在线| www红色一片_亚洲成a人片在线观看_| 精品久久久久久中文字幕大豆网| 手机av在线网| 欧美精品hd| 在线观看www91| 爱爱免费小视频| 欧美xnxx| 亚洲一区999| 国产污视频网站| 97欧美在线视频| 国产欧美日韩免费看aⅴ视频| 中文字幕人成高清视频| 免费欧美在线视频| 日本成人看片网址| 男女性激情视频在线观看| 中文字幕在线播放不卡一区| 国产主播中文字幕| aa在线视频| 亚洲精品一区在线观看| 国产无码精品久久久| 成人情趣视频网站| 国产日本欧美在线观看| 国产精彩自拍| 久久综合九色综合97婷婷女人| 欧美老熟妇喷水| 黄色av免费在线| 精品1区2区在线观看| 日本熟妇毛耸耸xxxxxx| 四季av一区二区三区免费观看| 国产精品一区二区三区毛片淫片| 国产又爽又黄免费视频| av福利精品导航| www.99在线| 粉嫩一区二区| www.久久久久久.com| 国产超碰人人模人人爽人人添| 久久成人国产| 国产精品美女在线播放| 日本亚洲欧美| 日韩一区二区在线看| 日本在线视频免费观看| 亚洲欧洲中文字幕| 久久久福利视频| 57pao国产精品一区| 欧美三级黄色大片| 久久a爱视频| 国产成人精品视频在线观看| 精品一区二区在线欧美日韩| 91亚洲精品乱码久久久久久蜜桃| 不卡影院一区二区| 欧产日产国产精品视频| 久久国产精品亚洲| 寂寞护士中文字幕mp4| av在线播放成人| 在线观看av免费观看| 欧美久久久网站| 91成人性视频| 一二三四日本在线| 亚洲视频小说图片| 亚洲日本精品视频| 成人动漫免费在线观看| 久草精品电影| 激情在线视频| 亚洲精品一区久久久久久| 亚洲黄色在线播放| 成人av电影在线| 亚洲区 欧美区| 任你躁在线精品免费| 国产精品精品软件视频| 三级黄色网址| 日韩视频一区二区三区| 91片黄在线观看喷潮|