0FEH,0BFH,0FFH,0BEH,0EFH,0BFH,0EFH,0EBH,0E0H,001H,0EFH,0FFH, 0EFH 0FFH, 0EFH,0FFH, 0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0EFH},//--字:片-- {
0EFH,0EFH,0FFH,007H,001H,077H,001H,077H,00EFH,077H,0EFH,077H,0C7H,077H,0CBH,077H, 0ABH,077H,0AFH,077H,06FH,0F7H,0EEH,0F5H,0EDH,0F5H,0FDH,0F5H,0EBH,0F9H,0EFH,0FFH},//--字:机--
文文
//下面的DB表略去 };
//*******字模表2******************// unsigned char code Bmp1[][32]={ {
0F7H,0DFH,0F9H,0CEH,0FBH,0BFH,0C0H,007H,0DEH,0E7H,0C0H,007H,0DEH,0F7H,0DEH,0F7H, 0C0H,007H,0DEH,0F7H,0FEH,0FFH,000H,001H,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH},//--文字:单-- {
0FEH,0BFH,0FFH,0BEH,0EFH,0BFH,0EFH,0EBH,0E0H,001H,0EFH,0FFH, 0EFH 0FFH, 0EFH,0FFH, 0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0EFH},//--字:片-- {
0EFH,0EFH,0FFH,007H,001H,077H,001H,077H,00EFH,077H,0EFH,077H,0C7H,077H,0CBH,077H, 0ABH,077H,0AFH,077H,06FH,0F7H,0EEH,0F5H,0EDH,0F5H,0FDH,0F5H,0EBH,0F9H,0EFH,0FFH},//--字:机--
文文
//下面的DB表略去 };
/**********延时函数(约1 ms)************/ void delay(unsigned int dt) {
register unsigned char bt; for (; dt; dt--)
for (bt=0; bt <255; bt++):
/*******主函数 ********************/ void main(void) {
register unsigned char i,j,k, l,q,w; //初始化
SCON=0x00; //串口丁作模式0:移位寄存器方式 TMOD= 0x01; //定时器T0工作方式1: 16位方式 TR0= l; //启动定时器T0
CONIO =0x3F; //CONIO端口初值 IE =0x82; //允许定时器T0中断 while(1) {
delay(2000); //2 s
//第1种显示效果:卷帘出显示笑脸图案 for (i= 0; i<32; i++) {
for(q= 0; q< BLKN/2; q++) {dispram[i+q*32]= Bmpl[5][i];} if (i%2)delay(120);
}
delay(1000);
//卷帘出显示文字,每次字数为BLKN/2,共显示TOTAL* 2/BLKN次 for(w=0; w for (i= 0;i<32;i++) { for(q= 0;q< BLKN/2;q++){dispram[i+q*32]= Bmp[q+w*BLKN/2][i];} if (i%2)delay(120); } delay(3000); } //第1种显示效果:卷帘出显示笑脸图案 for (i= 0;i<32;i++) { for(q=0;q delay(1000); //第2种显示效果:向上滚屏,每次BLKN/2个字 for(i=0; i for(j=0;j<16; j++) { for(k=0;k<15; k++) { for(q=0;q { dispram[k*2+q* 32]= dispram[(k+1)*2+q*32]: dispram[k*2+l+q* 32]= dispram[(k+1)*2+1+q*32];} } for(q=0;q delay(100); } delay(3000); //滚动暂停 } // 第1种显示效果:卷帘出黑屏 for(1=0:i<32;i++) { for(q=0:q } delay(1000); //第3种显示效果:左移出显示 for (i=0;i { for(j=0;j<2;j++) for(k=0;k<8;k++) { for(1=0;1<16; 1++) { for(q= 0;q dispram[l*2+q”32]= dispram[l*2+q* 32]<<1 | dispram[l*2+1+q*32]>>7; if (q==BLKN/2 -1)dispram[l*2+l+q*32]= dispram[l*2+l+q* 32]<<1 Bmp[i][1*2+j]>>(7- k); else dispram[l*2+l+q*32]= dispram[l*2+l+q* 32]<<1 dispram[l*2+(q+1)*32]>>7; } } delay(100); } } delay(3000); //第1种显示效果:卷帘出黑屏 for (i= 0;i<32;i++) { for(q=0;q delay(1000); //第3种显示效果:右移出显示 for (i=0;i for(j=2;j>0; j--) for(k=0;k<8;k++) { for(1=0;1<16; 1++) { for(q= 0;q | | Dispram[l*2+1+q* 32]= dispram[l*2+1+q*32]>>1 | dispram[l*2+q*32]<<7; if(q==0) dispram[l*2+q*32]= dispram[l*2+q*32]>>1 | Brnp[i][1*2+j-1]<<(7-k); else dispram[l*2+q* 32]= dispram[l*2+q*32] >>1 | dispram[l*2+l+(q -1)*32]<<7; } } delay(100); } } delay(3000); //第4种显示效果:卷帘人 for(i=0;i<32;i++) { for(q=0;q //主函数结束 /***显示屏扫描(定时器T0中断)函数********/ void leddisplay(void) interrupt l using 1 { register unsigned char m,n=BLKN; TH0= 0xFC: //设定显示屏刷新率每秒62.5帧(16 ms/帧) TL0= 0x18: m= CONIO: //读取当前显示的行号 m= ++m&0x0F; //行号加1,屏蔽高4位 do{ n--; SBUF= dispram[m*2+(n/2)* 30+n]; //送显示数据 while(!TI);TI=0; } while(n); //完成一行数据的发送 G=1; //消隐(关闭显示) CONIO&=0xF0; //行号端口清0 CLK=1; //显示数据输入/输出锁存器 CONIO |=m; //写入行号 CLK=0; //锁存显示数据 G=0; //打开显示 }