/******************************************************************************/ /* 项目名称 : TX-1C扩展板 8x8点阵滚动显示"www.txmcu.com 天祥电子" */ /* 主控芯片 : STC89C52 */ /* 文件名称 : 8x8Led_Move */ /* 文件功能 : 8x8点阵显示 */ /* 文件版权 : 天祥电子 */ /* 文件版本 : */ /******************************************************************************/ /**********************************包含头文件**********************************/ #include #include "74hc595.h" /********************************定义变量和数组********************************/ unsigned char i; unsigned int m,n; #define num sizeof(Digit_Tab) //代码长度 unsigned char code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code Digit_Tab[]= {//取模方式 阴码 列扫描 逆向 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/ 0x06,0x18,0x60,0x1C,0x60,0x18,0x06,0x00,/*"w",1*/ 0x06,0x18,0x60,0x1C,0x60,0x18,0x06,0x00,/*"w",2*/ 0x06,0x18,0x60,0x1C,0x60,0x18,0x06,0x00,/*"w",3*/ 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,/*".",4*/ 0x00,0x04,0x04,0x7E,0x44,0x24,0x00,0x00,/*"t",5*/ 0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x00,/*"x",6*/ 0x7C,0x02,0x02,0x7C,0x02,0x02,0x7C,0x00,/*"m",7*/ 0x00,0x3C,0x42,0x42,0x42,0x24,0x00,0x00,/*"c",8*/ 0x00,0x3E,0x40,0x40,0x40,0x3E,0x00,0x00,/*"u",9*/ 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,/*".",10*/ 0x00,0x3C,0x42,0x42,0x42,0x24,0x00,0x00,/*"c",11*/ 0x00,0x3C,0x42,0x42,0x42,0x3C,0x00,0x00,/*"o",12*/ 0x7C,0x02,0x02,0x7C,0x02,0x02,0x7C,0x00,/*"m",13*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",14*/ 0x88,0x49,0x29,0x1F,0x29,0x49,0x88,0x00,/*"天"15,*/ 0x0A,0xFF,0x1A,0x22,0x2B,0xFE,0x2B,0x22,/*"祥",16*/ 0x00,0x3E,0x2A,0x2A,0x7F,0xAA,0xAA,0xBE,/*"电",17*/ 0x00,0x08,0x09,0x89,0x8D,0x7B,0x09,0x08,/*"子",18*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",19*/ }; /******************************************************************************/ /* 函数名称 : Display */ /* 函数描述 : 显示函数 */ /* 输入参数 : 无 */ /* 参数描述 : 无 */ /* 返回值 : 无 */ /******************************************************************************/ void Display(void) { Ser_IN((table[i])); //列扫描数据 Ser_IN(Digit_Tab[i + n]); //查表取出行扫描数据 Par_OUT(); //输出显示 i++; if(i == 8) { i = 0; } //循环扫描 m++; if(m == 300) { m = 0; n++; } //滚动速度控制 if(n == num - 7) { n = 0; //循环显示 } } /******************************************************************************/ /* 函数名称 : Timer0_init */ /* 函数描述 : 定时器0初始化函数 */ /* 输入参数 : 无 */ /* 参数描述 : 无 */ /* 返回值 : 无 */ /******************************************************************************/ void Timer0_init(void) { TMOD = 0xf8; TH0 = 0xcc; TL0 = 0x00; IE = 0x82; TR0 = 1; } /******************************************************************************/ /* 函数名称 : Timer0_intservice */ /* 函数描述 : T0中断函数 */ /* 输入参数 : 无 */ /* 参数描述 : 无 */ /* 返回值 : 无 */ /******************************************************************************/ void Timer0_intservice(void) interrupt 1 using 0 { TH0 = 0xf8; TL0 = 0xcc; Display(); } /******************************************************************************/ /* 函数名称 : main */ /* 函数描述 : 主函数 */ /* 输入参数 : 无 */ /* 参数描述 : 无 */ /* 返回值 : 无 */ /******************************************************************************/ void main (void) { Timer0_init(); while(1); } /******************************************************************************/