📄 lcd.lst
字号:
192 3 case 192:
193 3 choosescreen(2);
194 3 writecommand(0xbb);
195 3 writecommand(0x40);
196 3 break;
197 3 case 256:
198 3 choosescreen(1);
199 3 writecommand(0xbd);
200 3 writecommand(0x40);
201 3 break;
202 3 case 320:
203 3 choosescreen(2);
204 3 writecommand(0xbd);
205 3 writecommand(0x40);
206 3 break;
207 3 case 384:
208 3 choosescreen(1);
209 3 writecommand(0xbf);
210 3 writecommand(0x40);
211 3 break;
212 3 case 448:
213 3 choosescreen(2);
214 3 writecommand(0xbf);
215 3 writecommand(0x40);
216 3 break;
217 3 default:
218 3 break;
219 3 } //
220 2 writedate(*(ziku+i+m*16+16));
221 2 //下面的语句等价的
222 2 //writedate(ziku[i+(m*16)]);
223 2 }
224 1 m=0;
225 1 }
226
227
228 //*****************************************************************/
229 //功能:在B液晶上显示汉字程序///////////////////////////
230 //参数说明:adds:字库内序号 nb:要显示的汉字的个数(1~4个)
231 // x:显示起始列 y:显示起始页(0~6) style: 显示风格(白或荫?
-
232 /*******************************************************************/
233 wr_hz_b(uchar adds,uchar nb,uchar x,uchar y,uchar style)
234 {
235 1 uchar i,j;
236 1 choosescreen(2); //选择B块液晶
237 1 for(j=adds;j<adds+nb;j++)
238 1 {
239 2 writecommand(0x40+16*x);
240 2 //write_comd_b(0x40+16*x);
C51 COMPILER V7.09 LCD 09/23/2007 22:58:14 PAGE 5
241 2 // write_comd_b(0xb8+y);
242 2 writecommand(0xb8+y);
243 2 for(i=0;i<16;i++)
244 2 //显示的风格设置(背景设置)
245 2 if(style==1)
246 2 //write_data_b(~Hzk[j][i]);
247 2 writedate(~Hzk[j][i]);
248 2 else
249 2 //write_data_b(Hzk[j][i]);
250 2 writedate(Hzk[j][i]);
251 2 //下半个汉字
252 2 //write_comd_b(0x40+16*x); //调整指针位置 列回到起始处
253 2 //write_comd_b(0xb8+y+1); //页向下一页
254 2 writecommand(0x40+16*x);
255 2 writecommand(0xb8+y+1);
256 2 for(i=16;i<32;i++) //显示一个汉字的剩余16个字节数据
257 2 if(style==1)
258 2 //write_data_b(~Hzk[j][i]);
259 2 writedate(~Hzk[j][i]);
260 2 else
261 2 //write_data_b(Hzk[j][i]);
262 2 writedate(Hzk[j][i]);
263 2 x++; //一个汉字完了后列也要向后16列了
264 2 }
265 1 }
266
267
268
269 /**********************************************/
270 /*名称:图片显示
271 /*功能: 在左半块或者右半块显示64*64的指定图片
272 /*********************************************/
273 void disp_pic_a_or_b(uchar fu,uchar pos)
274 {
275 1
276 1 uchar i,j;
277 1 if(pos==0)//选择左块
278 1 {
279 2 for(j=0;j<8;j++)
280 2 {
281 3 choosescreen(1);
282 3 writecommand(0x40); //这段程序和上面那段类似就页加一就可以
283 3 writecommand(0xb8+j);
284 3 //write_comd_a(0x40);
285 3 //write_comd_a(0xb8+j);
286 3 for(i=0;i<64;i++)
287 3 // write_data_a(picture[8*fu+j][i]);
288 3 writedate(picture[8*fu+j][i]); //写数据
289 3 }
290 2 }
291 1
292 1 else
293 1
294 1 {
295 2 for(j=0;j<8;j++)
296 2 {
297 3 choosescreen(2);
298 3 writecommand(0x40); //这段程序和上面那段类似就页加一就可以
299 3 writecommand(0xb8+j);
300 3 //write_comd_b(0x40);
301 3 //write_comd_b(0xb8+j);
302 3 for(i=0;i<64;i++)
C51 COMPILER V7.09 LCD 09/23/2007 22:58:14 PAGE 6
303 3 writedate(picture[8*fu+j][i]);//写数据
304 3 //write_data_b(picture[8*fu+j][i]);
305 3 }
306 2 }
307 1
308 1 }
309
310
311
312
313
314
315 //******************//
316 //软件延迟时间
317 //
318 //*****************//
319 void delay(uint ms)
320 {
321 1 uchar i;
322 1 while(ms--)
323 1 for(i=0;i<123;i++);
324 1
325 1 }
326 //*****************************//
327 // 主函数
328 //*****************************//
329 main()
330 {
331 1 uchar i;
332 1 TMOD=0x02; //定时器0方式2 (8位自动加载模式)
333 1 TH0=0x06; //初始数值
334 1 TL0=0x06;//初始数值
335 1 ET0=1;//定时器0中断允许
336 1 TR0=1; //开启定时器
337 1
338 1 //这个中断我先屏蔽叼
339 1 // EA=1;//总中断允许
340 1
341 1 E=1;//使能液晶
342 1 lce_init(); //初始化液晶
343 1 choosescreen(0);//选择2块液晶
344 1 cleanscreen(); //清除2块液晶
345 1
346 1
347 1
348 1 while(1)
349 1 {
350 2
351 2 for(i=0;i<33;i++)
352 2 {//显示32固定个汉字
353 3 display(i);
354 3 delay(500);
355 3 }
356 2 choosescreen(1);//选择1块液晶
357 2 cleanscreen(); //清除1块液晶
358 2 delay(500);
359 2 choosescreen(2);//选择2块液晶
360 2 cleanscreen(); //清除2块液晶
361 2 delay(1000);
362 2 disp_pic_a_or_b(0,0); //显示64*64图片
363 2 wr_hz_b(0,4,0,3,0) ; //B快任意位置显示汉字
364 2 delay(2000);
C51 COMPILER V7.09 LCD 09/23/2007 22:58:14 PAGE 7
365 2 choosescreen(0);//选择2块液晶
366 2 cleanscreen(); //清除2块液晶
367 2
368 2 }
369 1
370 1
371 1
372 1
373 1
374 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1010 ----
CONSTANT SIZE = 1664 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 8
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 + -