📄 最佳效果2.lst
字号:
C51 COMPILER V7.08 最佳效果2 04/21/2008 03:49:46 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE 最佳效果2
OBJECT MODULE PLACED IN 最佳效果2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 最佳效果2.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #define BLKN 2 //列锁存器
3 sbit G=P1^7; //P1.7为显示允许控制信号端口
4 sbit RRCLK=P1^6; //P1.6为输出锁存器时钟信号端
5 sbit SCLR=P1^5; //P1.5为移为寄存器清零端
6 void delay(unsigned int); //延时函数
7 unsigned char data dispram[32]; //显示缓存
8 unsigned char data huancun[32];
9
10 void main(void)
11 { unsigned char code Cmp[][32]={
12 1
13 1 {0xff,0x07,0xc0,0x6f,0xed,0xef,0xf6,0xdf,0xc0,
14 1 0x01,0xdd,0xfd,0xbd,0xff,0xc0,0x03,
15 1 0xfb,0xff,0xf8,0x0f,0xf3,0xdf,0xf4,0xbf,0xef,
16 1 0x3f,0x9c,0xcf,0x73,0xf1,0xcf,0xfb},//爱
17 1 {0xf7,0xdf,0xf9,0xcf,0xfb,0xbf,0xc0,0x07,0xde,
18 1 0xf7,0xc0,0x07,0xde,0xf7,0xde,0xf7,
19 1 0xc0,0x07,0xde,0xf7,0xfe,0xff,0x00,0x01,0xfe,
20 1 0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff},//单
21 1 {0xff,0xbf,0xef,0xbf,0xef,0xbf,0xef,0xbb,0xe0,
22 1 0x01,0xef,0xff,0xef,0xff,0xef,0xff,
23 1 0xe0,0x0f,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,
24 1 0xef,0xdf,0xef,0xbf,0xef,0x7f,0xef},//片
25 1 {0xef,0xff,0xef,0x07,0xef,0x77,0x01,0x77,0xef,
26 1 0x77,0xef,0x77,0xc7,0x77,0xcb,0x77,
27 1 0xab,0x77,0xaf,0x77,0x6e,0xf7,0xee,0xf5,0xed,
28 1 0xf5,0xed,0xf5,0xeb,0xf9,0xef,0xff},//机
29 1 {0xf8,0x3f,0xe7,0xcf,0xdf,0xf7,0xbf,0xfb,0xb3,
30 1 0x9b,0x73,0x9d,0x7f,0xfd,0x7f,0xfd,
31 1 0x6f,0xed,0x67,0xcd,0xb3,0x9b,0xb8,0x3b,0xdf,
32 1 0xf7,0xe7,0xcf,0xf8,0x3f,0xff,0xff},//笑脸
33 1 {0xf9,0xbf,0xc7,0xaf,0xf7,0xb7,0xf7,0xb7,0xf7,
34 1 0xbf,0x00,0x01,0xf7,0xbf,0xf7,0xb7,
35 1 0xf1,0xd7,0xc7,0xcf,0x37,0xdf,0xf7,0xaf,0xf6,
36 1 0x6d,0xf7,0xf5,0xd7,0xf9,0xef,0xfd}};//我
37 1
38 1
39 1 unsigned char code Bmp[][32]={
40 1 {0xf9,0xbf,0xc7,0xaf,0xf7,0xb7,0xf7,0xb7,0xf7,
41 1 0xbf,0x00,0x01,0xf7,0xbf,0xf7,0xb7,
42 1 0xf1,0xd7,0xc7,0xcf,0x37,0xdf,0xf7,0xaf,0xf6,
43 1 0x6d,0xf7,0xf5,0xd7,0xf9,0xef,0xfd},//我
44 1 {0xff,0x07,0xc0,0x6f,0xed,0xef,0xf6,0xdf,0xc0,
45 1 0x01,0xdd,0xfd,0xbd,0xff,0xc0,0x03,
46 1 0xfb,0xff,0xf8,0x0f,0xf3,0xdf,0xf4,0xbf,0xef,
47 1 0x3f,0x9c,0xcf,0x73,0xf1,0xcf,0xfb},//爱
48 1 {0xf7,0xdf,0xf9,0xcf,0xfb,0xbf,0xc0,0x07,0xde,
49 1 0xf7,0xc0,0x07,0xde,0xf7,0xde,0xf7,
50 1 0xc0,0x07,0xde,0xf7,0xfe,0xff,0x00,0x01,0xfe,
51 1 0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff},//单
52 1 {0xff,0xbf,0xef,0xbf,0xef,0xbf,0xef,0xbb,0xe0,
53 1 0x01,0xef,0xff,0xef,0xff,0xef,0xff,
54 1 0xe0,0x0f,0xef,0xef,0xef,0xef,0xef,0xef,0xdf,
55 1 0xef,0xdf,0xef,0xbf,0xef,0x7f,0xef},//片
C51 COMPILER V7.08 最佳效果2 04/21/2008 03:49:46 PAGE 2
56 1 {0xef,0xff,0xef,0x07,0xef,0x77,0x01,0x77,0xef,
57 1 0x77,0xef,0x77,0xc7,0x77,0xcb,0x77,
58 1 0xab,0x77,0xaf,0x77,0x6e,0xf7,0xee,0xf5,0xed,
59 1 0xf5,0xed,0xf5,0xeb,0xf9,0xef,0xff},//片
60 1 {0xf8,0x3f,0xe7,0xcf,0xdf,0xf7,0xbf,0xfb,0xb3,
61 1 0x9b,0x73,0x9d,0x7f,0xfd,0x7f,0xfd,
62 1 0x6f,0xed,0x67,0xcd,0xb3,0x9b,0xb8,0x3b,0xdf,
63 1 0xf7,0xe7,0xcf,0xf8,0x3f,0xff,0xff},//笑脸
64 1 };
65 1
66 1
67 1 register unsigned char i,j,k,m,l;
68 1
69 1 SCON=0x00; //串口工作模式0,移位寄存器方式
70 1 TMOD=0x01; //定时器T0工作方式1;16位方式
71 1 TR0=1; //启动定时器T0
72 1 P1=0x3f; //P1端口初值,允许接收,缓存,显示
73 1 IE=0x82; //允许定时器T0中断
74 1
75 1 while(1)
76 1 {
77 2 delay(1000);
78 2
79 2 for(i=0;i<32;i++) //显示效果:卷帘出
80 2 {
81 3 dispram[i]=Bmp[5][i];
82 3 huancun[i]=Cmp[4][i];
83 3 if(i%2)delay(70);
84 3 }
85 2
86 2 delay(100);
87 2 for(i=0;i<6;i++) //显示效果:上滚屏
88 2 {
89 3 for(j=0;j<16;j++)
90 3 {
91 4 for(k=0;k<15;k++)
92 4 {
93 5 huancun[k*BLKN]=huancun[(k+1)*BLKN];
94 5 huancun[k*BLKN+1]=huancun[(k+1)*BLKN+1];
95 5 dispram[k*BLKN]=dispram[(k+1)*BLKN];
96 5 dispram[k*BLKN+1]=dispram[(k+1)*BLKN+1];
97 5 }
98 4 huancun[30]=Bmp[i][j*BLKN];
99 4 huancun[31]=Bmp[i][j*BLKN+1];
100 4 dispram[30]=Bmp[i][j*BLKN];
101 4 dispram[31]=Bmp[i][j*BLKN+1];
102 4 delay(70);
103 4 }
104 3 }
105 2
106 2 delay(1000);
107 2 for(i=0;i<32;i++) //显示效果:卷帘出
108 2 {
109 3 dispram[i]=Bmp[5][i];
110 3 huancun[i]=Cmp[5][i];
111 3 if(i%2)delay(70);
112 3 }
113 2 for(i=0;i<6;i++) //显示效果,做跑马
114 2 {
115 3 for(j=0;j<2;j++)
116 3 for(k=1;k<9;k++)
117 3 {
C51 COMPILER V7.08 最佳效果2 04/21/2008 03:49:46 PAGE 3
118 4 for(l=0;l<16;l++)
119 4 { huancun[l*BLKN]=huancun[l*BLKN]<<1|huancun[l*BLKN+1]>>7;
120 5 huancun[l*BLKN+1]=huancun[l*BLKN+1]<<1|Cmp[i][l*BLKN+j]>>(8-k);
121 5
122 5 dispram[l*BLKN]=dispram[l*BLKN]<<1|dispram[l*BLKN+1]>>7;
123 5 dispram[l*BLKN+1]=dispram[l*BLKN+1]<<1|Bmp[i][l*BLKN+j]>>(8-k);
124 5 }
125 4 delay(70);
126 4 }
127 3 }
128 2 delay(1000);
129 2 for(i=0;i<32;i++) //显示效果:卷帘出
130 2 {
131 3 dispram[i]=Bmp[5][i];
132 3 huancun[i]=Cmp[4][i];
133 3 if(i%2)delay(70);
134 3 }
135 2
136 2 for(i=1;i<7;i++) //显示效果:向下滚滚屏
137 2 {
138 3
139 3 for(j=16;j>0;j--)
140 3 {
141 4 for(k=15;k>0;k--)
142 4 { huancun[k*BLKN]=huancun[(k-1)*BLKN];
143 5 huancun[k*BLKN+1]=huancun[(k-1)*BLKN+1];
144 5 dispram[k*BLKN]=dispram[(k-1)*BLKN];
145 5 dispram[k*BLKN+1]=dispram[(k-1)*BLKN+1];
146 5 }
147 4 huancun[0]=Bmp[i-1][(j-1)*BLKN];
148 4 huancun[1]=Bmp[i-1][(j-1)*BLKN+1];
149 4 dispram[0]=Bmp[i-1][(j-1)*BLKN];
150 4 dispram[1]=Bmp[i-1][(j-1)*BLKN+1];
151 4
152 4 delay(70);
153 4 }
154 3 }
155 2 delay(1000);
156 2 for(i=0;i<6;i++) //显示效果,又跑马
157 2 {
158 3 for(j=2;j>0;j--)
159 3 for(k=1;k<9;k++)
160 3 {
161 4 for(l=0;l<16;l++)
162 4 {
163 5 for(m=0;m<32;m++) //显示效果:卷帘出
164 5 {
165 6
166 6 dispram[m]=Bmp[5][m];
167 6
168 6 }
169 5 huancun[l*BLKN+1]=huancun[l*BLKN+1]>>1|huancun[l*BLKN]<<7;
170 5 huancun[l*BLKN]=huancun[l*BLKN]>>1|Bmp[i][l*BLKN+j-1]<<(8-k);
171 5 //dispram[l*BLKN+1]=dispram[l*BLKN+1]>>1|dispram[l*BLKN]<<7;
172 5 //dispram[l*BLKN]=dispram[l*BLKN]>>1|Bmp[i][l*BLKN+j-1]<<(8-k);
173 5 }
174 4 delay(70);
175 4 }
176 3 }
177 2
178 2
179 2 delay(1000);
C51 COMPILER V7.08 最佳效果2 04/21/2008 03:49:46 PAGE 4
180 2 for(i=0;i<32;i++) //显示效果:眷恋入
181 2 {
182 3 huancun[i]=0x00;
183 3 dispram[i]=0x00;
184 3
185 3 if(i%2)delay(70);
186 3 }
187 2 }
188 1 }
189 //延时函数
190 void delay(unsigned int dt)
191 {
192 1 register unsigned char bt;
193 1 for(;dt;dt--)
194 1 for(bt=0;bt<255;bt++);
195 1 }
196
197 //显示屏扫描(定时器T0中断)函数
198 void leddisplay(void)interrupt 1 using 1
199 {
200 1 register unsigned char i,j=BLKN;
201 1 TH0=0Xf8; //设定显示屏刷新率每秒62.5
202 1 TL0=0X30;
203 1 i=P1; //读取当前显示的行号
204 1 i=++i&0x0f; //行号加一,屏蔽高四位
205 1 do {
206 2
207 2 j--;
208 2 SBUF=huancun[i*BLKN+j]; //送显示数据
209 2 while(!TI);TI=0;
210 2 }while(j);j=2;
211 1 do {
212 2
213 2 j--;
214 2 SBUF=dispram[i*BLKN+j]; //送显示数据
215 2 while(!TI);TI=0;
216 2 }while(j);
217 1
218 1
219 1 //完成一行数据的发送
220 1 G=1; //消隐(关闭显示)
221 1 P1&=0xf0; //行号端口清零
222 1 RRCLK=1; //显示数据打入输出锁存器
223 1 P1|=i;
224 1 //写入行号
225 1 RRCLK=0; //所存显示数据
226 1 G=0;
227 1 //打开显示
228 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1144 ----
CONSTANT SIZE = 384 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 64 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -