完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
前几天买了个msp430f149的板子,就是某宝五六十块钱那种,写了个4*4矩阵键盘,然后用lcd1602显示的程序,键盘接在p1口上程序可以使用,但是如果接到其他p口就不能用,键盘没有响应,1602会自动显示几个数。。。求解
检测键值的函数用的是网上找的库函数 /******************************************* 函数名称:Check_Key 功 能:扫描键盘的IO端口,获得键值 参 数:无 返回值 :无 ********************************************/ void Check_Key(void) { uchar row ,col,tmp1,tmp2; tmp1 = 0x80; for(row = 0;row < 4;row++) //行扫描 { P1OUT = 0xf0; //P3.4~P3.7输出全1 P1OUT -= tmp1; //P3.4~p3.7输出四位中有一个为0 tmp1 >>=1; if ((P1IN & 0x0f) < 0x0f) //是否P3IN的P3.0~P3.3中有一位为0 { tmp2 = 0x08; // tmp2用于检测出那一位为0 for(col = 0;col<4;col++) // 列检测 { if((P1IN & tmp2) == 0x00) // 是否是该列,等于0为是 { key_val = key_Map[row * 4 + col]; // 获取键值 switch(key_val){ case 1:key_val = 1;break;//显示0-9的数字 case 2:key_val = 2;break; case 3:key_val = 3;break; case 4:key_val = 11;break; case 5:key_val = 4;break; case 6:key_val = 5;break; case 7:key_val = 6;break; case 8:key_val = 12;break; case 9:key_val = 7;break; case 10:key_val = 8;break; case 11:key_val = 9;break; case 12:key_val = 13;break; case 13:key_val = ' ';break; case 14:key_val = 0;break; case 15:key_val = ' ';break; case 16:key_val = 14;break; default:break;} return; // 退出循环 } tmp2 >>= 1; // tmp2右移1位 } } } } |
|
相关推荐
1个回答
|
|
dddddd
|
|
|
|
只有小组成员才能发言,加入小组>>
2633个成员聚集在这个小组
加入小组MSP430FR5994 使用库函数 定时器触发AD问题请教
1737 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2170 浏览 1 评论
4569 浏览 1 评论
2368 浏览 1 评论
1707 浏览 1 评论
714浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
1748浏览 2评论
938浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 19:58 , Processed in 0.882333 second(s), Total 46, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号