|
本帖最后由 zl2168 于 2018-3-19 21:11 编辑 实例75 4×4矩阵式键盘 先Proteus仿真一下,确认有效。
实例75 4×4矩阵式键盘.rar
(44.8 KB, 下载次数: 30)
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1.。书中电路和程序设计有详细说明,程序语句条条有注解。 |
| 刚刚没注意看图,74LS47下面的几个pin都要拉高,然后key_num/10和%10得到的是十进制数,要转换成BCD码(8421最常用)发给74LS47,可以先用拨码开关把显示调试好 |
|
key_temp1=P1; if(key_temp0==0x0e) { key_temp1=P1;//新加的 switch(key_temp1) { case 0xe0: key_num=4;break; case 0xd0: key_num=3;break; case 0xb0: key_num=2;break; case 0x70: key_num=1;break; default:key_num=0;break; } } 四段都是同样的问题以这段为例,我讲一下我看出的问题,首先你在switch之前应当对 key_temp1赋值,如果不赋值的话你可以debuy一下应该key_temp1都是0xf0,你可以试一下看 |
wildxie 发表于 2018-3-19 14:58 调试的时候没有显示 ![]() |
| 你要把你的问题说清楚,是按键没反应,还是不显示,还是什么? 一步一步的排除问题,先是把主程序里面的keynum设置成全局变量随便赋一个值,屏蔽按键扫描,先看看能不能显示你设置的值,能显示再处理按键 |
要实现按下按键1时显示1, 按下2时显示2......按下16时显示16![]() |