標(biāo)題:
自己寫的一個(gè)矩陣鍵盤控制數(shù)碼管得程序
[打印本頁]
作者:
961042558
時(shí)間:
2020-6-9 19:59
標(biāo)題:
自己寫的一個(gè)矩陣鍵盤控制數(shù)碼管得程序
大家可以參考一下
單片機(jī)源程序如下:
#include <reg51.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit seg_sel=P1^4;
sbit bit_sel=P1^5;
#define DATA P0
u8 code seg_table[]= //數(shù)據(jù)表格
{
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e,
};
u8 code bit_table[]=
{
0x10,0x20,0x40,0x80,
0x01,0x02,0x04,0x08,
};
void delay(u16 num) //延時(shí)程序
{
u16 x,y;
for(x=num;x>0;x--)
for(y=110;y>0;y--)
{
;
}
}
void display_led(u8 which_bit, u8 which_number) //數(shù)碼管顯示程序
{
bit_sel = 1;
DATA = bit_table[which_bit];
bit_sel = 0;
//delay(200);
seg_sel = 1;
DATA = seg_table[which_number];
seg_sel=0;
delay(200);
}
u8 key_scan (void) //編碼程序
{
u8 temp,temp2;
P2=0xf0; //輸出
temp=P2; //讀入P2值
if(temp!=0xf0)
{
delay(50); //消抖
temp=P2;
if(temp!=0xf0)
{
temp2=temp&0xf0; //保留高四位
P2=0x0f; //輸出
delay(10); //使電平值充分讀入
temp=P2;
temp2 |=temp; //保留低四位
return temp2;
}
//while(P2!=0x0f);
}
}
u8 encode(u8 cod) //解碼程序
{
u8 num;
switch(cod)
{
case 0xee : num=0 ; break;
case 0xde : num=1 ; break;
case 0xbe : num=2 ; break;
case 0x7e : num=3 ; break;
case 0xed : num=4 ; break;
case 0xdd : num=5 ; break;
case 0xbd : num=6 ; break;
case 0x7d : num=7 ; break;
case 0xeb : num=8 ; break;
case 0xdb : num=9 ; break;
case 0xbb : num=10; break;
case 0x7b : num=11; break;
case 0xe7 : num=12; break;
case 0xd7 : num=13; break;
case 0xb7 : num=14; break;
case 0x77 : num=15; break;
default : break;
}
return cod;
}
void main(void)
{
u8 num,cod;
P0 = 0xff;
P1 = 0xff;
seg_sel = 0;
bit_sel = 0;
while(1)
{
cod=key_scan(); //判斷和編碼
num=encode(cod); //解碼
display_led(1,num); //顯示
}
}
復(fù)制代碼
所有程序51hei提供下載:
矩陣數(shù)碼管2.zip
(30.5 KB, 下載次數(shù): 7)
2020-6-9 19:59 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時(shí)間:
2020-6-10 03:13
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1