📄 lcd_drv.lst
字号:
C51 COMPILER V6.20c LCD_DRV 07/10/2002 15:17:34 PAGE 1
C51 COMPILER V6.20c, COMPILATION OF MODULE LCD_DRV
OBJECT MODULE PLACED IN ..\obj\lcd_drv.obj
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE ..\..\..\lib_demob\lcd\lcd_drv.c BROWSE INCDIR(..\src\system;..\..\..\lib)
-DEFINE(KEIL) DEBUG OBJECTEXTEND PRINT(.\lcd_drv.lst) OBJECT(..\obj\lcd_drv.obj)
stmt level source
1 /*C**************************************************************************
2 * $RCSfile: lcd_drv.c,v $
3 *----------------------------------------------------------------------------
4 * Copyright (c) 2002 Atmel.
5 *----------------------------------------------------------------------------
6 * RELEASE: $Name: DEMO_FAT_1_2_5 $
7 * REVISION: $Revision: 1.5 $
8 * FILE_CVSID: $Id: lcd_drv.c,v 1.5 2002/05/24 09:51:15 njourdan Exp $
9 *----------------------------------------------------------------------------
10 * PURPOSE:
11 * This file contains the 8-bit lcd driver routines
12 *
13 * NOTES:
14 * Driver Configuration:
15 * - LCD_CMD_ADD in board.h
16 * - LCD_DAT_ADD in board.h
17 * - FPER defined in config.h
18 * Global Variables:
19 * - None
20 *****************************************************************************/
21
22 /*_____ I N C L U D E S ____________________________________________________*/
23
24 #include "config.h" /* lib configuration header */
25 #include "..\board.h" /* board definition */
26 #include "lcd_drv.h" /* lcd driver definition */
27
28 /*_____ M A C R O S ________________________________________________________*/
29
30
31 /*_____ D E F I N I T I O N ________________________________________________*/
32
33 xdata Byte lcd_cmd At(LCD_CMD_ADD);
34 xdata Byte lcd_data At(LCD_DAT_ADD);
35
36 static Byte lcd_line; /* save the cursor position */
37
38 /*_____ D E C L A R A T I O N ______________________________________________*/
39
40 static void lcd_wr_cmd (char);
41 static void lcd_wr_data (char);
42
43
44 /*F**************************************************************************
45 * NAME: lcd_init
46 *----------------------------------------------------------------------------
47 * PARAMS:
48 *
49 * return:
50 *----------------------------------------------------------------------------
51 * PURPOSE:
52 * LCD controller initialization and configuration
53 *----------------------------------------------------------------------------
54 * EXAMPLE:
C51 COMPILER V6.20c LCD_DRV 07/10/2002 15:17:34 PAGE 2
55 *----------------------------------------------------------------------------
56 * NOTE:
57 * This function is called once to initialize the LCD display
58 *----------------------------------------------------------------------------
59 * REQUIREMENTS:
60 *****************************************************************************/
61 void lcd_init (void)
62 {
63 1 Uint16 data i;
64 1
65 1 for (i = 0; i < TEMPO_30MS; i++); /* initialization delay */
66 1
67 1 lcd_wr_cmd(LCD_FCTSET | LCD_8BIT | LCD_2_LINE | LCD_5x8DOTS);
68 1 lcd_wr_cmd(LCD_DISPLAY | LCD_DISP_ON | LCD_CURS_OFF | LCD_BLINK_OFF);
69 1 lcd_wr_cmd(LCD_SET | LCD_INC | LCD_RIGHT);
70 1 lcd_wr_cmd(LCD_CLR);
71 1 for (i = 0; i < TEMPO_1_5MS; i++); /* clear delay */
72 1 lcd_line = LCD_LINE0;
73 1 }
74
75
76 /*F**************************************************************************
77 * NAME: lcd_clr
78 *----------------------------------------------------------------------------
79 * PARAMS:
80 *
81 * return:
82 *----------------------------------------------------------------------------
83 * PURPOSE:
84 * Clear display and set cusor to home
85 *----------------------------------------------------------------------------
86 * EXAMPLE:
87 *----------------------------------------------------------------------------
88 * NOTE:
89 * No delay is performed, it is to the attention of the user to take care
90 * of the clear time
91 *----------------------------------------------------------------------------
92 * REQUIREMENTS:
93 *****************************************************************************/
94 void lcd_clr (void)
95 {
96 1 lcd_wr_cmd(LCD_CLR);
97 1 lcd_line = LCD_LINE0;
98 1 }
99
100
101 /*F**************************************************************************
102 * NAME: lcd_set_cur
103 *----------------------------------------------------------------------------
104 * PARAMS:
105 * line: LCD_LINE0: cursor on line 0
106 * LCD_LINE1: cursor on line 1
107 * column: column number of the new position of the cursor
108 *
109 * return:
110 *----------------------------------------------------------------------------
111 * PURPOSE:
112 * Set the cursor position
113 *----------------------------------------------------------------------------
114 * EXAMPLE:
115 *----------------------------------------------------------------------------
116 * NOTE:
C51 COMPILER V6.20c LCD_DRV 07/10/2002 15:17:34 PAGE 3
117 * Columns start from 0 (LCD_LINE0, 0) is home
118 *----------------------------------------------------------------------------
119 * REQUIREMENTS:
120 *****************************************************************************/
121 void lcd_set_cur (Byte line, Byte column)
122 {
123 1 lcd_line = line; /* update the line position */
124 1 lcd_wr_cmd(line | column); /* write the new cursor position */
125 1 }
126
127
128 /*F**************************************************************************
129 * NAME: lcd_putchar
130 *----------------------------------------------------------------------------
131 * PARAMS:
132 * c: character to display
133 *
134 * return:
135 *----------------------------------------------------------------------------
136 * PURPOSE:
137 * LCD display interpreter
138 *----------------------------------------------------------------------------
139 * EXAMPLE:
140 *----------------------------------------------------------------------------
141 * NOTE:
142 *----------------------------------------------------------------------------
143 * REQUIREMENTS:
144 *****************************************************************************/
145 void lcd_putchar (char c)
146 {
147 1 switch (c)
148 1 {
149 2 case C_R: /* Carriage Return */
150 2 {
151 3 lcd_set_cur(lcd_line, 0);
152 3 break;
153 3 }
154 2
155 2 case L_F: /* Line Feed + Carriage Return */
156 2 {
157 3 lcd_set_cur((lcd_line + LCD_LINE_OFFSET), 0);
158 3 break;
159 3 }
160 2
161 2 default:
162 2 {
163 3 lcd_wr_data(c); /* write the character to the display */
164 3 break;
165 3 }
166 2 }
167 1 }
168
169
170 /*F**************************************************************************
171 * NAME: lcd_wr_cmd
172 *----------------------------------------------------------------------------
173 * PARAMS:
174 * cmd: command to write on the LCD driver
175 *
176 * return:
177 *----------------------------------------------------------------------------
178 * PURPOSE:
C51 COMPILER V6.20c LCD_DRV 07/10/2002 15:17:34 PAGE 4
179 * Write command on LCD
180 *----------------------------------------------------------------------------
181 * EXAMPLE:
182 *----------------------------------------------------------------------------
183 * NOTE:
184 *----------------------------------------------------------------------------
185 * REQUIREMENTS:
186 *****************************************************************************/
187 void lcd_wr_cmd (char cmd)
188 {
189 1 Byte data i;
190 1
191 1 lcd_cmd = cmd;
192 1 for (i = 0; i < TEMPO_40US; i++);
193 1 }
194
195
196 /*F**************************************************************************
197 * NAME: lcd_wr_data
198 *----------------------------------------------------------------------------
199 * PARAMS:
200 * dat: data to write on the LCD driver
201 *
202 * return:
203 *----------------------------------------------------------------------------
204 * PURPOSE:
205 * Write data on LCD
206 *----------------------------------------------------------------------------
207 * EXAMPLE:
208 *----------------------------------------------------------------------------
209 * NOTE:
210 *----------------------------------------------------------------------------
211 * REQUIREMENTS:
212 *****************************************************************************/
213 void lcd_wr_data (char dat)
214 {
215 1 Byte data i;
216 1
217 1 lcd_data = dat;
218 1 for (i = 0; i < TEMPO_40US - 4; i++);
219 1 }
220
221
222 /*F**************************************************************************
223 * NAME: lcd_wr_cgram
224 *----------------------------------------------------------------------------
225 * PARAMS:
226 * dat: data to write on the LCD driver
227 *
228 * return:
229 *----------------------------------------------------------------------------
230 * PURPOSE:
231 * Write data on LCD CGRAM
232 *----------------------------------------------------------------------------
233 * EXAMPLE:
234 *----------------------------------------------------------------------------
235 * NOTE:
236 *----------------------------------------------------------------------------
237 * REQUIREMENTS:
238 *****************************************************************************/
239 void lcd_wr_cgram (char dat)
240 {
C51 COMPILER V6.20c LCD_DRV 07/10/2002 15:17:34 PAGE 5
241 1 Byte data i;
242 1
243 1 lcd_data = dat;
244 1 for (i = 0; i < TEMPO_40US; i++);
245 1 }
246
247
248 /*F**************************************************************************
249 * NAME: lcd_cgram
250 *----------------------------------------------------------------------------
251 * PARAMS:
252 * address: character address in cgram
253 * pt_pattern: pointer on pattern in code segment
254 *
255 * return:
256 *----------------------------------------------------------------------------
257 * PURPOSE:
258 * LCD controller Character Graphic RAM set-up
259 *----------------------------------------------------------------------------
260 * EXAMPLE:
261 *----------------------------------------------------------------------------
262 * NOTE:
263 * This function is called to re-define a graphic character
264 * The HD44780 controller contains 8 locations in RAM where user's
265 * characters can be defined
266 *----------------------------------------------------------------------------
267 * REQUIREMENTS:
268 *****************************************************************************/
269 void lcd_cgram (Byte address, Byte code *pt_pattern)
270 {
271 1
272 1 lcd_wr_cmd(LCD_CGRAM | address); /* select character in graphic RAM */
273 1
274 1 lcd_wr_cgram(pt_pattern[0]); /* load symbols */
275 1 lcd_wr_cgram(pt_pattern[1]);
276 1 lcd_wr_cgram(pt_pattern[2]);
277 1 lcd_wr_cgram(pt_pattern[3]);
278 1 lcd_wr_cgram(pt_pattern[4]);
279 1 lcd_wr_cgram(pt_pattern[5]);
280 1 lcd_wr_cgram(pt_pattern[6]);
281 1 lcd_wr_cgram(pt_pattern[7]);
282 1
283 1 lcd_wr_cmd(lcd_line); /* select display data RAM */
284 1 }
285
286
287
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 234 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 1
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 + -