📄 lcd1602.lst
字号:
C51 COMPILER V7.06 LCD1602 10/26/2008 02:07:00 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN lcd1602.OBJ
COMPILER INVOKED BY: J:\Keil\C51\BIN\C51.EXE lcd1602.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*
2 * Copyright (C) 2007, 华中科技大学电气与电子科技创新中心
3 * All Rights Reserved.
4 *
5 * 文件名: lcd1602.h
6 * 文件描述: 1602LCD主程序
7 *
8 * 当前版本: 1.0
9 * 作者: Zuowenping(fmku007@163.com)
10 * 完成日期: 2007年12月17日
11 *
12 */
13 #include "lcd1602.h"
14 #include "intrins.h"
15
16 #define CLR 0x01;
17 #define DIS_SW 0x0c;
18 #define FUNC 0x38
19
20 /**************************************
21 ///////////////查忙
22 ***************************************/
23 void check_busy()
24 {
25 1 BUSY=1;
26 1 RS=0;
27 1 RW=1;
28 1 E=1;
29 1 nop();
30 1 while(BUSY)
31 1 {
32 2 E=0;
33 2 nop();
34 2 E=1;
35 2 }
36 1 }
37 /**************************************
38 //////////////发送数据
39 ***************************************/
40 void wr_data(unsigned char data1)
41 {
42 1 check_busy();
43 1 RS=1;
44 1 RW=0;
45 1 E=1;
46 1 P0=data1;
47 1 nop();
48 1 E=0;
49 1 nop();
50 1 E=1;
51 1 }
52 /**************************************
53 ///////////////发送指令
54 ***************************************/
55 void wr_code(unsigned char code1)
C51 COMPILER V7.06 LCD1602 10/26/2008 02:07:00 PAGE 2
56 {
57 1 check_busy();
58 1 RS=0;
59 1 RW=0;
60 1 E=1;
61 1 P0=code1;
62 1 nop();
63 1 E=0;
64 1 nop();
65 1 E=1;
66 1 }
67 /**************************************
68 ///////////////LCD初始化
69 ***************************************/
70 void lcd_init(void)
71 {
72 1 wr_code(0x01); //清屏
73 1 wr_code(0x0c); //开显示器,关光标
74 1 wr_code(FUNC); //双行显示,八位数据,小字符
75 1 }
76 /**************************************
77 ///////////////向LCD某位置写入字符; x:0-15 y:0-1
78 ***************************************/
79 void put_char(unsigned char x,unsigned char y,unsigned char charin)
80 {
81 1 unsigned char addr;
82 1 if(y==0)
83 1 addr=0x80;
84 1 else
85 1 addr=0xc0;
86 1 addr=addr+x;
87 1 wr_code(addr);
88 1 wr_data(charin);
89 1 }
90
91 /**************************************
92 ///////////////向LCD某行写入字符串;
93 ***************************************/
94 void put_str(unsigned char *p,bit row)
95 {
96 1 unsigned char addr_st,i,len=0;
97 1 while (p[len] >31)
98 1 len++;
99 1 if(row==0)
100 1 addr_st=0x80;
101 1 else
102 1 addr_st=0xc0;
103 1 for(i=0;i<len;i++)
104 1 { wr_code(addr_st);
105 2 wr_data(*p);
106 2 addr_st++;
107 2 p++;
108 2 }
109 1 }
110 /**************************************
111 ///////////////延时;
112 ***************************************/
113 void nop()
114
115 {
116 1 _nop_();
117 1 _nop_();
C51 COMPILER V7.06 LCD1602 10/26/2008 02:07:00 PAGE 3
118 1 _nop_();
119 1 _nop_();
120 1 _nop_();
121 1 _nop_();
122 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 213 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 10
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -