51单片机实现数码管显示

51单片机实现数码管显示

本次的实现效果方式采用模拟进行,芯片为AT89C51,开发软件为keil5,proteus

上代码

代码如下:

#include <REGX51.H>//引用库文件

#define key P3_0//按键引脚
#define key2 P3_1

unsigned int c=0,q=0,a=0;
unsigned char shu[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//数码管0-9

void delay(unsigned int t)//延时函数
{
	for(c=0;c<t;c++);
}

void keydown()//当按键按下
{
	if(key2==0)
	{
		delay(100);
		if(key2==0)
		{
			while(key2==0);
			if(q==0){q=9;P2=shu[q];}else{q--;P2=shu[q];}//如果减到0则变成九,否则每次按下数码管数字减一
		}
	}
}

void main()
{
	while(1)
	{
		keydown();
		if(key==0)//如果有按键二按下
		{
			delay(100);
			if(key==0)
			{
				while(key==0);
				for(a=0;a<10;a++){q=a;P2=shu[a];delay(30000);}//for循环显示0-9数码管显示
			}
		}
	}
}

效果展示

keil5开发界面
在这里插入图片描述

在这里插入图片描述
proteus界面:
在这里插入图片描述

介绍

本次采用数码管端口为P2,按键为P3_0,P3_1,通过for循环和减法实现预期效果。

posted @ 2024-10-12 14:30  少年执笔  阅读(572)  评论(0)    收藏  举报