實物2操作:stc8a8k按鍵使用
1、硬體連線。
下載器連線;
LED連線;
按鍵已經PCB裡面連線好;
2、按鍵原理
為什麼識別按鍵按下之後還需要再識別一次呢。實際上為了消抖,那到底什麼是消抖。根據硬體按鍵原理圖可以知道,開發板上的按鍵是直接連線到IO口上的,那麼如果在按鍵按下的時候,會發生多次迴圈響應。51微控制器的處理速度足夠整個while迴圈裡面的程式在一瞬間來回執行若干次了,那麼如果直接檢測按鍵的話,會出現很不穩定的情況。比如說按鍵控制數碼管上的數字依次加一,按一次就加一次。如果不進行消抖處理的話,那麼在你按下去的一瞬間,數字已經加了很多次了。所以在這裡用了軟體延時的消抖,避免重複檢測的情況。有人可能心想,為什麼不弄一個硬體消抖的電路呢,那當然可以,加一個電容就可以了,也稱之為電容按鍵,一般來說,stm32的開發板上都採用的電容按鍵,也就是硬體消抖,那樣根本無需再用軟體延時消抖了。
3、程式:
先定義引腳。
然後進行程式設計。注意去抖動。
程式設計的時候,可以給每個按鍵設定一個變數作為旗幟,當安下去的時候,旗幟=1進行翻轉,後面可以查詢到哪一個按鍵按下去。
4、例程。
4個按鍵,實現不同的LED閃爍模式。
#include<stc8a8k.h>
sbit key0=P3^4;
sbit key1=P3^5;
sbit key2=P3^6;
sbit key3=P3^7;
sbit LED0=P0^0;
sbit LED1=P0^1;
void delay1ms(unsigned int tms)
{
unsigned int ix=0,iy=0;
for(ix=tms;ix>0;ix--)
for(iy=0;iy<1350;iy++);
}
void main()
{
unsigned char key0flag=0,key1flag=0,key2flag=0,key3flag=0;
while(1)
{
//判斷按鍵按下,去抖動,然後讓對應的按鍵的旗幟舉起來切換
if(key0==0)
{
delay1ms(15);
if(key0==0)
{
key0flag=1;
key1flag=0;
key2flag=0;
key3flag=0;
}
}
else if(key1==0)
{
delay1ms(15);
if(key1==0)
{
key0flag=0;
key1flag=1;
key2flag=0;
key3flag=0;
}
}
else if(key2==0)
{
delay1ms(15);
if(key2==0)
{
key0flag=0;
key1flag=0;
key2flag=1;
key3flag=0;
}
}
else if(key3==0)
{
delay1ms(15);
if(key3==0)
{
key0flag=0;
key1flag=0;
key2flag=0;
key3flag=1;
}
}
//根據旗幟進行判斷執行不同的LED工作模式
if(key0flag==1)
{
LED0=0;LED1=0;
}
else if(key1flag==1)
{
LED0=0;LED1=1;
}
else if(key2flag==1)
{
LED0=1;LED1=0;
}
else if(key3flag==1)
{
LED0=1;LED1=1;
}
}
}
相關文章
- Vim實戰手冊(4)常用編輯操作按鍵
- Vim實戰手冊(5)常用多緩衝區操作按鍵
- 按鍵精靈 使用教程
- 2.3用按鍵精靈錄製鍵盤與滑鼠操作
- Vim實戰手冊(6)常用搜尋與書籤操作按鍵
- JS判斷鍵盤是否按的Enter鍵並觸發指定按鈕點選操作JS
- 商業智慧BI按下智慧物業的快捷鍵
- 12.2 實現鍵盤模擬按鍵
- js實現阻止指定鍵盤按鍵效果JS
- Vim實戰手冊(2)常用的狀態切換按鍵
- JqueryUI實戰操作 按鈕篇jQueryUI
- 艾爾登法環鍵盤操作介紹 艾爾登法環鍵盤按鍵方式說明
- Mac按鍵Mac
- Word快捷鍵使用操作技巧
- J2ME開發中的按鍵事件事件
- C#實現的三種方式實現模擬鍵盤按鍵C#
- tmux常用按鍵UX
- 工業物聯網閘道器:實現跨地域裝置互操作的關鍵
- 鍵盤失靈按什麼鍵恢復 win10鍵盤恢復按鍵Win10
- win10 fn按鍵功能和ctrl對調怎麼替代_win10 fn按鍵功能和ctrl對調如何操作Win10
- 實現android按下Enter鍵便隱藏輸入鍵盤Android
- 【android】android使用命令模擬按鍵Android
- js實現的使用鍵盤操作div位置程式碼例項JS
- win10分屏快捷鍵怎麼操作_win10電腦分屏按什麼快捷鍵Win10
- python selenium2 - 滑鼠鍵盤操作Python
- 操作hibernate多主鍵的問題?(2)
- true--按了整數鍵, false--按了非整數鍵False
- 物聯網平臺為智慧工廠和數字車間按下“加速鍵”
- 蘋果手機使用技巧:10招玩轉iPhone按鍵蘋果iPhone
- VBA命令按鈕操作
- javascrip 按下ctrl和enterEnter鍵實現提交表單Java
- win10鍵盤按鍵速度在哪裡設定_win10鍵盤按鍵速度如何設定Win10
- Android實現點選兩次返回鍵和長按返回鍵退出應用實踐Android
- nodemcu arduino設定按鍵UI
- uboot-cmd按鍵退出boot
- AssistiveTouch熱鍵按鈕
- android 按鍵聲音Android
- js獲取鍵盤按鍵的碼值JS