找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

期待有人给我解答这几最简单的数码管显示问题

[复制链接]
admin 发表于 2012-9-2 21:19:46 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
while(flag==0) //一旦有按键,跳出该函数,flag在keyscan函数里,初始为0
{
we0=0;//数码管动态显示,we为位选,38译码器000亮第一个灯,001亮第二个
we1=0;
we2=0;
P0=tab[num1];
delay(300);

we0=1;
we1=0;
we2=0;
P0=tab[num2];
delay(300);
num1=keyscan();
}
为什么这句话在数码管显示的时候会出现全为num2的值呢?本来应该两个数码管一个显示num1另一个显示num2的
unsigned char keyscan()
{
uchar code keycode[]={0x7e,0x7d,0x7b,0x77,0xbe,0xbd,0xbb,0xb7,0xde,0xdd};//键盘表,定义10个按键的行列组合值
uchar cord_h,cord_l,temp,i; //定义变量行、列、返回值、循环变量
P3=0x0f; //行线输出全为0
cord_h=P3&0x0f; //读入列线值
if(cord_h!=0x0f) //先检测有无按键按下
{
delay(20);
if(cord_h!=0x0f)
{
flag++; //有按键加1
cord_h=P3&0x0f; //读入列线值
P3=cord_h|0xf0; //输出当前列线值
cord_l=P3&0xf0; //读入行线值
temp=cord_h+cord_l;//键盘最后组合码值
for(i=0;i<10;i++)
{
if(temp==keycode[i])
{
k=i;
break;
}
}
}
//等待按键释放
}
return k; //返回键值
}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-29 12:36 , Processed in 0.057267 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表