完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我用的是TX-1C的实验板 在做书上的习题 题目如下:实验板上电后 按顺序按下矩阵键盘后 在数码管上依次显示0~F,也就是说 4×4的键盘 与16个数 一对一对应 并且最终显示在数码管上。----------- 我自己写的程序 2,3,4横排的键盘显示正常 但只有第一横排的四个按键 按下去没有任何反应。求哪位高手帮我解解惑 谢谢! 程序如下: #include #define uint unsigned int #define uchar unsigned char ***it h1=P3^0; //h1是第一横排 ***it h2=P3^1; ***it h3=P3^2; ***it h4=P3^3; ***it l1=P3^4; //l1是第一竖列 ***it l2=P3^5; ***it l3=P3^6; ***it l4=P3^7; ***it wela=P2^7; ***it dula=P2^6; uchar num,aa; uchar code table[]={ // 0~F的数组 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void main() { TMOD=0x11; TH0=(65536-600)/256; TL0=(65536-600)%256; TH1=(65536-600)/256; TL1=(65536-600)%256; EA=1; ET0=1; ET1=1; TR0=1; TR1=1; aa=0; P0=0xff; wela=1; P0=0x00; //开启数码管的位选 wela=0; P0=0x00; //清零 while(1) { dula=1; P0=table[num]; // 数码管显示 dula=0; } } void T0_timer() interrupt 3 { TH1=(65536-600)/256; TL1=(65536-600)%256; aa++; if(aa==1) //第一次中断时 给第一横排 一个低电平 其它横排为高电平 { h1=0; h2=1; h3=1; h4=1; } if(aa==2) //第二次中断时 给第二横排 一个低电平 其它横排为高电平 { h1=1; h2=0; h3=1; h4=1; } if(aa==3) //第三次中断时 给第三横排 一个低电平 其它横排为高电平 { h1=1; h2=1; h3=0; h4=1; } if(aa==4) //第四次中断时 给第四横排 一个低电平 其它横排为高电平 { h1=1; h2=1; h3=1; h4=0; aa=0; //aa清零 一边下一次中断来临时 从第一排开始 } } void T1_timer() interrupt 1 { TH0=(65536-600)/256; TL0=(65536-600)%256; if(l1==0) //当中断连临时 检测第一竖列 有无低电平 { //若有低电平 则继续判断 是哪一横排有低电平 if(h1==0) //从而确定是哪个按键 {num=0;while(!l1);} if(h2==0) {num=4;while(!l1);} if(h3==0) {num=8;while(!l1);} if(h4==0) {num=12;while(!l1);} //之后的3个if语句 都是跟第一句 同样的思路 } if(l2==0) { if(h1==0) {num=1;while(!l2);} if(h2==0) {num=5;while(!l2);} if(h3==0) {num=9;while(!l2);} if(h4==0) {num=13;while(!l2);} } if(l3==0) { if(h1==0) {num=2;while(!l3);} if(h2==0) {num=6;while(!l3);} if(h3==0) {num=10;while(!l3);} if(h4==0) {num=14;while(!l3);} } if(l4==0) { if(h1==0) {num=3;while(!l4);} if(h2==0) {num=7;while(!l4);} if(h3==0) {num=11;while(!l4);} if(h4==0) {num=15;while(!l4);} } } 来自小组: 电路分析设计 |
|
相关推荐
4个回答
|
|
|
|
|
|
果然是高手!我刚试了一下 还是这个程序 我把u***下在线 拔掉了之后再上电 果然问题没有了 呵呵 这个问题我折腾多半天了 不过我还有个小问题 想请教 : 出现这种问题 是因为我程序的问题吗 是不是换个方法写 就能避免呢 还是说所有的 有关键盘的程序 都得拔掉u***下载线 才能正常使用呢? 谢谢!
|
|
|
|
还有个问题 我的这个程序 在我按第四列的四个按键时 旁边的8个发光二极管中有几个 总是会亮起 可是我的程序里没有对P1口 操作什么啊..求解惑 呵呵(TX-1C板子上 8个发光二极管 是接在P1口上的)
|
|
|
|
wela=1;
P0=0x00; //开启数码管的位选 wela=0; 改为 wela=1; P0=0xc0; //开启数码管的位选 wela=0; 即解决LED灯亮的问题 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
54 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
395 浏览 0 评论
439 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1265 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
529 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11749 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 01:36 , Processed in 0.675262 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号