数码管可以显示0-999三位数字,按一下加按键,数字加1;按一下减按键,数字减1。初始化显示为学号后三位。提交C文件、,带注释
时间: 2024-06-03 08:07:10 浏览: 47
51单片机仿真,三位数码管显示功能。具体功能描述如下:数码管可以显示0-999三位数字,按一下加按键,数字加1;按一下减按键,数
#include <reg52.h> //头文件,此处使用STC89C52RC单片机
sbit add = P3^0; //加按键引脚定义
sbit sub = P3^1; //减按键引脚定义
sbit dula = P2^6; //数码管位选1引脚定义
sbit wela = P2^7; //数码管位选2引脚定义
unsigned int num; //定义计数器
//延时函数
void delay(unsigned int i)
{
while(i--);
}
//数码管显示函数
void display(unsigned int n)
{
unsigned int shi, ge; //定义十位和个位
shi = n / 10; //计算十位
ge = n % 10; //计算个位
P0 = 0; //清零P0口
dula = 1; //关闭位选1
P0 = 0xc0 | ge; //显示个位
dula = 0; //打开位选1
delay(1000); //延时
P0 = 0; //清零P0口
dula = 1; //关闭位选1
P0 = 0xf9 | shi << 4; //显示十位
dula = 0; //打开位选1
delay(1000); //延时
}
//按键检测函数
void keyscan()
{
if(add == 0) //加按键被按下
{
delay(100); //延时消抖
if(add == 0) //检测加按键是否仍被按下
{
num++; //计数器加1
if(num > 999) //若计数器超过999,则回到0重新计数
{
num = 0;
}
display(num); //显示计数器的值
}
}
if(sub == 0) //减按键被按下
{
delay(100); //延时消抖
if(sub == 0) //检测减按键是否仍被按下
{
num--; //计数器减1
if(num < 0) //若计数器小于0,则回到999重新计数
{
num = 999;
}
display(num); //显示计数器的值
}
}
}
void main()
{
num = 185; //初始化计数器为学号后三位
while(1)
{
keyscan(); //按键检测
}
}
阅读全文