📄 gps1602.lst
字号:
247 5 dsp_count=0;
248 5 }
249 4 }
250 3 }
251 2 }
252 1 }
253 /******************************************************************************************
254 * 函数名称 :
255 * 功能描述 :
256 * 参数 : 参数名称: 输入/输出? 类型 描述
257 *
258 * 返回值 :
259 * 作者 :
260 * 创建日期 :2006-12-19
261 * 全局变量 :
262 * 全局静态变量:
263 * 局部静态变量:
264 *----------------------------------------修改历史------------------------------------------
265 * 当前版本 : 修改人: 修改日期:
266 * 修改说明 :
267 ******************************************************************************************/
268 bit chk_key(void)
269 {
270 1 if(!KEY1)
271 1 {
272 2 Delay5Ms();
273 2 Delay5Ms();
274 2 if(!KEY1)
275 2 {
276 3 while(!KEY1);
277 3 Delay5Ms();
278 3 Delay5Ms();
279 3 return(1);
280 3 }
281 2 }
282 1 return(0);
283 1 }
284
285 /******************************************************************************************
286 * 函数名称 :sys_init
287 * 功能描述 :系统初始化
288 * 参数 : 参数名称: 输入/输出? 类型 描述
289 *
290 * 返回值 :
291 * 作者 :
292 * 创建日期 :2006-12-19
293 * 全局变量 :
294 * 全局静态变量:
295 * 局部静态变量:
296 *----------------------------------------修改历史------------------------------------------
297 * 当前版本 : 修改人: 修改日期:
298 * 修改说明 :
299 ******************************************************************************************/
300 void sys_init()
301 {
302 1
303 1 SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
C51 COMPILER V7.09 GPS1602 03/26/2008 13:55:09 PAGE 6
304 1 TMOD = 0x21; /* TMOD: timer 1, mode 2, 8-bit reload */
305 1 TH1 = 0xfa; /* TH1: reload value for 4800 baud @ 11.059MHz */
306 1
307 1
308 1 spd_type=1; //速度单位km/h
309 1
310 1 TR1 = 1; /* TR1: timer 1 run */
311 1 LCMInit(); //初始化LCD
312 1 DisplayListChar(0,0,"GPS Monitor V1.2");
313 1 Delay400Ms();
314 1 LCD_cls();
315 1 IE=0x90; //开总中断、串口中断
316 1 }
317
318 /******************************************************************************************
319 * 函数名称 :WriteDataLCM
320 * 功能描述 :写数据
321 * 参数 : 参数名称: 输入/输出? 类型 描述
322 *
323 * 返回值 :
324 * 作者 :
325 * 创建日期 :2006-12-19
326 * 全局变量 :
327 * 全局静态变量:
328 * 局部静态变量:
329 *----------------------------------------修改历史------------------------------------------
330 * 当前版本 : 修改人: 修改日期:
331 * 修改说明 :
332 ******************************************************************************************/
333 void WriteDataLCM(unsigned char WDLCM)
334 {
335 1 ReadStatusLCM(); //检测忙
336 1 LCM_Data = WDLCM;
337 1 LCM_RS = 1;
338 1 LCM_RW = 0;
339 1 LCM_E = 0; //若晶振速度太高可以在这后加小的延时
340 1 LCM_E = 0; //延时
341 1 LCM_E = 1;
342 1 }
343
344 /******************************************************************************************
345 * 函数名称 :WriteCommandLCM
346 * 功能描述 :写指令
347 * 参数 : 参数名称: 输入/输出? 类型 描述
348 *
349 * 返回值 :
350 * 作者 :
351 * 创建日期 :2006-12-19
352 * 全局变量 :
353 * 全局静态变量:
354 * 局部静态变量:
355 *----------------------------------------修改历史------------------------------------------
356 * 当前版本 : 修改人: 修改日期:
357 * 修改说明 :
358 ******************************************************************************************/
359 void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC为0时忽略忙检测
360 {
361 1 if (BuysC)
362 1 ReadStatusLCM(); //根据需要检测忙
363 1 LCM_Data = WCLCM;
364 1 LCM_RS = 0;
365 1 LCM_RW = 0;
C51 COMPILER V7.09 GPS1602 03/26/2008 13:55:09 PAGE 7
366 1 LCM_E = 0;
367 1 LCM_E = 0;
368 1 LCM_E = 1;
369 1 }
370
371 /******************************************************************************************
372 * 函数名称 :ReadStatusLCM
373 * 功能描述 :读状态
374 * 参数 : 参数名称: 输入/输出? 类型 描述
375 *
376 * 返回值 :
377 * 作者 :
378 * 创建日期 :2006-12-19
379 * 全局变量 :
380 * 全局静态变量:
381 * 局部静态变量:
382 *----------------------------------------修改历史------------------------------------------
383 * 当前版本 : 修改人: 修改日期:
384 * 修改说明 :
385 ******************************************************************************************/
386 unsigned char ReadStatusLCM(void)
387 {
388 1 LCM_Data = 0xFF;
389 1 LCM_RS = 0;
390 1 LCM_RW = 1;
391 1 LCM_E = 0;
392 1 LCM_E = 0;
393 1 LCM_E = 1;
394 1 while (LCM_Data & Busy); //检测忙信号
395 1 return(LCM_Data);
396 1 }
397 /******************************************************************************************
398 * 函数名称 :LCMInit
399 * 功能描述 :LCM初始化
400 * 参数 : 参数名称: 输入/输出? 类型 描述
401 *
402 * 返回值 :
403 * 作者 :
404 * 创建日期 :2006-12-19
405 * 全局变量 :
406 * 全局静态变量:
407 * 局部静态变量:
408 *----------------------------------------修改历史------------------------------------------
409 * 当前版本 : 修改人: 修改日期:
410 * 修改说明 :
411 ******************************************************************************************/
412 void LCMInit(void)
413 {
414 1 LCM_Data = 0;
415 1 WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号
416 1 Delay5Ms();
417 1 WriteCommandLCM(0x38,0);
418 1 Delay5Ms();
419 1 WriteCommandLCM(0x38,0);
420 1 Delay5Ms();
421 1
422 1 WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号
423 1 WriteCommandLCM(0x08,1); //关闭显示
424 1 WriteCommandLCM(0x01,1); //显示清屏
425 1 WriteCommandLCM(0x06,1); // 显示光标移动设置
426 1 WriteCommandLCM(0x0C,1); // 显示开及光标设置
427 1 }
C51 COMPILER V7.09 GPS1602 03/26/2008 13:55:09 PAGE 8
428 /******************************************************************************************
429 * 函数名称 :LCMInit
430 * 功能描述 :LCM初始化
431 * 参数 : 参数名称: 输入/输出? 类型 描述
432 *
433 * 返回值 :
434 * 作者 :
435 * 创建日期 :2006-12-19
436 * 全局变量 :
437 * 全局静态变量:
438 * 局部静态变量:
439 *----------------------------------------修改历史------------------------------------------
440 * 当前版本 : 修改人: 修改日期:
441 * 修改说明 :
442 ******************************************************************************************/
443 void LCD_cls(void)
444 {
445 1 WriteCommandLCM(0x01,0);
446 1 Delay5Ms();
447 1 }
448 /******************************************************************************************
449 * 函数名称 :DisplayOneChar
450 * 功能描述 :按指定位置显示一个字符
451 * 参数 : 参数名称: 输入/输出? 类型 描述
452 *
453 * 返回值 :
454 * 作者 :
455 * 创建日期 :2006-12-19
456 * 全局变量 :
457 * 全局静态变量:
458 * 局部静态变量:
459 *----------------------------------------修改历史------------------------------------------
460 * 当前版本 : 修改人: 修改日期:
461 * 修改说明 :
462 ******************************************************************************************/
463 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
464 {
465 1 Y &= 0x1;
466 1 X &= 0xF; //限制X不能大于15,Y不能大于1
467 1 if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
468 1 X |= 0x80; //算出指令码
469 1 WriteCommandLCM(X, 0); //这里不检测忙信号,发送地址码
470 1 WriteDataLCM(DData);
471 1 }
472 /******************************************************************************************
473 * 函数名称 :DisplayListChar
474 * 功能描述 :按指定位置显示一串字符 ***原来的遇到空格0x20就不显示***
475 * 参数 : 参数名称: 输入/输出? 类型 描述
476 *
477 * 返回值 :
478 * 作者 :
479 * 创建日期 :2006-12-19
480 * 全局变量 :
481 * 全局静态变量:
482 * 局部静态变量:
483 *----------------------------------------修改历史------------------------------------------
484 * 当前版本 : 修改人: 修改日期:
485 * 修改说明 :
486 ******************************************************************************************/
487 void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
488 {
489 1 unsigned char ListLength,j;
C51 COMPILER V7.09 GPS1602 03/26/2008 13:55:09 PAGE 9
490 1 ListLength = strlen(DData);
491 1 Y &= 0x1;
492 1 X &= 0xF; //限制X不能大于15,Y不能大于1
493 1 if (X <= 0xF) //X坐标应小于0xF
494 1 {
495 2 for(j=0;j<ListLength;j++)
496 2 {
497 3 DisplayOneChar(X, Y, DData[j]); //显示单个字符
498 3 X++;
499 3 }
500 2 }
501 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -