標題:
單片機矩陣鍵盤用Proteus仿真在數(shù)碼管顯示
[打印本頁]
作者:
lumancui
時間:
2020-5-20 14:03
標題:
單片機矩陣鍵盤用Proteus仿真在數(shù)碼管顯示
矩陣鍵盤用Proteus仿真在數(shù)碼管顯示
51hei.png
(25.61 KB, 下載次數(shù): 31)
下載附件
2020-5-20 17:03 上傳
單片機源程序如下:
/*******************************************************************************
文件名稱: main.c
作 者:
版 本: V1.00
說 明: 矩陣鍵盤掃描實驗
修改記錄:
*******************************************************************************/
/*******************************************************************************
* 功能描述: *
* 掃描矩陣鍵盤 *
* 當有鍵按下時按照按鍵的位置 *
* 顯示當前的鍵值
*接線說明:P00~P07-SA~SG,P10~P13-R1~R4,P14~P17-C1~C4,P20-C0
*******************************************************************************/
#include <reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define PSEG P0
#define PKEY P1
sbit C0 = P2^0;//位定義
void delayms(uint);
uchar scan(void);
uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
/**********主函數(shù)******************************************/
void main(void)
{
uchar key;
C0=1;
while(1)
{
key=scan(); //讀取鍵盤值
if(key!=16)
PSEG=seg[key]; //顯示
}
}
/***********延時函數(shù)***************************************/
void delayms(uint j)
{
uchar i;
for(;j>0;j--)
{
i=250;
while(--i);
i=249;
while(--i);
}
}
/***********鍵盤掃描函數(shù)***********************************/
uchar scan(void)
{
uchar k=16,m,n,in;
PKEY=0xf0; //掃描所有行
if((PKEY&0xf0)!=0xf0)
{
for(m=0;m<4;m++)
{
PKEY=~(0x01<<m);
for(n=0;n<4;n++)
{
in=PKEY;
in=in>>(4+n);
if((in&0x01)==0)
{
delayms(10);
if((in&0x01)==0){k=n+m*4;break;}
}
}
if(k!=16){break;}
}
}
return(k);
}
復制代碼
所有資料51hei提供下載:
Proteus.zip
(24.5 KB, 下載次數(shù): 28)
2020-5-20 14:01 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1