附录2硬件原理图
13
附录3程序清单
#include
#define uchar unsigned char #define uint unsigned int uchar i,j,k,scan,num,count; sbit key=P2^0;
uchar code table1[]=
{0xdf,0xc1,0xdf,0xdf,0xdf,0xc1,0xbf,0x7f}; uchar code table2[]=
{0xff,0xbf,0xb7,0xb7,0x81,0xb7,0xb7,0xbf}; uchar code table[][8]=
{{0xff,0xe3,0xeb,0x00,0xeb,0xe3,0xff,0xff}, {0xff,0xbf,0xbd,0xbd,0x81,0xbd,0xbd,0xff}, {0xff,0xf3,0xed,0xdd,0xbb,0xdd,0xed,0xf3}, {0xff,0xff,0x81,0x7f,0x7f,0x7f,0x81,0xff}, {0xbf,0xaf,0xab,0xab,0x80,0xab,0xa8,0xa7}, {0xff,0xff,0x00,0x76,0x76,0x76,0x00,0xff}, {0xbf,0xa3,0xc0,0xab,0xbf,0xcf,0x00,0xf3}, {0xb7,0xd6,0xa5,0x05,0xe5,0xd1,0xbf,0xff}, {0xff,0xff,0xc9,0xb6,0xb6,0xc9,0xff,0xff}, {0xff,0xff,0xc1,0xb6,0xb6,0xd9,0xff,0xff}}; //9 void delay(uint z) {
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--); }
void main() {
key=1; num=0; while(1) {
if(num==0) {
for(j=0;j<10;j++) {
14
μ 土 中 ? 生日快乐 // // // //I
// //U // // // // //8 if(key==0) {
delay(10); if(key==0) {
num=1;
while(!key); } }
if(num!=0) break;
for(k=0;k<30;k++) {
scan=0x01;
for(i=0;i<8;i++) {
P0=table[j][i]; P1=scan; delay(10);
scan<<=1; } } } }
if(num==1) {
for(j=0;j<8;j++) {
if(key==0) {
delay(10); if(key==0) {
num=2;
while(!key); } }
if(num!=1)
15
组数据 //8 break;
for(k=0;k<10;k++) {
scan=0x01; //初始扫描信号 for(i=8;i>0;i--) //扫描周期 {
if(i>j)P0=table1[8+(j-i)]; else P0=table1[j-i]; P1=scan; delay(5); scan<<=1; } } } }
if(num==2) {
if(key==0) {
delay(10); if(key==0) {
num=0;
while(!key); } }
scan=0x01;
for(i=0;i<8;i++) {
P0=table2[count++]; if(count==8)count=0; P1=scan; delay(5); scan<<=1; }
}
}
}
16