/*--------------------------------------------------------------*/
//LED8*8滾動顯示
//列掃描,低電平有效
/*--------------------------------------------------------------*/
//包含頭文件
#include <reg52.h>
#include "74HC595.H"
/*--------------------------------------------------------------*/
//全局變量定義
unsigned char m, i;
unsigned int n;
/*--------------------------------------------------------------*/
//代碼庫
#define num sizeof(table) //代碼長度
unsigned char code aa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char code bb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned char code table[]=
{
//取模方式 陽碼 逐行式 逆向
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/
0xE1,0xC9,0xC9,0xE1,0xF1,0xE1,0xC9,0xFF,/*"R",1*/
0xE1,0xF3,0xF3,0xF3,0xF3,0xF3,0xE1,0xFF,/*"I",2*/
0xE3,0xC9,0xF9,0xF9,0xF9,0xC9,0xE3,0xFF,/*"C",3*/
0xC9,0xC9,0xC9,0xC1,0xC9,0xC9,0xC9,0xFF,/*"H",4*/
0xC9,0xC1,0xC1,0xC9,0xC9,0xC9,0xC9,0xFF,/*"M",5*/
0xE3,0xC9,0xF9,0xF9,0xF9,0xC9,0xE3,0xFF,/*"C",6*/
0xC9,0xC9,0xC9,0xC9,0xC9,0xC9,0xE3,0xFF,/*"U",7*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",8*/
0xE3,0xC9,0xC9,0xE3,0xC9,0xC9,0xE3,0xFF,/*"8",9*/
0xC9,0xC9,0xE3,0xE3,0xE3,0xC9,0xC9,0xFF,/*"X",10*/
0xE3,0xC9,0xC9,0xE3,0xC9,0xC9,0xE3,0xFF,/*"8",11*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",12*/
0xC1,0xF3,0xF3,0xF3,0xF3,0xF3,0xF3,0xFF,/*"T",13*/
0xC1,0xF9,0xF9,0xE1,0xF9,0xF9,0xC1,0xFF,/*"E",14*/
0xE3,0xC9,0xF9,0xE3,0xCF,0xC9,0xE3,0xFF,/*"S",15*/
0xC1,0xF3,0xF3,0xF3,0xF3,0xF3,0xF3,0xFF,/*"T",16*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",17*/
0xE1,0xC9,0xC9,0xE1,0xF1,0xE1,0xC9,0xFF,/*"R",18*/
0xC1,0xCF,0xE7,0xE3,0xF3,0xF9,0xC1,0xFF,/*"Z",19*/
0xFF,0xFF,0xFF,0xC1,0xFF,0xFF,0xFF,0xFF,/*"-",20*/
0xE3,0xC9,0xCF,0xE7,0xF3,0xF9,0xC1,0xFF,/*"2",21*/
0xE3,0xC9,0xC9,0xC9,0xC9,0xC9,0xE3,0xFF,/*"0",22*/
0xE3,0xC9,0xC9,0xC9,0xC9,0xC9,0xE3,0xFF,/*"0",23*/
0xE3,0xC9,0xC9,0xC3,0xCF,0xC9,0xE3,0xFF,/*"9",24*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",25*/
0xE1,0xC9,0xC9,0xC9,0xC9,0xC9,0xE1,0xFF,/*"D",26*/
0xC1,0xF9,0xF9,0xE1,0xF9,0xF9,0xC1,0xFF,/*"E",27*/
0xC9,0xC1,0xC1,0xC9,0xC9,0xC9,0xC9,0xFF,/*"M",28*/
0xC1,0xC9,0xC9,0xC9,0xC9,0xC9,0xC1,0xFF,/*"O",29*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",30*/
0xE3,0xC9,0xF9,0xE3,0xCF,0xC9,0xE3,0xFF,/*"S",31*/
0xCC,0xCC,0xE1,0xF3,0xF3,0xF3,0xF3,0xFF,/*"Y",32*/
0xE3,0xC9,0xF9,0xE3,0xCF,0xC9,0xE3,0xFF,/*"S",33*/
0xC1,0xF3,0xF3,0xF3,0xF3,0xF3,0xF3,0xFF,/*"T",34*/
0xC1,0xF9,0xF9,0xE1,0xF9,0xF9,0xC1,0xFF,/*"E",35*/
0xC9,0xC1,0xC1,0xC9,0xC9,0xC9,0xC9,0xFF,/*"M",36*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",37*/};/*"4",3*/
/*--------------------------------------------------------------*/
//顯示函數
void Display(void)
{
Ser_IN(table[i + n]); //查表取出數據
Ser_IN(bb[i]); //開始行掃描
Par_OUT();//輸出顯示
i++; if(i == 8) i = 0; //循環掃描
m++; if(m == 200) {m = 0; n++;} //滾動速度控制
if(n == num-7) n = 0; //循環顯示
}
/*--------------------------------------------------------------*/
//定時器初始化
void T0_init(void)
{
TMOD = 0x01;
TH0 = 0xfc; //5000us
TL0 = 0x17;
IE = 0x82;
TR0 = 1;
}
/*--------------------------------------------------------------*/
//定時器中斷服務
void T0_intservice(void) interrupt 1 using 0
{
TH0 = 0xfc;
TL0 = 0x17;
Display();
}
/*--------------------------------------------------------------*/
//主函數
void main (void)
{
T0_init();
while(1);
}
|