完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
1.参考教程:
清翔51单片机教程 2.实现效果: 利用独立键盘的按键,控制数码管数字的变化。 3.基本原理 **特点:**每个按键占用一个IO口,当按键数量较多时,IO口的利用效率不高,但程序简单,适用于所需按键较少的场合。 **原理:**以按键S2为例,给P30赋逻辑1,当S2被按下的时候,由于S2左端接地,则P30输出由高电平变低电平。S2没被按下依旧输出高电平。 4.参考代码 #include #include #define uint unsigned int #define uchar unsigned char ***it DU = P2^6; //数码管段选 ***it WE = P2^7; //数码管位选 ***it key_s2 = P3^0;//独立按键S2 ***it key_s3 = P3^1;//独立按键S3 uchar num; //数码管显示的值 //共阴数码管段选表0-9 uchar code tabel[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,}; //毫秒级延时函数定义 void delay(uint z) { uint x,y; for(x = z; x > 0; x--) for(y = 114; y > 0 ; y--); } void main()//main函数自身会循环 { WE = 1;//打开位选锁存器 P0 = 0XFE;//1111 1110 WE = 0;//锁存位选数据 while(1) { if(key_s2 == 0) { delay(20);//按键消抖(按键会有抖动影响结果) if(key_s2 == 0) { num++; if(num == 10) num = 0; while(!key_s2);//松手检测(松手后跳出循环) } } if(key_s3 == 0) { delay(20);//按键消抖 if(key_s3 == 0) { num--; if(num == 255) num = 9; while(!key_s3);//松手检测 } } //松手之后刷新显示 DU = 1;//打开段选锁存器 P0 = tabel[num];//0000 0110 DU = 0;//锁存段选数据 } } |
|
|
|
只有小组成员才能发言,加入小组>>
2513 浏览 0 评论
1083浏览 2评论
700浏览 1评论
452浏览 0评论
193浏览 0评论
329浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 02:11 , Processed in 1.136961 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号