龙空技术网

自学51单片机11:按键开关自增自减并在数码管上显示数字

电子秘探 173

前言:

今天各位老铁们对“动态数码管显示程序流程图”大概比较关注,我们都想要学习一些“动态数码管显示程序流程图”的相关内容。那么小编在网上汇集了一些对于“动态数码管显示程序流程图””的相关知识,希望咱们能喜欢,咱们一起来学习一下吧!

按键开关小练习,实现功能:

按下key1加一,按下key2减一,按下key3 置 0,按下key4在数码管上显示88

第一次尝试画流程图,瞎画

Key.c

#include "Key.h"u8 Key_Scan() //按键底层功能:按键扫描{	u8 KeyNum = 0;    key1 =1;key2=1;key3=1;key4=1;//默认高电平	if(!key1 || !key2 || !key3 ||!key4)//1.判断是否有按键按下	{		DelayXms(10);//2.延时消抖 10ms		if(!key1 || !key2 || !key3 ||!key4)//3.再次判断按键是否按下		{			if(!key1)				KeyNum = 1; //4.给按键开关赋一个键值			if(!key2)				KeyNum = 2;			if(!key3)				KeyNum = 3;			if(!key4)				KeyNum = 4;			while(!key1 || !key2 || !key3 ||!key4);//5.松手等待		}				}		return KeyNum;}

main.c

#include <reg51.h>#include "Key.h"#include "display.h"u16 CountNum;void Dis_Service();void Key_Service();void main(){	while(1)	{		Dis_Service();		Key_Service();		Display();		//底层数码管动态显示	}}void Dis_Service()  //赋值:数据缓冲区数据{	LEDBuf[0]=CountNum/1000; //千位--第一个数码管	LEDBuf[1]=CountNum/100%10;//百位--第二个数码管	LEDBuf[2]=CountNum/10%10;//十位--第三个数码管	LEDBuf[3]=CountNum%10;//个位--第四个数码管}void Key_Service() //按键功能{	switch(Key_Scan())	{		case 0: break;		case 1:			CountNum++;			if(CountNum>9999)				CountNum = 0;			break;		case 2:			CountNum--;			if(CountNum>9999)				CountNum = 9999;			break;			case 3: CountNum=0;break;			case 4: CountNum=88; break;		default: break;	}}

标签: #动态数码管显示程序流程图