⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led6show.c

📁 Proteus实例集锦(包括电路图.仿真程序,各种各样的电路
💻 C
字号:
//*************************************************************************************************
//*************************************************************************************************
//**<程序名>:LED动态扫描子函数。																 **
//**<功能>:	unsigned char * pucLedNum(unsigned long ulNumber);  							 **
//**			计算一个在000000到999999之间的数的每位数字并存储在数组中.并返回数组的首地址		 **
//**			void vShowOneNum(unsigned char ucOneNum,unsigned char ucOrder);					 **
//**			输入一个数字以及所要显示的位置,在LED相应位置上显示相应数字.						 **	 
//*************************************************************************************************
//*************************************************************************************************


//*************************************************************************************************
//*																								  *
//*			 ******************************头文件及宏定义**************************				  *
//*																								  *
//*************************************************************************************************
#include <at89x51.h>
#define LEDCHAR P1			//LED 字符I/O 口,P1.0~7对应A~DP
#define LEDSELECT P0		//LED 选择I/O口.   P0.0~5对应LED的1~6


//*************************************************************************************************
//*																								  *
//*			  ********************************全局变量******************************			  *
//*																								  *
//*************************************************************************************************
unsigned  char code uca_LEDCode[]=
			{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
					//0,1,2,3,4,5,6,7,8,9


unsigned char code uca_LEDSelect[]={0x01,0x02,0x04,0x08,0x10,0x20};	
					//分别点亮第6,5,4,3,2,1号灯.

unsigned char uca_LedNum[6];			
					//存放数字的各个位


//*************************************************************************************************
//*																								  *
//*			  ********************************函数实现******************************			  *
//*																								  *
//*************************************************************************************************
unsigned char * pucLedNum(unsigned long ulNumber)
{
	if(ulNumber>999999)
		ulNumber=999999;
	if(ulNumber<0)
		ulNumber=0;
	uca_LedNum[0] = ulNumber/100000;								   //最高位

	uca_LedNum[1] = (ulNumber-100000*(long)uca_LedNum[0])/10000;

	uca_LedNum[2] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1])/1000;

	uca_LedNum[3] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1]
					-1000*(long)uca_LedNum[2])/100;

	uca_LedNum[4] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1]
					-1000*(long)uca_LedNum[2]-100*(long)uca_LedNum[3])/10;

	uca_LedNum[5] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1]
					-1000*(long)uca_LedNum[2]-100*(long)uca_LedNum[3]-10*(long)uca_LedNum[4]);

	return uca_LedNum;
}



void vShowOneNum(unsigned char ucOneNum,unsigned char ucOrder)
{
	LEDSELECT=0;
	LEDCHAR=uca_LEDCode[ucOneNum];
	LEDSELECT=uca_LEDSelect[ucOrder];		 //ucOrder:0~5(代表从左到右1~6)
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -