基於Proteus學習微控制器系列(三) 按鍵

2021-08-19 02:26:00 字數 2641 閱讀 2888

基於proteus學習微控制器系列(一)——點亮led

基於proteus學習微控制器系列(二)——驅動數碼管

基於proteus學習微控制器系列(三)——按鍵

基於proteus學習微控制器系列(四)——中斷

基於proteus學習微控制器系列(五)——定時器實現電子錶

基於proteus學習微控制器系列(六)——i2c匯流排at24c04

基於proteus學習微控制器系列(七)——實時時鐘ds1302

基於proteus學習微控制器系列(八)——ad轉換及其應用--tlc549

基於proteus學習微控制器系列(九)——da轉換及其應用--tlc5615

基於proteus學習微控制器系列(十)——lcd1602

基於proteus學習微控制器系列(十一)——lcd12864

1. 按鍵消抖

產生原因:

按鍵內部的觸點出現了接觸不良的振動。通過儀器觀察,圖1-1是按鍵按下過程中cp端實際電平改變情況。t1為不按按鍵時刻,t2為按鍵按下瞬間的抖動,t3為按鍵按下穩定時刻,t4為按鍵放開時刻瞬間,t5為按鍵放開時刻。從圖中可以了解到,按鍵按下的瞬間由於撞擊會使觸點來回彈跳,雖然時間一瞬間,但t2時間內獲得了多個電平的上公升沿。

按鍵抖動時間的長短由按鍵的機械特性決定,一般為5ms~10ms。在微控制器系統中,按鍵可以直接連線在微控制器的i/o口上,可以利用程式延時操作消除鍵盤的抖動現象。

2. 按鍵輸入程式

2.1  按鍵抬起有效

不同的人對鍵按鍵按下的時間長短有很大差別,按鍵按下抬起有效控制方式主要是為了避免按鍵按下所停留(粘滯)時間對控制結果的影響。程式設計時,按鍵按下抬起有效需控制程式設計需要注意幾個方面:首先,按鍵抖動時間一般在10毫秒以內,按鍵按下需要消除抖動;第二,按鍵按下不管時間有多長,led不受控制;第三,按鍵抬起瞬間led狀態才發生改變。按鍵按下抬起有效控制led閃爍的程式處理過程見圖1-2所示。   

#include sbit key1 = p2^1;		// key1接   p2.1

sbit led = p0^0; // led接p0.0

void delay(unsigned int x) //延時函式

void key(void)

}void main(void)

2.2  按鍵按下有效

2.2.1 按鍵按下經過消抖後就應該立即控制led的狀態

if(key1 == 0)

2.2.2 重複按壓按鍵可立即控制led,需記錄按鍵狀態

bit key_flag;

if(key1 == 1)key_flag = 0;

if(key1 == 0)

2.2.3 按鍵一直按壓先等待一段時間後,led狀態自動轉換,不受按鍵控制。

while(key1 == 0 ) 	//如果按鍵按下不抬起

3. 矩陣按鍵

3.1 電路原理

微控制器4×4矩陣鍵盤見**電路1-3所示,電路採用proteus軟體設計。圖中16個按鍵占用p2的8個埠,其中p2的低4位連線列線,高4位連線行線;兩個共陽數碼管段選端連線p0口,公共端分別連線p1.0和p1.1;網路標號相同的引腳具有連線關係。

4×4矩陣鍵盤程式採用i/o口掃瞄與檢測原理,其步驟是先讓某乙個行線設定為低電平,再檢測列線上的按鍵是否按下,如果此時某個按鍵按下,與之連線的列線也被拉低。比如當行線p2.4 設定為低電平時,如果按下按鍵k0、k1、k2、k3中某乙個,即可以拉低p2.0、p2.1、p2.2、p2.3中對應的埠,此時通過查詢p2狀態,系統就可以獲知是哪乙個按鍵實際按下。

3.2 電路圖

3.3 程式設計

本專案實現的目的是系統檢測並讓數碼如顯示這個按鍵的編號。

#includecode p1_scan=; //按鍵掃瞄陣列

code key_temp_value=; //按鍵按下所對應的值

code unsigned char seven_seg[10]=;

void delay(unsigned int x) //延時函式

unsigned char key_scan() //鍵盤掃瞄函式

}} }

return(88);

}void display(unsigned char i)

void main()

}

用 Proteus學習51微控制器之1602液晶

1602液晶,即一行有16個字元,共2行的液晶顯示屏,只能顯示ascii碼,不能顯示漢字。一般1602有16條線,其中8根線是資料操作線,其他8根線是控制線,定義如下 埠名稱說明 vss 電源地 vdd 電源正極 vo液晶對比度調節端 rs資料 命令選擇端 h為資料,l為命令 r w讀寫控制 h l...

用Proteus學習51微控制器之鍵盤

最近剛做好乙個站,基於rails 3,教程為主,大家捧場看看,謝謝!www.yo945.com 與微控制器互動,鍵盤可能是最直接的工具了。所以我對於鍵盤檢測也是十分期待的。鍵盤說開了,其實就是很多的按鈕。如果鍵盤數比較小的話,直接使用io口連線按鈕就可以了,比如我要實現乙個功能,按鍵使數字加1或減1...

微控制器學習

微控制器學習 宗旨 技術的學習是有限的,分享的精神是無限的。學習使用微控制器就是理解微控制器硬體結構,在彙編或c語言中學會各種功能的初始化設定,以及實現各種功能的程式編制。第一步 數字 i o的使用 使用按鈕輸入訊號,發光二極體顯示輸出電平,就可以學習引腳的數字i o功能,在按下某個按鈕後,某發光二...