完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; u8 KeyValue; //用来存放读取到的键值 u8 code smgduan[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~D的值段选码 u8 smgwei[4]={0xfe,0xfd,0xfb,0xf7};//位选码 u8 num[4] = {0};//存放数值的数组 u8 keynum = 0;//按键按下的次数 void delay(u16 i) { while(i--); } void KeyDown(void) { u8 a=0,i; P2=0xf0; if(P2!=0xf0)//读取按键是否按下 { delay(1000);//延时10ms进行消抖 if(P2!=0xf0)//再次检测键盘是否按下 { //测试行 P2=0xf0; keynum++; switch(P2) { case(0xE0): KeyValue=0;break; case(0xD0): KeyValue=3;break; case(0xB0): KeyValue=6;break; case(0x70): KeyValue=9;break; } //测试列 P2=0x0F; switch(P2) { case(0x0E): KeyValue=KeyValue+1;break; case(0x0D): KeyValue=KeyValue+2;break; case(0x0B): KeyValue=KeyValue+3;break; } num[keynum-1] = KeyValue; if(keynum>4) { keynum=4;} while((a<50)&&(P2!=0x0F)) //检测按键松手检测 { delay(1000); a++; } } } } void display(void) { u8 i,t; for(i=0;i<4;i++) { P1 = smgwei[i];//位选 t=num[i]; P0=smgduan[t]; //段选 delay(15); } } void main() { while(1) { KeyDown(); //按键判断函数 display(); } }
|
|
相关推荐
1个回答
|
|
用简单的代码调试看看
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
830 浏览 0 评论
6169 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2808 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
3099 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
33131 浏览 11 评论
73601 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 03:41 , Processed in 0.725445 second(s), Total 73, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号