单片机按键控制数码管显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机按键控制数码管显示相关的知识,希望对你有一定的参考价值。

实现方法有挺多种的,下面介绍一种:
1、按键子程序:
实现按第一个键使键值keyvalue=1,第二个键使键值keyvalue=2,第三个键使键值keyvalue=3
2、显示子程序
定义3个字节的显示缓存,如dispbuf1,dispbuf2,dispbuf3
使dispbuf1的数字显示在第一个数码管上,dispbuf2的数字显示在第2个数码管上,dispbuf3的数字显示在第3个数码管上
3、主程序:
初始化按键次数keycount为0
检测按键,任意一个键(比如说是第2个键)被按后,keycount
加1,并将keyvalue值(2)送给dispbuf1(则第一个数码管将会显示2),再有任意一个按键按下后,keycount
加1,并将keyvalue值送给dispbuf2,再有任意一个按键按下后,keycount
加1,并将keyvalue值送给dispbuf3
参考技术A 你有原理图没?
设置三个标志位,全局变量,需要在倒计时中断里改变状态的。
程序流程是:
主程序流程:
上电初始化(设置LED状态,设置定时器相关寄存器参数,设置三个标志位状态)--->
死循环(判断标志位是否容许按键有效,然后判断是否有按键按下,转入响应的子程序处理段)
定时器中断任务:
判断是否到15秒,到了就置位标志位。
参考技术B SBUF=dispcode[num0];//第1位
while(!TI);
TI=0;
led0=0;
delay(2);
led0=1;
SBUF=dispcode[num1];//第2位
while(!TI);
TI=0;
led1=0;
delay(2);
led1=1;
SBUF=dispcode[num2];//第3位
while(!TI);
TI=0;
led2=0;
delay(2);
led2=1;
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。

51单片机 按键控制数码管加减+Proteus仿真

51单片机 按键控制数码管加减+Proteus仿真


  • Proteus仿真

实例代码

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned 

以上是关于单片机按键控制数码管显示的主要内容,如果未能解决你的问题,请参考以下文章

单片机直流电机转速控制(数码管显示独立按键控制正反转停止开始PID算法)

51单片机控制8个数码管并显示1-8

基于51单片机的按键计数设计,4位,0到9999

51单片机:独立按键与矩阵按键控制数码管

51单片机 按键控制数码管加减+Proteus仿真

基于51单片机+74HC595移位寄存器+8位共阴数码管时钟设计—按键修改时间