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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

C51單片機鍵盤檢測原理以及實現

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年03月20日   【字體:

首先,在做軟件之前確定硬件。明確鍵盤類型:
彈性按鍵:按下時閉合,松手后自動斷開。如電腦鍵盤

自鎖式按鍵:按下時閉合,且自動鎖住。一邊用于開關

在I/O口檢測觸電電壓時應該考慮按鍵抖動問題,一般按鍵抖動為5~10ms左右,具體與其機械特性有關,所以要加檢測抖動環節,可以用軟件或者去抖動芯片硬件處理,當然通常用延時方法處理。
注意正確連接引腳。

下面是一個簡單的4按鍵獨立鍵盤程序,在51hei開發板的數碼管上操作。
完整的源代碼下載 http://m.zg4o1577.cn/f/jpdd.rar 
數值為0~59變化,開始顯示00
按key1數值加1,按key2數值減1,按key3數值歸0,按key4數值每秒加1。

#include <reg52.h>
#define uchar unsigned char
#define unit unsigned int
sbit key1=P3^2;
sbit key1=P3^4;
sbit key1=P3^6;
sbit key1=P3^7;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06.0x5b,0x4f,
0x66,0x6d,0x7d,0x07
0x7f,0x6f,0x77,0x7c
0x39,0x5e,0x79,0x71};
void delayms(unit);
uchar numt0,unm;
void display(uchar numdis)      //定義一個顯示的函數,分個位十位,用來顯示
{
uchar shi,ge;                 //然后用輪流顯示發,利用人眼圖像殘留分別顯示
shi=numdis/10;               //上面的numdis表示num這個顯示的數
ge=numdis%10;              //numdis由下面主函數num賦值
 
dula=1;
P0=table[shi];
dula=0;
 
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(5);
 
dula=1;
P0=table[ge];
dula=0;
 
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(5);
}
void delayms(unit xms)            //自定義延遲環節
{
unit i,j;
for(i=xms,i>0,i--);
for(j=110,j>0,j--);
}
void init()                       //初始化函數,保證程序正常運行
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-458720%256;
EA=1;
ET=0;
}
void keyscan()                 //鍵盤掃描函數,期間注意鍵盤抖動,由延遲方法處理
{
if(key1==0)
{
delayms(10);
if(key1==0)
{
num++;
if(num==60)
num=0;
while(!key1);                //等待按鍵釋放才執行,下同
}
}
if(key2==0)
{
delayms(10);
if(key2==0)
{
num--;
if(num==0)
num=60;
while(!key2);
}
}
if(key3==0)
{
delayms(10);
if(key3==0)
{
uum=0;
while(!key3);
}
}
if(key4==0)
{
delayms(10);
if(key4==0)
{
while(!key4);
TR0=~TR0;                  //啟動或者中斷定時器
}
}
}
void main()
{
init();
while(1);
{
keyscan();
display(num);
}
}
void T0_time() interrupt 1                        //中斷程序
{
TH0=(65536-45872)/256;                       //重裝數值,數值需要根據晶振進行計算
TL0=(65536-45872)%256;
numt0++ ;
if(numt0==20)                        ///由于機器周期為50ms,那么1s需要20個周期
{
numt0=0;
num++;                      
if(num==60)
num=0;
}
}

 

關閉窗口

相關文章

主站蜘蛛池模板: 天天操网 | 久久成人精品视频 | 亚洲精品一区二区二区 | 91短视频网址 | 91在线观看视频 | 午夜精品影院 | 韩国毛片一区二区三区 | 欧美一二精品 | 日日摸日日碰夜夜爽2015电影 | 奇米四色影视 | av片网站 | 99精品久久| 免费精品 | 欧美精品1区2区3区 精品国产欧美一区二区 | 国产久 | 在线观看www视频 | 美女久久 | a级黄色片在线观看 | 中文字幕在线观看一区二区 | 免费在线观看一区二区 | 亚洲视频中文字幕 | 久久丁香 | 国产精品一区二区视频 | 精品亚洲一区二区三区四区五区 | 天天干天天操天天爽 | 奇米在线 | 亚洲一区二区三区免费观看 | 国产精品久久久久久福利一牛影视 | 欧美日韩高清免费 | 国产精品夜夜夜一区二区三区尤 | 国产精品99久久久久久久久 | 久久伊人一区 | 欧美成人aaa级毛片在线视频 | 韩日一区二区 | 高清国产午夜精品久久久久久 | 伊人网一区 | 欧美精品在欧美一区二区少妇 | 亚洲va中文字幕 | 综合久久久久 | 91在线视频在线观看 | 精品欧美一区二区在线观看 |