国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標題:
51單片機4x4矩陣鍵數值讀取和數碼管顯示程序Proteus仿真
[打印本頁]
作者:
eng
時間:
2021-6-9 17:27
標題:
51單片機4x4矩陣鍵數值讀取和數碼管顯示程序Proteus仿真
4x4矩陣鍵數值的讀取和顯示;
按鍵被按下后只有被松開才會有效果;
多個按鍵被按下只有按鍵都被松開最先被按下的按鍵起效果;
采用共陽極數碼管顯示;
附件包含完整仿真設計和C程序。
仿真原理圖如下(proteus仿真工程文件和完整單片機c代碼可到本帖附件中下載)
1.png
(135.48 KB)
下載附件
2021-6-9 17:25 上傳
部分代碼:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
/**************物理連線
P1對應數碼管;
P2前四位對應矩陣行
P2后四位對應矩陣列
*****************/
#define saomiao P2
#define DB P1
void display(uchar dat); //顯示鍵盤值函數
uchar key_scan( ); //鍵盤掃描函數
uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e }; //0~15數碼管代碼,共陽極
uchar key; //鍵盤值
/********************************************************************
延時函數
*********************************************************************/
void delay10ms(void) //延時程序
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
//*****************鍵盤掃描函數*****************
uchar key_scan()
{
uchar temp;
saomiao=0xfe; //掃描第1行鍵
temp=saomiao;
temp=temp&0xf0;
if(temp!=0xf0)
delay10ms(); //延時10ms
temp=saomiao;
temp=temp&0xf0; //確認按鍵被按下
if(temp!=0xf0)
{
temp=saomiao;
switch(temp)
{
case 0xee: //第1行第1列被按下
key=0;
break;
case 0xde: // 第1行第2列被按下
key=1;
break;
case 0xbe: // 第1行第3列被按下
key=2;
break;
case 0x7e: // 第1行第4列被按下
key=3;
break;
default:
break;
}
K1:
temp=saomiao;
temp=temp&0xf0;
while(temp!=0xf0) //等待按鍵被松開才可以有效果
goto K1;
}
saomiao=0xfd; //掃描第2行鍵
temp=saomiao;
temp=temp&0xf0;
------完整代碼請下載本文尾部的附件----
復制代碼
完整程序代碼和proteus仿真工程:
4x4矩陣鍵.zip
(54.63 KB, 售價: 3 E幣)
2021-6-9 17:26 上傳
點擊文件名下載附件
售價: 3 E幣
[記錄]
[
購買
]
歡迎光臨 ELEOK (http://m.afoofa.cn/)
Powered by Discuz! X5.0