1、通过下图软件,先分别取出L O V E的字模存放数组里面。这里的结果是:uchar code TAB[]={0xFF,0xFF,0xF僻棍募暖F,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏 0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xC1,0xFF, //L 0xE3,0xDD,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF, //O 0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF, //V 0xC1,0xFD,0xFD,0xC1,0xFD,0xFD,0xC1,0xFF, //E 0xff,0xc9,0xb6,0xbe,0xdd,0xeb,0xf7,0xff, //心号0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏};
2、字码取模方式为逐行 第一次从字码数组中取出第1~8个数据置于列上,行扫描顺序为1~8行,显示一帧,第二次取第9~16个数据,行扫描顺序仍为1~8行,显示第二帧,第三次取第17~24个数据,…… 具体代码下面步骤:由于编辑器显示的不够规整,格式见图片:
3、#include<at89x52.h> #include &孥恶膈茯quot;51hei.H" #define uch锾攒揉敫ar unsigned char #define uint unsigned int uchar code TAB[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏 0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xC1,0xFF, //L 0xE3,0xDD,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF, //O 0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF, //V 0xC1,0xFD,0xFD,0xC1,0xFD,0xFD,0xC1,0xFF, //E 0xff,0xc9,0xb6,0xbe,0xdd,0xeb,0xf7,0xff, //心号0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏}; uchar i,t; delay(uchar t) { while (t--) {;} } void main(void) { uchar N,T,d; P2_7=0;//关数码管while(1) { for(N=0;N<7;N++) //循环扫描一遍6帧 for(T=0;T<90;T++) //速度 { d=0x01; out164(d); for(i=0;i<8;i++) { P0=TAB[i+8*N]; delay(100); d=d<<1|d>>7; P0=0xff; // 消隐,很重要,不加要红一片out164(d);} } } }效果如下图: