#define LED_GLOBAL 1
#include "led.h"
/*******************************************************************************************
*函數(shù)名稱(chēng):delay_us(uint us)
*函數(shù)功能:實(shí)現(xiàn)微秒級(jí)的延時(shí)
*函數(shù)入口:us,延時(shí)函數(shù)循環(huán)后期數(shù)
*函數(shù)出口:無(wú)
*******************************************************************************************/
void delay_us(uint us)
{
uint i;
while(us--)
{
for(i=0;i<100;i++);
}
}
/*******************************************************************************************
*函數(shù)名稱(chēng):led_init(void)
*函數(shù)功能:四位七段數(shù)碼管顯示初始化
*函數(shù)入口:無(wú)
*函數(shù)出口:無(wú)
*******************************************************************************************/
void init_led(void)
{
LED=segLedCode[0];
LED_CS1=0;
LED_CS2=0;
LED_CS3=0;
LED_CS4=0;
}
/*******************************************************************************************
*函數(shù)名稱(chēng):ledWrite(uchar c,uchar n,uchar mod)
*函數(shù)功能:對(duì)一組數(shù)碼管的某一位進(jìn)行短暫顯示
*函數(shù)入口:c,要顯示的數(shù)據(jù);n,顯示一組數(shù)碼管中的第n位;mod,c的數(shù)據(jù)形式
*函數(shù)出口:無(wú)
*說(shuō)明:當(dāng)mod==DIGITAL時(shí),c為數(shù)字0~9的ANCII碼形式,此時(shí)在n位數(shù)碼管上顯示想用數(shù)字
當(dāng)mod==CHARACTER,直接將c輸出數(shù)據(jù)口
*******************************************************************************************/
void ledWrite(uchar c,uchar n,uchar mod)
{
if(CHARACTER==mod)
{
LED=c;
}
else if(DIGITAL==mod)
{
if((c-'0')<0x0a)
{
LED=segLedCode[c-'0'];
}
else
{
LED=segLedCode[0];
}
}
switch(n)
{
case 0x01:
{
LED_CS1=0;
delay_us(10);
LED_CS1=1;
break;
}
case 0x02:
{
LED_CS2=0;
delay_us(10);
LED_CS2=1;
break;
}
case 0x03:
{
LED_CS3=0;
delay_us(10);
LED_CS3=1;
break;
}
case 0x04:
{
LED_CS4=0;
delay_us(10);
LED_CS4=1;
break;
}
default:
break;
}
}
/*******************************************************************************************
*函數(shù)名稱(chēng):ledSweepDisplay(uchar *segCode,uchar segCodeMod,uchar segNumber)
*函數(shù)功能:循環(huán)在數(shù)碼管上顯示緩沖區(qū)中的數(shù)據(jù)
*函數(shù)入口:segCode,指向顯示緩沖區(qū)中的指針;segCodeMod,0~7位為1或0標(biāo)示1~8位數(shù)碼管顯示的數(shù)據(jù)的類(lèi)型(DIGITAL或者CHARACTER);segNumber,代表要顯示數(shù)碼管的位數(shù)
*函數(shù)出口:無(wú)
*說(shuō)明:本函數(shù)主要實(shí)現(xiàn)將顯示緩沖區(qū)中的數(shù)據(jù)在數(shù)碼管上顯示出來(lái)
*******************************************************************************************/
void ledSweepDisplay(uchar *segCode,uchar segCodeMod,uchar segNumber)
{
uchar segCount;
for(segCount=0;segCount<segNumber;segCount++)
{
if(segCodeMod&0x01) /*1代表此處顯示任意字符 */
{
ledWrite(segCode[segCount],segCount+1,CHARACTER);
}
else
{
ledWrite(segCode[segCount],segCount+1,DIGITAL);
}
segCodeMod=segCodeMod>>1;
}
}