📄 lcmdrv.lst
字号:
C51 COMPILER V7.07 LCMDRV 03/10/2004 15:02:15 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE LCMDRV
OBJECT MODULE PLACED IN Lcmdrv.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Lcmdrv.c OPTIMIZE(2,SPEED) BROWSE INTVECTOR(0X8000) DEFINE(MONITOR51) DEBUG
- OBJECTEXTEND
stmt level source
1 /****************************************************************************
2 * 文件名:LCMDRV.C
3 * 功能:TC1602A驱动程序。提供初始化、发送命令、发送数据、发送字符串等函数。
4 ****************************************************************************/
5 #include "LCMDRV.H"
6 #include <intrins.h>
7
8
9 /****************************************************************************
10 ** 函数名称: DelayShort()
11 ** 功能描述: 短延时操作,延时时间约为dly个机器周期。
12 ** 输 入: dly 延时控制,即延时周期数。(参数为0时不进行延时)
13 ** 输 出: 无
14 ****************************************************************************/
15 void DelayShort(uint8 dly)
16 { for( ; dly>0; dly--) _nop_();
17 1 }
18
19
20 /****************************************************************************
21 ** 函数名称: LCMSendDate()
22 ** 功能描述: 向LCM模块发送数据date。
23 ** 输 入: odata 要输出的数据
24 ** 输 出: 无
25 ** 注意: 使用此函数前要初化好LCM,再用此函数据发送显示数据。
26 ****************************************************************************/
27 void LCMSendDate(uint8 odate)
28 { LCMWR_DAT = odate;
29 1 DelayShort(100);
30 1 }
31
32
33 /****************************************************************************
34 ** 函数名称: LCMSendComm()
35 ** 功能描述: 向LCM模块发送命令comm。
36 ** 输 入: comm 要输出的命令
37 ** 输 出: 无
38 ** 注意: 调用此函数来初化、设置LCM
39 ****************************************************************************/
40 void LCMSendComm(uint8 comm)
41 { LCMWR_COM = comm;
42 1 DelayShort(100);
43 1 }
44
45
46 /****************************************************************************
47 ** 函数名称: LCMDispStr()
48 ** 功能描述: 向LCM模块发送字串数据,从DDRAM的指定地起adr开始一直写,直到字符串结束或超出
49 ** 屏幕显示范围。此函数可以自动换行。
50 ** 输 入: dstr 要写的字串指针
51 ** adr 写入的DDRAM起始地址(如LCM_LINE1)
52 ** 输 出: 无
53 ** 注意: 使用此函数前要初化好LCM。(适用于双行LCM设置,且显示为光标移动,DDRAM地址向上增长)
54 ****************************************************************************/
C51 COMPILER V7.07 LCMDRV 03/10/2004 15:02:15 PAGE 2
55 void LCMDispStr(uint8 adr, char *dstr)
56 { if( adr<LCM_LINE1 ) return;
57 1 if( adr>(LCM_LINE2+15) ) return;
58 1 if( (adr>(LCM_LINE1+15)) && (adr<LCM_LINE2) ) return;
59 1
60 1 /* 检查字串是否为空 */
61 1 if( (*dstr)=='\0' )return;
62 1
63 1 LCMSendComm(adr); // 设置DDRAM地址
64 1 while(1)
65 1 { if( (*dstr)=='\0' )break; // 若字串己经结束,则退出发送
66 2 LCMSendDate(*dstr);
67 2 dstr++;
68 2 /* 若第一行显示完毕,则指向第二行,进行显示输出 */
69 2 if( adr==(LCM_LINE1+15) )
70 2 { adr = LCM_LINE2;
71 3 LCMSendComm(adr); // 从第2行开始显示
72 3 }
73 2 else
74 2 { adr++;
75 3 }
76 2 if( adr>LCM_LINE2+15 )return; // 地址超出
77 2 }
78 1 }
79
80
81
82 /****************************************************************************
83 ** 函数名称: LCMIni()
84 ** 功能描述: 初始化LCM模块,设置为LCM_MODE、LCM_NOFLASH、LCM_NOSHIFT、LCM_SH,然后清屏。
85 ** 输 入: 无
86 ** 输 出: 无
87 ****************************************************************************/
88 void LCMIni(void)
89 { LCMSendComm(LCM_RST); // 软复位
90 1 LCMSendComm(LCM_MODE); // 设置LCM模式(系统方式设置),6
91 1 LCMSendComm(LCM_NOFLASH); // 打开LCM显示,无光标,4
92 1 LCMSendComm(LCM_NOSHIFT); // 字符向地址递增,光标移动,3
93 1 LCMSendComm(LCM_SH); // 重新设为光标移动,向右移,5(单指令)
94 1 LCMDispStr(LCM_LINE1, CLRSTR); // 清屏
95 1 LCMDispStr(LCM_LINE2, CLRSTR);
96 1 }
97
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 207 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
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 + -