实验题目:使用51单片机设计两个按键控制数码管显示0-9,当K1按下减1,当K2按下加1.
理解程序可参考我的另外两个文章;
51单片机数码管显示0-9_学习笔记吧的博客-CSDN博客
51单片机独立按键控制合集_学习笔记吧的博客-CSDN博客
两个文章一结合就是一个新的产物,所以51单片机玩来玩去就是各种简单程序的相加。他套他,再套他,加个数码管加按键,加各种东西,重点是要理解,怎么让他们结合起来不会报错。
实验程序:
#include<REGX52.H>
unsigned char code Tab[]= //共阴数码管段码表0-9
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void Delay1ms(unsigned int xms) //延时1ms函数
{
unsigned char i,j;
while(xms)
{
i = 2 ;
j = 239 ;
do
{
while (--j);
}
while (--i);
xms--;
}
}
void main () //主函数
{
unsigned char rge = 0 ; //局部变量计位数rge是段码表的位置
P0= 0x3f; //定义初始值显示0
while(1)
{
if(P3_1 ==0) //判断按键是否按下
{
Delay1ms(20); //消抖
while(P3_1 ==0); //再次判断
Delay1ms(20); //消抖
rge++; //数字加1
if(rge>=10) //控制加的位数别超出段码表了
{
rge = 0 ; //如果超出就让他回0去
}
P0=Tab[rge]; //把第rge的段码赋值给P0口
Delay1ms(500); //延时500ms
}
if(P3_0 ==0) //判断按键是否按下
{
Delay1ms(20); //消抖
while(P3_0 ==0); //再次判断
Delay1ms(20); //消抖
if(rge==0) //因为我们定义的变量led是无符号型,如果直接减减不可能减为负数
rge = 9 ; //所以判断如果减到0就重新给他赋值
else
rge--; //如果没减到0就继续减减
P0=Tab[rge]; //把第reg的段码赋值给P0口
Delay1ms(500); //延时500ms
}
}
}
实验原理图:
文章来源:https://www.toymoban.com/news/detail-509209.html
文章来源地址https://www.toymoban.com/news/detail-509209.html
到了这里,关于51单片机按键控制数码管显示0-9的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!