?? led.c
字號:
#include "..\inc\led.h"
#include "..\inc\console.h"
#define ESC_KEY 0x1b
//聲明總線地址
volatile U16 * LedDBuffer = (volatile U16 *)(0x2000000);
volatile U16 * LedSBuffer = (volatile U16 *)(0x2000000);
static U8 SHOWDATA[21]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x76,0x01,0x40,0x08,0x73}; //共陰
void Clr_led(void);
/* W(0) W(1) W(2) .(3) T(4) X(5) M(6)
C(7) U(8) .(9) C(10) O(11) M(12)*/
U8 ZI_MO[]=
{
0xF8,0x07,0x3C,0xF0,0x3C,0x07,0xF8,0x00,/*"W",0*/
0xF8,0x07,0x3C,0xF0,0x3C,0x07,0xF8,0x00,/*"W",1*/
0xF8,0x07,0x3C,0xF0,0x3C,0x07,0xF8,0x00,/*"W",2*/
0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,/*".",3*/
0x80,0x80,0x80,0xFF,0x80,0x80,0x80,0x00,/*"T",4*/
0x81,0xC3,0x24,0x18,0x24,0xC3,0x81,0x00,/*"X",5*/
0xFF,0x70,0x0E,0x03,0x1E,0x60,0xFF,0x00,/*"M",6*/
0x3C,0x42,0x81,0x81,0x81,0xC3,0x66,0x00,/*"C",7*/
0xFE,0x01,0x01,0x01,0x01,0x01,0xFE,0x00,/*"U",8*/
0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,/*".",9*/
0x3C,0x42,0x81,0x81,0x81,0xC3,0x66,0x00,/*"C",10*/
0x00,0x7E,0xC3,0x81,0x81,0xC3,0x7E,0x00,/*"O",11*/
0xFF,0x70,0x0E,0x03,0x1E,0x60,0xFF,0x00,/*"M",12*/
};
/***************************************************
函數名:void Test_led(void)
****************************************************/
void Test_Pled(void)
{
U8 i;
for(i=1;i<9;i++)
{
sysUtilsLightLed(i,TRUE);
sysUtilsUSecDelay(500000);
}
for(i=1;i<9;i++)
{
sysUtilsLightLed(i,FALSE);
sysUtilsUSecDelay(500000);
}
/*
sysUtilsLightLed(LED1,TRUE);
sysUtilsLightLed(LED2,TRUE);
sysUtilsLightLed(LED3,TRUE);
sysUtilsLightLed(LED4,TRUE);
sysUtilsLightLed(LED5,TRUE);
sysUtilsLightLed(LED6,TRUE);
sysUtilsLightLed(LED7,TRUE);
sysUtilsLightLed(LED8,TRUE);
sysUtilsLightLed(LED1,FALSE);
sysUtilsLightLed(LED2,FALSE);
sysUtilsLightLed(LED3,FALSE);
sysUtilsLightLed(LED4,FALSE);
sysUtilsLightLed(LED5,FALSE);
sysUtilsLightLed(LED6,FALSE);
sysUtilsLightLed(LED7,FALSE);
sysUtilsLightLed(LED8,FALSE);*/
}
//測試數碼管
void Test_led(void)
{
U8 j;
while(!( kbhit() && (getkey()==ESC_KEY)))
{
//點陣屏測試
for(j=0;j<6;j++)
{
//*LedSBuffer=~(1<<j); //打開第j個數碼管顯示
*LedDBuffer=((~(1<<j))<<8)+SHOWDATA[j]; //點亮第j段
sysUtilsUSecDelay(2000); //延時1ms
}
}
Clr_led(); //關閉數碼管顯示
}
//x 第幾個數碼管
//data 要顯示的數據
//P 是否加小數點
void Show_Led(U8 x,U8 data,U8 P)
{
*LedDBuffer=((~(1<<x))<<8)+SHOWDATA[data]+P*0x80; //點亮第j段
}
//關閉跑馬燈顯示
void Clr_Pled(void)
{
sysUtilsLightLed(LED_ALL,FALSE);
}
//數碼管關閉
void Clr_led(void)
{
*LedSBuffer=0xffff; //關閉數碼管顯示
}
//點陣清屏
void Clr_DZ(void)
{
Send_595(0xffff); //點陣清屏
}
/******************************************
函數:void Test_DZ(void)
功能:點陣屏測試
*******************************************/
void Test_DZ(void)
{
U8 i,j;
for(j=0;j<8;j++)
{
*LedDBuffer=((1<<j)|0xff00); //點亮第j段
for(i=0;i<8;i++)
{
Send_595(~(1<<i)); //
sysUtilsUSecDelay(100000);//延時100ms
}
Clr_DZ(); //清屏
}
}
//循環顯示"WWW.TXMCU.COM"
void Show_WWW(void)
{
U8 i=0,j=0,t;
for(i=0;i<104;i++)
{
for(t=0;t<10;t++)
{
for(j=0;j<8;j++)
{
*LedDBuffer=(ZI_MO[j+i]|0xff00);
//Send_595(~(1<<i));//低電平點亮
//取字模時取反碼
Send_595(~(1<<(7-j)));
sysUtilsUSecDelay(500); //延時10ms
Clr_DZ(); //清屏
}
}
}
}
//繼電器測試
void Test_Relay(void)
{
U8 i;
for (i=0;i<5;i++)
{
rPDATC |=MASK_BIT(12);
sysUtilsUSecDelay(500000);
rPDATC &=~MASK_BIT(12);
sysUtilsUSecDelay(500000);
}
}
/***************************************************
參數:dwLedNo 指定對哪個LED操作
:bLight 指定點亮或者熄滅.TRUE 點亮,FALSE熄滅
****************************************************/
void sysUtilsLightLed (U32 dwLedNo, BOOL bLight)
{
if(dwLedNo==LED_ALL)
{
if(bLight==TRUE)
rPDATD&=~(0xff);
else
rPDATD|=0xff;
}
else
{
if(bLight==TRUE)
rPDATD&=~(1<<(dwLedNo-1));
else
rPDATD|=(1<<(dwLedNo-1));
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -