久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: STM32單片機實現按鍵功能 源碼 原理圖 教程等 [打印本頁]

作者: yourfather    時間: 2017-5-6 09:31
標題: STM32單片機實現按鍵功能 源碼 原理圖 教程等
實驗 5  STM32單片機實現按鍵功能

前面幾章,我們介紹了  STM32  的  IO  口作為輸出以及系統時鐘的使用,這
一章,我們將向大家介紹如何使用  STM32  的  IO  口作為輸入用。在本章中,我
們將利用板載的  4  個按鍵,來控制板子上的 4 個  LED。  通過本章的學習,  你
將了解到  STM32  的  IO  口作為輸入口的使用方法。 本章分為以下學習目標:
1、了解按鍵輸入的原理。
2、了解 STM32 的輸入模式。

1.1  硬件電路設計
通過前面的學習,我們學會了如何使用 GPIO 輸出模式,接下來,我們來學
習怎么使用 GPIO 的輸入模式。 首先我們來看在我們開發板上面按鍵的原理圖。  




通過上面的原理圖,我可能看到四個按鍵分別接到單片機的 PA0、 PE2、
PE3、PE4。

1.2  按鍵消抖
通常的按鍵所用開關為機械彈性開關,當機械觸點斷開 、閉合時,電壓信號 如
下圖:  


由于機械點的彈性作用,一個按鍵開關在閉合時不會馬上穩定的接通,在斷
開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動。抖動
時間的長短由按鍵的機械特性決定的,一般為 5ms 到 10ms。按鍵穩定閉合時間
的長短則由操作人員的按鍵動作決定的,一般為零點幾秒至數秒。按鍵抖動會引
起按鍵被誤讀多次。為了確保 CPU 對鍵的一次閉合僅作一次處理,必須去除按
鍵抖動。一般來說一個簡單的按鍵消抖就是先讀取一次按鍵的狀態,如果得到按
鍵按下之后,延時 10ms,再次讀取一次按鍵的狀態,如果按鍵還是按下狀態,
那么說明按鍵已經按下。

1.3   V3.5 庫函數輸入函數介紹
在第一章 LED 燈中我們已經介紹了,STM32 的 IO 口配置方式了,那么這

里 我們就不在作介紹了,我們直接介紹庫函數中的輸入讀取函數。 輸入讀取函
數有多個函數,詳細大家可以查看《STM32 固件庫使用手冊(中 文 翻 譯
版 ).pdf 》, 在 這 里 我 們 簡 單 介 紹 一 個 要 用 到 的 輸 入 函 數
GPIO_ReadInputDataBit()函數:

這個函數是讀取一個設置為輸出模式時,一個 IO 口的狀態值。當讀取的 IO 口
為 1 的時候,輸出 1,當 IO 口輸出為 0 的時候,輸出 0。
  1. /*******************************************************************************
  2. *                 
  3. --------------------------------------------------------------------------------
  4. * 實 驗 名                 : 按鍵實驗
  5. * 實驗說明       : 按鍵按下點亮D1-D4對應LED燈
  6. * 連接方式       :
  7. * 注    意                 :         所用函數在systick.c和led.c,key.c文件內
  8. *******************************************************************************/

  9. #include "public.h"
  10. #include "led.h"
  11. #include "key.h"
  12. #include "systick.h"


  13. /*******************************************************************************
  14. * 函 數 名         : key_pros
  15. * 函數功能                   : 按鍵處理函數,判斷按鍵按下控制對應的LED燈
  16. * 輸    入         : 無
  17. * 輸    出         : 無
  18. *******************************************************************************/
  19. void key_pros()          //按鍵處理函數
  20. {
  21.         if(k_up==1)          //判斷按鍵k_up是否按下
  22.         {
  23.                 delay_ms(10); //消抖處理
  24.                 if(k_up==1)         //再次判斷按鍵k_up是否按下
  25.                 {
  26.                         GPIO_Write(GPIOC,(u16)0xfe);                        
  27.                 }
  28.                 while(k_up); //等待按鍵松開
  29.         }
  30.         if(k_down==0)
  31.         {
  32.                 delay_ms(10);
  33.                 if(k_down==0)
  34.                 {
  35.                         GPIO_Write(GPIOC,(u16)(0xfd));               
  36.                 }
  37.                 while(!k_down);
  38.         }
  39.         if(k_left==0)
  40.         {
  41.                 delay_ms(10);
  42.                 if(k_left==0)
  43.                 {
  44.                         GPIO_Write(GPIOC,(u16)(0xfb));               
  45.                 }
  46.                 while(!k_left);
  47.         }
  48.         if(k_right==0)
  49.         {
  50.                 delay_ms(10);
  51.                 if(k_right==0)
  52.                 {
  53.                         GPIO_Write(GPIOC,(u16)(0xf7));               
  54.                 }
  55.                 while(!k_right);
  56.         }        
  57. }

  58. /****************************************************************************
  59. * Function Name  : main
  60. * Description    : Main program.
  61. * Input          : None
  62. * Output         : None
  63. * Return         : None
  64. ****************************************************************************/
  65. int main()
  66. {                  
  67.         LED_Init();        //LED初始化
  68.         key_init();                 //按鍵端口初始化函數
  69.         GPIO_Write(GPIOC,(u16)(0xff));


  70. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼



下載:
32單片機實現按鍵功能.zip (2.85 MB, 下載次數: 84)



作者: lcw880066    時間: 2018-4-17 14:54
看起來不錯 想學習
作者: zp17777    時間: 2019-3-2 22:16
不錯,跟著學習了         
作者: 懵懂小新人    時間: 2021-2-22 10:44
很好 很奈斯 感謝分享
作者: crazy54    時間: 2025-6-7 11:24
很好,感謝分享

作者: whl054    時間: 2025-6-19 10:30
很好,清楚明了,謝謝




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产综合在线视频 | 日韩精品免费一区二区夜夜嗨 | 国产午夜三级 | 国产美女久久 | 精品蜜桃一区二区三区 | 成人三级晚上看 | 欧美日韩中文字幕在线观看 | 啪啪毛片| 久久xx| 伊人久久av| 欧美激情网址 | 久久久久久久久久国产 | 98国产精品 | 在线欧美| 放几个免费的毛片出来看 | 能看毛片的网站 | 国产欧美日韩在线观看 | 免费的黄色网 | 国产美女视频网站 | 日韩免费毛片 | 日本黄色a级片 | 天天爽天天 | 九九在线精品 | a级片网站 | www.国产在线 | 国产网站在线 | 日狠狠 | 国产精品麻豆免费版 | 国产中文字幕在线 | 亚洲精品伦理 | 国产伦精品一区二区三毛 | 国产福利视频在线观看 | 欧美日韩在线免费观看 | 日韩欧美网站 | 国产午夜影院 | 五月天视频 | 丰满少妇高潮在线观看 | 中文字幕久久久 | 99热精品在线观看 | 久久久在线视频 | 免费看黄色小视频 |