按照之前的文章关于数码管说到的线与,在此之上我们将一个按键拓展为多个按键,对数码管进行控制,就需要按键扫描函数,数码管显示函数,再加上个主函数和延迟函数就可以搞定。
元器件为:7SEG-MPX6-CC、80C51、BUTTON
将原理图画好后,根据元件的连接和元件特性去写代码。
当我们按键按下时,需要判断按键是否按下,如果按下了,我们需要给一个键标志,判断它已经按下了。
按键扫描使用的方法为反转法,除此方法外,还有扫描法。
或者你也可以先固定列,再判断行是否按下,一行行去判断,如果不在此列,则继续下一列,同样判断每一行去确定按键是哪一个被按下了。【这个方法有空我会尝试写出来】
//********按键扫描函数voidKey_scan(){if(P1!=0xf0) { Delay(10);//延迟10msif(P1!=0xf0) { key_value = P1; P1 =0x0f; key_value += P1; key_flag =1; Display();//数码管显示函数P1 =0xf0; } }else{ key_flag =0; } }
因为key_value是一个全局变量,所以并不需要传参给Display函数,直接拿去判断就可以了。
//********数码管显示函数voidDisplay(){if(key_value==key_pad[0]) P2 = Table_cc[0];elseif(key_value==key_pad[1]) P2 = Table_cc[1];elseif(key_value==key_pad[2]) P2 = Table_cc[2];elseif(key_value==key_pad[3]) P2 = Table_cc[3];elseif(key_value==key_pad[4]) P2 = Table_cc[4];elseif(key_value==key_pad[5]) P2 = Table_cc[5];elseif(key_value==key_pad[6]) P2 = Table_cc[6];elseif(key_value==key_pad[7]) P2 = Table_cc[7];elseif(key_value==key_pad[8]) P2 = Table_cc[8];elseif(key_value==key_pad[9]) P2 = Table_cc[9];elseif(key_value==key_pad[10]) P2 = Table_cc[10];elseif(key_value==key_pad[11]) P2 = Table_cc[11];elseif(key_value==key_pad[12]) P2 = Table_cc[12];elseif(key_value==key_pad[13]) P2 = Table_cc[13];elseif(key_value==key_pad[14]) P2 = Table_cc[14];elseif(key_value==key_pad[15]) P2 = Table_cc[15]; }04.延迟函数
假设运行一行代码,是10us
那么循环100次就是1ms。
在延迟函数中,我加入了一个参数,为了就是能得到任何我想要延迟的时间。
例如:当k被赋为1时,我们for循环总共循环了100次,延时时间time = 100 * 10 =1000us = 1ms。
PS:如果需要实际的执行时间,还需要去debug一下,去算出一行代码执行时间是多少。
//********延迟函数voidDelay(u16 k){u16i,j;for(i =0; i < k ; i++)for(j =0; j<100;j++); }
05.主函数
因为我们将实现的功能分成了各个函数去写,所以我们的主函数很简单,初始化加上我们需要调用的函数,就可以实现我们想要的功能了。
voidmain(){//初始化引脚P1 =0xf0; P2 =0x00; P3 =0x00; Key_scan(); }
06.结果展示
未上电时
按下第一个键
按下第六个键
按下最后一个键
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
按键控制各位
数码管
显示不同
数字
2016-07-19
0
-
按键控制
数码管
显示
2018-06-25
0
-
请问CH579如何配置一个
按键,使用
按键控制
数码管的
显示
数字加减?
2022-08-11
0
-
单片机c语言
按键控制LED以及
数码管
2016-02-16
1204
-
按键控制单个数码管
显示
2016-06-16
835
-
独立
按键控制
数码管的加减资料下载
2017-05-26
1074
-
fpga
按键控制
数码管
显示
2018-01-16
17230
-
由FPGA DIY开发板实现消抖
按键控制
数码管
显示0—9
2018-06-22
4171
-
利用FPGA_DIY开发板实现
按键控制
数码管
2018-06-20
6001
-
FPGA DIY
按键控制
数码管
显示
2018-06-20
7773
-
通过
按键控制
数码管
显示当前数控增益的PCB源文件免费下载
2020-09-07
626
-
使用单片机实现
按键控制单个数码管
显示的C语言实例免费下载
2020-11-12
1059
-
使用单片机实现
按键控制
数码管闪烁增减
显示的C语言程序免费下载
2021-03-16
958
-
STM32F103的
按键控制
数码管加减仿真
2021-06-21
3368
-
基于89C51单片机的
按键控制单个数码管
显示
2023-05-12
331
×
20
完善资料,
赚取积分
全部0条评论
快来发表一下你的评论吧 !