|
发表于 2020-4-8 15:38:56
|
显示全部楼层
来点代码:
#include "use.h"
#include "AscLed.h"
#include "Ver.H"
#define LedK 2 //¶¨Ê±¼ä¸ô2500us/8
#define Led_Data (-LedK*Pclk/1000) //¶¨Ê±³£Êý ÓÉÓÚF¸ßʵ¼ÊSECK=1/2=0¡£5s
//extern void Delay(unsigned int i);
/*************************
¶¨ÒåCLK£¬DAT£¬RCK
*************************/
sbit Clk595=P2^5;
sbit Dat595=P2^2; //LED1-LED8
sbit Rck595=P2^4;
//*******************************************
static unsigned char L_Buf[4];
//*******************************************
code unsigned char LedAsc[]={
a_0,a_1,a_2,a_3,a_4,
a_5,a_6,a_7,a_8,a_9,
a_A,a_B,a_C,a_D,a_E,
a_F,a_H,a_L,a_N,a_n,
a_O,a_o,a_P,a_q,a_r,
a_S,a_U,a_u,a_Black,
a_88,a_Pol,a_t,b_0,
b_1,b_2,b_3,b_4,b_5,
b_6,b_7,b_8,b_9,b_A,
b_B,b_C,b_D,b_E,b_F,
b_H,b_h,b_L,b_N,b_n,
b_o,b_P,b_q,b_r,b_t,
b_U,b_u,b_y,b_Pol,a_y,
a_h
};
//****************************************
/*
void Init_SPI(){ //³õʼ»¯SPI ×ÜÏß
SPCTL =0xdc; //³õʼ»¯SPI ʱÖÓ
SPSTAT =0xc0; //ÉèÖÃÉÏÉýÑØÓÐЧ
}
*/
//***********************************************************************
/*
void SendDat (unsigned char Dat){
unsigned char i;
for (i=0;i<8;i++){
Clk595=0;
Dat595=(bit)(Dat&0x80);
Clk595=1;
Dat<<=1;
}
}
*/
//***********************************************************************
void SendDatTo595(void) { //SPI
unsigned char i,j;
Rck595=0; //Ñ¡ÖÐ74HC595
i=4;
while(i--){
for (j=0;j<8;j++){
Clk595=0;
Dat595=(bit)(L_Buf[i] & 0x80);
Clk595=1;
L_Buf[i]<<=1;
}
// SendDat(p[i]);
/*
SPSTAT=0xc0; //Çå³ý״̬±êÖ¾
SPDAT=p[i]; //½«Êý¾ÝдÈë·¢ËͼĴæÆ÷
while(!(SPSTAT&0x80)); //µÈ´ý·¢ËÍÍê³É
*/
}
Rck595=1; //Ñ¡ÖÐ74HC595
}
//**************************
void GetLedBufData (void){
TR1=0;
CopyData(LedBuf1,LedBuf,sizeof(LedBuf));
TR1=1;
}//*************************************
unsigned char code CodeBit[]={
// 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80
// 0x10,0x20,0x40,0x80,0x01,0x02,0x04,0x08
};
/**************************
LEDDoÏÔʾÖ÷³ÌÐò
***************************/
void LedOut(void){
static unsigned char Bit=0;
LedBuf1[17]=LedMenu.HMLFlag; //ָʾµÆÊä³ö
//-----------------------
L_Buf[0]=~CodeBit[Bit]; //·ÅÈëλѡÂð
L_Buf[1]=LedAsc[LedBuf1[Bit]];
L_Buf[2]=LedAsc[LedBuf1[Bit+8]];
//-------------------------------------------
if (LedOff ==1){
L_Buf[0]=0xff; //¹Ø±ÕLED
}
//--------------------------------------------
if (Bit==1){
L_Buf[3]=LedBuf1[17]; //ָʾµÆÔ´ÂðÂëÊä³ö
}else{
L_Buf[3]=LedAsc[LedBuf1[16+Bit]];
}
SendDatTo595();
if (++Bit ==8 ) Bit=0;
}
//********************************************************
//T1ÖжϿØÖÆÏÔʾ
//********************************************************
void LedCtrlTo() interrupt 3 /*using 1*/{
TL1 = Led_Data; //ÉèÖóõÖµ
TH1 = Led_Data>>8;
//****************************************
LedOut(); //ÏÔʾ´¦Àí
}
|
|