作业帮 > 综合 > 作业

矩阵键盘问题STC51单片机,4 * 4 矩阵键盘,接在P1接口,LED接在P3.7.程序应该实现功能,按下键1时(1行

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/04/28 08:56:36
矩阵键盘问题
STC51单片机,4 * 4 矩阵键盘,接在P1接口,LED接在P3.7.程序应该实现功能,按下键1时(1行1列),LED亮,按下键2(1行2列)时,LED灭.
我按上面的程序实现,按下哪个键LED都没有反应.
//
void main (void){ //主程序
while(1){
if(Key() == 1){
LED = 0; //取LED相反状态
}
if(Key() == 2){
LED = 1; //取LED相反状态
}
}
return (b);//将b作为返回值
}
main 中的 return (b); 这句没有的.
矩阵键盘问题STC51单片机,4 * 4 矩阵键盘,接在P1接口,LED接在P3.7.程序应该实现功能,按下键1时(1行
1、main()当中,return(b)这行去掉.main是主函数,不允许返回东西.而且b生存期和作用域仅在key中.我觉得程序编译可能有问题吧?
2、其他问题不大.主程序改成如下,再测试看看,测P3.7能否变化
main()
{
while(1)
{
while(key()!=10) LED=1;
LED=0;
}
}
如果灯跳变了,检查硬件连接.
再问: KEY = 0xf0;//将键盘口置为11110000 DELAY_MS (2);//延时20毫秒 c = KEY;//将第二次取得值放入寄存器c 加上延迟就可以了。猜想是单片机的P1口还没有达到稳定状态的缘故吧。
再答: 跟你学了一招。行列线上的分布电容过大、上拉电阻值过小造成的。使得单片机在1uS左右没有读到正确的电平。解决了就好。