久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
矩陣式鍵盤按鍵值的數碼管顯示實驗
[打印本頁]
作者:
wgw020
時間:
2015-6-11 21:57
標題:
矩陣式鍵盤按鍵值的數碼管顯示實驗
#include<reg51.h> //包含51單片機寄存器定義的頭文件
sbit P14=P1^4; //將P14位定義為P1.4引腳
sbit P15=P1^5; //將P15位定義為P1.5引腳
sbit P16=P1^6; //將P16位定義為P1.6引腳
sbit P17=P1^7; //將P17位定義為P1.7引腳
unsigned char code Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //數字0~9的段碼
unsigned char keyval; //定義變量儲存按鍵值
/**************************************************************
函數功能:數碼管動態掃描延時
**************************************************************/
void led_delay(void)
{
unsigned char j;
for(j=0;j<200;j++)
;
}
/**************************************************************
函數功能:按鍵值的數碼管顯示子程序
**************************************************************/
void display(unsigned char k)
{
P2=0xbf; //點亮數碼管DS6
P0=Tab[k/10]; //顯示十位
led_delay(); //動態掃描延時
P2=0x7f; //點亮數碼管DS7
P0=Tab[k%10]; //顯示個位
led_delay(); //動態掃描延時
}
/**************************************************************
函數功能:軟件延時子程序
**************************************************************/
void delay20ms(void)
{
unsigned char i,j;
for(i=0;i<100;i++)
for(j=0;j<60;j++)
;
}
/**************************************************************
函數功能:主函數
**************************************************************/
void main(void)
{
EA=1; //開總中斷
ET0=1; //定時器T0中斷允許
TMOD=0x01; //使用定時器T0的模式1
TH0=(65536-500)/256; //定時器T0的高8位賦初值
TL0=(65536-500)%256; //定時器T0的高8位賦初值
TR0=1; //啟動定時器T0
keyval=0x00; //按鍵值初始化為0
while(1) //無限循環
{
display(keyval); //調用按鍵值的數碼管顯示子程序
}
}
/**************************************************************
函數功能:定時器0的中斷服務子程序,進行鍵盤掃描,判斷鍵位
**************************************************************/
void time0_interserve(void) interrupt 1 using 1 //定時器T0的中斷編號為1,使用第一組寄存器
{
TR0=0; //關閉定時器T0
P1=0xf0; //所有行線置為低電平“0”,所有列線置為高電平“1”
if((P1&0xf0)!=0xf0) //列線中有一位為低電平“0”,說明有鍵按下
delay20ms(); //延時一段時間、軟件消抖
if((P1&0xf0)!=0xf0) //確實有鍵按下
{
P1=0xfe; //第一行置為低電平“0”(P1.0輸出低電平“0”)
if(P14==0) //如果檢測到接P1.4引腳的列線為低電平“0”
keyval=1; //可判斷是S1鍵被按下
if(P15==0) //如果檢測到接P1.5引腳的列線為低電平“0”
keyval=2; //可判斷是S2鍵被按下
if(P16==0) //如果檢測到接P1.6引腳的列線為低電平“0”
keyval=3; //可判斷是S3鍵被按下
if(P17==0) //如果檢測到接P1.7引腳的列線為低電平“0”
keyval=4; //可判斷是S4鍵被按下
P1=0xfd; //第二行置為低電平“0”(P1.1輸出低電平“0”)
if(P14==0) //如果檢測到接P1.4引腳的列線為低電平“0”
keyval=5; //可判斷是S5鍵被按下
if(P15==0) //如果檢測到接P1.5引腳的列線為低電平“0”
keyval=6; //可判斷是S6鍵被按下
if(P16==0) //如果檢測到接P1.6引腳的列線為低電平“0”
keyval=7; //可判斷是S7鍵被按下
if(P17==0) //如果檢測到接P1.7引腳的列線為低電平“0”
keyval=8; //可判斷是S8鍵被按下
P1=0xfb; //第三行置為低電平“0”(P1.2輸出低電平“0”)
if(P14==0) //如果檢測到接P1.4引腳的列線為低電平“0”
keyval=9; //可判斷是S9鍵被按下
if(P15==0) //如果檢測到接P1.5引腳的列線為低電平“0”
keyval=10; //可判斷是S10鍵被按下
if(P16==0) //如果檢測到接P1.6引腳的列線為低電平“0”
keyval=11; //可判斷是S11鍵被按下
if(P17==0) //如果檢測到接P1.7引腳的列線為低電平“0”
keyval=12; //可判斷是S12鍵被按下
P1=0xf7; //第四行置為低電平“0”(P1.3輸出低電平“0”)
if(P14==0) //如果檢測到接P1.4引腳的列線為低電平“0”
keyval=13; //可判斷是S13鍵被按下
if(P15==0) //如果檢測到接P1.5引腳的列線為低電平“0”
keyval=14; //可判斷是S14鍵被按下
if(P16==0) //如果檢測到接P1.6引腳的列線為低電平“0”
keyval=15; //可判斷是S15鍵被按下
if(P17==0) //如果檢測到接P1.7引腳的列線為低電平“0”
keyval=16; //可判斷是S16鍵被按下
}
TR0=1; //開啟定時器T0
TH0=(65536-500)/256; //定時器T0的高8位賦初值
TL0=(65536-500)%256; //定時器T0的高8位賦初值
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产视频中文字幕
|
欧美成人一级
|
日韩成人专区
|
波多野结衣亚洲
|
欧美一区二区三区四区在线
|
亚洲最大福利网
|
99re6在线视频
|
狠狠操狠狠干
|
中文字幕1区2区3区 亚洲国产成人精品女人久久久
|
成人免费在线视频
|
午夜影院在线观看
|
毛片在线免费
|
久久一级大片
|
国产精品久久久久久久久大全
|
国产乡下妇女做爰
|
手机在线观看av
|
国产成人麻豆免费观看
|
精品视频一区二区三区在线观看
|
91亚洲国产成人久久精品网站
|
www.青青草
|
91精品国产91久久久久久
|
jⅰzz亚洲
|
91精品一区
|
精品国产一级
|
一区二区国产精品
|
美女天天操
|
国产欧美在线视频
|
久久91精品
|
日韩在线观看视频一区
|
国产羞羞视频在线观看
|
亚洲一区av
|
国产综合网站
|
美日韩免费视频
|
久久91
|
欧美黑人激情
|
久久国产精品一区
|
精品一区电影
|
成人一区二区三区视频
|
精品视频一区二区三区在线观看
|
91欧美激情一区二区三区成人
|
久久久亚洲
|