如何用proteus和keil C的仿真实现4*4矩阵键盘控制一个LED灯显示0~F 需要程序和仿真图,谢谢!

 我来答
黄石佳诚家电维修
2011-06-22 · TA获得超过1427个赞
知道小有建树答主
回答量:1559
采纳率:93%
帮助的人:599万
展开全部
//功能:4*4矩阵键盘控制LED位移显示
//MCU:AT89S52
//晶振:12MHZ
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
//延时函数
void _delay_ms(uint x)
{
uchar i;
while(x--)
for(i=0;i<120;i++);
}
//键盘扫描函数
void Scan_Key(void)
{

P1=0xfe;//PD口(11101111)第1行为低
if((P1&0xf0)!=0xf0)//如果不等于0X0F则有按下
{
_delay_ms(10);//延时10MS,去抖
if((P1&0xf0)!=0xf0)//如果TEMP不等于0X0F,则说明有键按下
{
switch(P1)//判断TEMP的值
{
case 0xee:P2=0xfe;break;
case 0xde:P2=0xfc;break;
case 0xbe:P2=0xf8;break;
case 0x7e:P2=0xf0;break;
}
}
}
P1=0xfd;
if((P1&0xf0)!=0xf0)
{
_delay_ms(10);
if((P1&0xf0)!=0xf0)
{
switch(P1)
{
case 0xed:P2=0xe0;break;
case 0xdd:P2=0xc0;break;
case 0xbd:P2=0x80;break;
case 0x7d:P2=0x00;break;
}
}
}
P1=0xfb;
if((P1&0xf0)!=0xf0)
{
_delay_ms(10);
if((P1&0xf0)!=0xf0)
{
switch(P1)
{
case 0xeb:P3=0xfe;break;
case 0xdb:P3=0xfc;break;
case 0xbb:P3=0xf8;break;
case 0x7b:P3=0xf0;break;
}
}
}
P1=0xf7;
if((P1&0xf0)!=0xf0)
{
_delay_ms(10);
if((P1&0xf0)!=0xf0)
{
switch(P1)
{
case 0xe7:P3=0xe0;break;
case 0xd7:P3=0xc0;break;
case 0xb7:P3=0x80;break;
case 0x77:P3=0x00;break;
}
}
}
}
void main(void)
{
while(1)
{
Scan_Key();
}
}
追问
可以附带仿真图吗?谢谢!
追答
可以,加QQ286477745
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式