51单片机学习之路 —— 1.7 独立键盘
扫描二维码
随时随地手机看文章
1 作业回顾
作业
2 独立键盘概念
s2 s3 s4 s5 为独立键盘与P3^0 P3^1 P3^2 P3^3 相连接
s2 = 0 就是s2被按下的意思
3 程序编写
1先写个简单的
要求 按下s2按键 led点亮,再次按下熄灭
代码
s2按键
分析:
1
sbit S2 =P3^4;
在板子的原理图中,S2 接的是P3.4口不要写错了
2
假如S2 被按下,如果10ms后还是按下的
其中的语句delay(10) 学名叫去抖延时
还有while(!S2)分析以下
假如S2被按下,则!S2 = 1 就一直执行空语句;假如S2松开则可以往下执行。
2 来个复杂点的
1 要求:用数码管的前两位显示一个十进制数,变化范围为00到59
按键功能: S2 按下数值加一
S3 按下数值减一
S4 按下数值清零
S5 按下后启动自加每秒加一,再次按下后暂停并显示数值
2 代码:
键盘2
3 分析下:
要完成自加,需要定时器,我们需要写一个中断程序;
我建议写代码时用notepad,可以写的很清晰明白
这里我将代码主要写了7大块;看上去就清晰明白了许多吧。下面我们主要看几块代码
1
初始化函数的作用是选定定时器0工作模式1 并打开开关总断和定时器0中断
2
显示函数
P0 = 0xfe; // 1111 1110 第一位数码管 对应十位
P0 = 0xfd // 1111 1101 第二位数码管 对应个位
3 键盘块代码
对S2 功能是加一 但假如加满到60时将其置零
S3 功能是减一 ,先判断是否位0;为零置60
S4 功能清零
S5 S5是按下一次开始,在按下一次暂停,所以先while(!S5)
先判断S5是否按完毕了,一但手从S5按键拿开,就开始自加或暂停。
4 主函数
套个大循环,让他一直扫描键盘并显示即可。
5 中断
每一次中断时,先填值,保证每次定时都是50ms
每20个50ms 即1s,将numt0置零,num+1;num会用于显示函数中
假如大于59 将其置0;