📄 lm3229.lst
字号:
206 1 LCD_CD = 0;
207 1 LCD_RD = 0;
208 1 dat = LCD_OutPort;
209 1 LCD_RD = 1; ;
210 1
211 1 return dat;
212 1 }
213 /*********************************************************************************************************
214 ** 函数名称: WriteOneDataOneCmd
215 ** 功能描述: 写有一个数据,一个命令
216 **
217 ** 输 入: dat 传数据
218 ** cmd 传命令
219 **
220 ** 输 出: 无
221 **
222 ** 全局变量: 无
223 ** 调用模块: vvoid WriteData(UINT8 dat)
224 ** void WriteCommand(UINT8 cmd)
225 ** 说明 : 无
226 **-------------------------------------------------------------------------------------------------------
227 ** 修改人:
228 ** 日 期:
229 **------------------------------------------------------------------------------------------------------
230 ********************************************************************************************************/
231 void WriteOneDataOneCmd(UINT8 dat, UINT8 cmd)
232 {
233 1 WriteData(dat);
234 1 WriteCommand(cmd);
235 1 }
236
237 /*********************************************************************************************************
238 ** 函数名称: WriteTwoDataOneCmd
239 ** 功能描述: 写有两个数据,一个命令
240 **
C51 COMPILER V8.08 LM3229 11/28/2007 22:30:54 PAGE 5
241 ** 输 入: data1 传数据1
242 ** data2 传数据1
243 ** cmd 传命令
244 **
245 ** 输 出: 无
246 **
247 ** 全局变量: 无
248 ** 调用模块: vvoid WriteData(UINT8 dat)
249 ** void WriteCommand(UINT8 cmd)
250 ** 说明 : 当data1和data2组合传输一个16位的参数时,data1为低八位,data2为高八位
251 ** 作 者: LUCKY
252 ** 日 期: 2007 - 11 -20
253 **-------------------------------------------------------------------------------------------------------
254 ** 修改人:
255 ** 日 期:
256 **------------------------------------------------------------------------------------------------------
257 ********************************************************************************************************/
258 void WriteTwoDataOneCmd(UINT8 data1, UINT8 data2, UINT8 cmd)
259 {
260 1 WriteData(data1);
261 1 WriteData(data2);
262 1 WriteCommand(cmd);
263 1 }
264 /*********************************************************************************************************
265 ** 函数名称: LCD_Init
266 ** 功能描述: 初始化液晶,设置文本图形
267 **
268 ** 输 入: 无
269 **
270 ** 输 出: 无
271 **
272 ** 全局变量: 无
273 ** 调用模块: void WriteTwoDataOneCmd(UINT8 data1, UINT8 data2, UINT8 cmd)
274 ** void WriteCommand(UINT8 cmd)
275 ** 说明 : 当data1和data2组合传输一个16位的参数时,data1为低八位,data2为高八位
276 ** 作 者: LUCKY
277 ** 日 期: 2007 - 11 -20
278 **-------------------------------------------------------------------------------------------------------
279 ** 修改人:
280 ** 日 期:
281 **------------------------------------------------------------------------------------------------------
282 ********************************************************************************************************/
283 void LCD_Init(void)
284 {
285 1 UINT8 data1,data2,cmd;
286 1
287 1 /*********************设置文本显示*****************************/
288 1 data1 = 0x00;
289 1 data2 = 0x00;
290 1 cmd = 0x40; //设置文本显示区首地址
291 1 WriteTwoDataOneCmd(data1,data2,cmd);
292 1 data1 = 0x10;
293 1 data2 = 0x00;
294 1 cmd = 0x41; //设置文本显示区宽度
295 1 WriteTwoDataOneCmd(data1,data2,cmd);
296 1
297 1 /*********************设置图形显示*****************************/
298 1 data1 = 0x00;
299 1 data2 = 0x08;
300 1 cmd = 0x42; //设置图形显示区首地址
301 1 WriteTwoDataOneCmd(data1,data2,cmd);
302 1 data1 = 0x1e;
C51 COMPILER V8.08 LM3229 11/28/2007 22:30:54 PAGE 6
303 1 data2 = 0x00;
304 1 cmd = 0x43; //设置图形显示区宽度
305 1 WriteTwoDataOneCmd(data1,data2,cmd);
306 1
307 1 /*********************设置图形显示*****************************/
308 1 cmd = 0x80; //启用内部字符发生器,显示方式是文本与图形与
309 1 WriteCommand(cmd);
310 1
311 1 cmd = 0x9e; //启用光标闪烁,光标不显示,文本显示与图形显示
312 1 WriteCommand(cmd);
313 1
314 1 }
315 /*********************************************************************************************************
316 ** 函数名称: LCD_Clear
317 ** 功能描述: 清屏
318 **
319 ** 输 入: 无
320 **
321 ** 输 出: 无
322 **
323 ** 全局变量: 无
324 ** 调用模块: void WriteTwoDataOneCmd(UINT8 data1, UINT8 data2, UINT8 cmd)
325 ** void WriteCommand(UINT8 cmd)
326 ** void WriteData(UINT8 dat)
327 ** 说明 : 当data1和data2组合传输一个16位的参数时,data1为低八位,data2为高八位
328 ** 在对系统进行初始化时,有必要先将整个存储器清零.
329 **-------------------------------------------------------------------------------------------------------
330 ** 修改人:
331 ** 日 期:
332 **------------------------------------------------------------------------------------------------------
333 ********************************************************************************************************/
334 void LCD_Clear(void)
335 {
336 1 UINT8 data1,data2,cmd;
337 1 UINT16 i;
338 1
339 1 data1 = 0x00;
340 1 data2 = 0x00;
341 1 cmd = 0x24; //设置地址指针,字符显示首位置
342 1 WriteTwoDataOneCmd(data1,data2,cmd);
343 1
344 1 cmd = 0xb0; //进入自动写模式
345 1 WriteCommand(cmd);
346 1 data1 = 0x00;
347 1 for (i = 256; i != 0; --i) //字符为8x8 这里写的是128x128 所以共有256个8x8字符单元
348 1 {
349 2 CheckState(CHECK_3);
350 2 WriteData(data1);
351 2 }
352 1 cmd = 0xb2; //退出自动写模式
353 1 WriteCommand(cmd);
354 1 }
355 /*********************************************************************************************************
356 ** 函数名称: ShowEnglish8x8
357 ** 功能描述: 清屏
358 **
359 ** 输 入: row 取值范围[0 ,15]
360 ** col 取值范围[0 ,15]
361 ** EnStr 英文字符串
362 ** strLength字符串长度 <256
363 ** 输 出: 无
364 **
C51 COMPILER V8.08 LM3229 11/28/2007 22:30:54 PAGE 7
365 ** 全局变量: 无
366 ** 调用模块: void WriteTwoDataOneCmd(UINT8 data1, UINT8 data2, UINT8 cmd)
367 ** void WriteCommand(UINT8 cmd)
368 ** void WriteData(UINT8 dat)
369 ** 说明 : 当data1和data2组合传输一个16位的参数时,data1为低八位,data2为高八位
370 ** 在对系统进行初始化时,有必要先将整个存储器清零.
371 **-------------------------------------------------------------------------------------------------------
372 ** 修改人:
373 ** 日 期:
374 **------------------------------------------------------------------------------------------------------
375 ********************************************************************************************************/
376 const UINT8 code str[16] = {0x29,0x00,0x41,0x4d,0x00,0x2c,0x55,0x43,0x4b,0x59,0x01,0x27,0x4f,0x00,0x2f,0x4
-e};
377
378 void ShowEnglish8x8(UINT8 row, UINT8 col, CHAR *EnStr,UINT8 strLength)
379 {
380 1 UINT8 data1,data2,cmd;
381 1 UINT8 i;
382 1 UINT16 address;
383 1
384 1 address = row * COLUMN + col;
385 1 data1 = address; //取地址低八位
386 1 data2 = address>>8; //取地址高八位
387 1 cmd = 0x24; //设置地址指针,字符显示首位置
388 1 WriteTwoDataOneCmd(data1,data2,cmd);
389 1
390 1 cmd = 0xb0; //进入自动写模式
391 1 WriteCommand(cmd);
392 1 for (i = 0; i < strLength; ++i)
393 1 {
394 2 CheckState(CHECK_3);
395 2 WriteData(EnStr[i]);
396 2 }
397 1 cmd = 0xb2; //退出自动写模式
398 1 WriteCommand(cmd);
399 1 }
400
401
402
403 /******************************************************************************************************
404 ** 说明: 此汉字字模排列格式是1-16字节为汉字左半部分自上而下排列的字模数据,右半同理,
405 **其中一个字节代表一行的8点数据 字模的左边为高位 即是单子节点阵按 D7---D0位排列
406 *******************************************************************************************************/
407 #ifndef CN_LENGTH //定义字模库的长度
408 #define CN_LENGTH 608
409 #endif
410 const UINT8 code lqf[] = {
411 0x00,0x3F,0x20,0x3F,0x29,0x25,0x29,0x23,0x2C,0x31,0x26,0x21,0x46,0x40,0x83,0x0C,
412 0x88,0xFC,0x00,0x78,0x48,0x28,0xC8,0x60,0x5E,0x84,0x40,0x90,0x20,0xC0,0x00,0x00, //廖" 0x80,0x82,0x81,0x8
-3
413
414 0x01,0x00,0x3F,0x20,0x20,0x20,0x3F,0x20,0x20,0x21,0x21,0x22,0x22,0x44,0x88,0x30,
415 0x00,0x88,0xFC,0x80,0x80,0x88,0xFC,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x0E,0x04, //庆 0x84,0x86,0x85,0x8
-7
416
417 0x02,0x01,0x7F,0x40,0x9F,0x00,0x1F,0x10,0x1F,0x00,0x3F,0x21,0x3F,0x21,0x3F,0x20,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -