基於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功能,在按下某個按鈕後,某發光二...