标题:
单片机矩阵键盘用Proteus仿真在数码管显示
[打印本页]
作者:
lumancui
时间:
2020-5-20 14:03
标题:
单片机矩阵键盘用Proteus仿真在数码管显示
矩阵键盘用Proteus仿真在数码管显示
51hei.png
(25.61 KB, 下载次数: 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};
/**********主函数******************************************/
void main(void)
{
uchar key;
C0=1;
while(1)
{
key=scan(); //读取键盘值
if(key!=16)
PSEG=seg[key]; //显示
}
}
/***********延时函数***************************************/
void delayms(uint j)
{
uchar i;
for(;j>0;j--)
{
i=250;
while(--i);
i=249;
while(--i);
}
}
/***********键盘扫描函数***********************************/
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, 下载次数: 28)
2020-5-20 14:01 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1