📄 1620.lst
字号:
234 1 LcdWcn(c);
235 1 }
236
237 /***********************************************
238 .modle name: LcdPos
239 .description: 显示屏定位
240 由行列计算内部地址
241
C51 COMPILER V7.08 1620 11/26/2007 15:21:05 PAGE 5
242 ************************************************/
243
244 void LcdPos()
245 {
246 1 unsigned tmp;
247 1 Xpos&=0x0f; //列范围0~15
248 1 Ypos&=0x01; //行范围是0~1
249 1
250 1 tmp=Xpos;
251 1 if(Ypos==1)//第一行
252 1 {
253 2 tmp+=0x40;
254 2 }
255 1 tmp|=0x80;//第二行
256 1 LcdWc(tmp);//设置数据地址
257 1 }
258
259 /***********************************************
260 .modle name: RstLcd
261 .description: ts1620-1 LCD 的复位程序
262
263 初始化过程(复位过程)
264 . 1 延时15ms
265 . 2 写指令38H(不检测忙信号)
266 . 3 延时5ms
267 . 4 写指令38H(不检测忙信号)
268 . 5 延时5ms
269 . 6 写指令38H(不检测忙信号)
270 . 7 (以后每次写指令、读/写数据操作之前均需检测忙信号)
271 . 8 写指令38H:显示模式设置
272 . 9 写指令08H:显示关闭
273 . 10 写指令01H:显示清屏
274 . 11 写指令06H:显示光标移动设置
275 . 12 写指令0FH/OCH:显示开及光标设置
276 ************************************************/
277
278
279 void RstLcd()
280 {
281 1 mDelay(10); //延时等待系统稳定
282 1 LcdWcn(0x38);//重复写入
283 1 mDelay(10);//延时1s
284 1 LcdWcn(0x38);
285 1 mDelay(10);//延时1s
286 1 LcdWcn(0x38);
287 1 mDelay(10);//延时1s
288 1
289 1 LcdWc(0x38);//显示模式设置:8位2行5x7点阵
290 1 mDelay(10);//延时10s
291 1
292 1 LcdWc(0x08);//显示关闭
293 1 mDelay(1);//延时10s
294 1
295 1 LcdWc(0x01);//显示清屏
296 1 mDelay(1);//延时10s
297 1
298 1 LcdWc(0x06);//显示光标移动设置(加一)
299 1 mDelay(1);//延时10s
300 1
301 1 LcdWc(0x0c);//显示开关及光标设置(不显示光标)
302 1 mDelay(1);//延时10s
303 1 }
C51 COMPILER V7.08 1620 11/26/2007 15:21:05 PAGE 6
304
305 /***********************************************
306 .modle name: Disp
307 .description: 在指定位置显示
308 ************************************************/
309
310 void Disp (unsigned char time,unsigned char Xpos1)
311 {
312 1 unsigned int ten=0;
313 1 unsigned int gw=0;
314 1 if (time<10)
315 1 {
316 2 Xpos=Xpos1;
317 2 WriteChar('0');//在指定行列显示
318 2 LcdWd(dischar[time]);//带忙检测的写字符子程序
319 2 }
320 1 else
321 1 {
322 2 ten=time/10; //取十位数
323 2 gw=time-ten*10;//取个位数
324 2 Xpos=Xpos1;
325 2 WriteChar(dischar[ten]);//在指定行列显示过10时
326 2 //在该位置显示十位
327 2 LcdWd(dischar[gw]); //地址自动增一
328 2 }
329 1 }
330
331 /***********************************************
332 .modle name: posclear
333 .description: 擦除指定位置
334 ************************************************/
335 void posclear(unsigned char Xpos1)
336 {
337 1 Xpos=Xpos1;
338 1 WriteChar(' ');//在指定行列显示
339 1 LcdWd(' ');//带忙检测的写字符子程序
340 1 }
341
342 /***********************************************
343 .modle name: Timer0 interrupt
344 .description: Timer0 ISR
345 ************************************************/
346 void Timer() interrupt 1 //定时器0 中断子程序
347 {
348 1 TH0=0x4c;
349 1 TL0=0x26;//0.625/20=0.03125 49.99-0.03125=49.95875
350 1
351 1 TimerReg++;
352 1 if (TimerReg==20)//1秒钟
353 1 {
354 2 TimerReg=0;//复位
355 2 Second++;
356 2 if (Second==60) //1分钟
357 2 {
358 3 Second=0;
359 3 Minute++;
360 3
361 3 if (Minute==60) //1小时
362 3 {
363 4 Minute=0;
364 4 Hour++;
365 4 if (Hour==24)//1天
C51 COMPILER V7.08 1620 11/26/2007 15:21:05 PAGE 7
366 4 {
367 5 Hour=0;
368 5 }
369 4 }
370 3 }
371 2 }
372 1
373 1 /*小时显示刷新*/
374 1 Disp(Hour,2);
375 1 /*分显示刷新*/
376 1 Disp(Minute,5);
377 1 /*秒显示刷新*/
378 1 Disp(Second,8);
379 1 }
380
381
382 /***********************************************
383 .modle name: main
384 .description: 主函数
385 ************************************************/
386
387 void main()
388 {
389 1
390 1 do{
391 2 LcdWcn(~1);//重复写入
392 2 mDelay(50);//延时1s
393 2 LcdWcn(~2);//重复写入
394 2 mDelay(50);//延时1s
395 2 LcdWcn(~4);//重复写入
396 2 mDelay(50);//延时1s
397 2 LcdWcn(~8);//重复写入
398 2 mDelay(50);//延时1s
399 2 LcdWcn(~16);//重复写入
400 2 mDelay(50);//延时1s
401 2 LcdWcn(~32);//重复写入
402 2 mDelay(50);//延时1s
403 2 LcdWcn(~64);//重复写入
404 2 mDelay(50);//延时1s
405 2 LcdWcn(~128);//重复写入
406 2 mDelay(50);//延时1s
407 2 }while(1);
408 1
409 1 /*
410 1 TimerReg=0;
411 1 Second=0;//秒 初始化
412 1 Minute=0;//分 初始化
413 1 Hour=0; //小时 初始化
414 1
415 1
416 1 //定时器初始化
417 1 TMOD=0x21;//TMOD定时器工作方式寄存器,0x21设定为T1为方式2 T0为方式1
418 1 TH0=0x4c; TL0=0x00; //定时器初值:50ms定时
419 1 //TH1=0xfd; TL1=0xfd; //产生9600bps波特率,SMOD为0;
420 1 //TR1=1;//起动定时器1
421 1
422 1 TR0=1;//起动定时器0
423 1 //中断
424 1 ET0=1;//允许定 时器0 中断,
425 1 //IT1=1;//允许 外部中断1
426 1 EA=1;//总中断允许控制位,开放所有中断
427 1
C51 COMPILER V7.08 1620 11/26/2007 15:21:05 PAGE 8
428 1 BacklightP=1;
429 1 BacklightN=0;
430 1 RstLcd(); //复位LCD
431 1 LcdWc(0x01);//清屏
432 1
433 1 Ypos=0;
434 1 Xpos=4;
435 1 WriteChar(':');
436 1 Xpos=7;
437 1 WriteChar(':');
438 1
439 1 Disp(19,2);//小时显示刷新
440 1
441 1 Disp(18,5);//*分显示刷新
442 1
443 1 Disp(15,8);//秒显示刷新
444 1 Ypos=1;
445 1 Xpos=2;
446 1 WriteChar('I');
447 1 LcdWd(' ');
448 1 LcdWd('L');
449 1 LcdWd('O');
450 1 LcdWd('V');
451 1 LcdWd('E');
452 1 LcdWd(' ');
453 1 LcdWd('Y');
454 1 LcdWd('O');
455 1 LcdWd('U');
456 1 LcdWd('!');
457 1 */
458 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 635 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 28 12
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 + -