📄 led6show.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口. P2.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
0x88,0x83,0xC6,0xA1,0x86,0x84,0xFF,0x8C}; //A,B,C,D,E,F,空格,P
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[5] = ulNumber/100000;
uca_LedNum[4] = (ulNumber-100000*(long)uca_LedNum[5])/10000;
uca_LedNum[3] = (ulNumber-100000*(long)uca_LedNum[5]-10000*(long)uca_LedNum[4])/1000;
uca_LedNum[2] = (ulNumber-100000*(long)uca_LedNum[5]-10000*(long)uca_LedNum[4]
-1000*(long)uca_LedNum[3])/100;
uca_LedNum[1] = (ulNumber-100000*(long)uca_LedNum[5]-10000*(long)uca_LedNum[4]
-1000*(long)uca_LedNum[3]-100*(long)uca_LedNum[2])/10;
uca_LedNum[0] = (ulNumber-100000*(long)uca_LedNum[5]-10000*(long)uca_LedNum[4]
-1000*(long)uca_LedNum[3]-100*(long)uca_LedNum[2]-10*(long)uca_LedNum[1]);
return uca_LedNum;
}
void vShowOneNum(unsigned char ucOneNum,unsigned char ucOrder)
{
LEDSELECT=0;
LEDCHAR=uca_LEDCode[ucOneNum];
LEDSELECT=uca_LEDSelect[ucOrder-1];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -