📄 lcd1062.lst
字号:
C51 COMPILER V7.20 LCD1062 08/23/2007 23:01:48 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE LCD1062
OBJECT MODULE PLACED IN lcd1062.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd1062.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /****************************************************************************
2 本头文件描述了用89S52/89S51控制液晶显示器1602的一些连接情况,并而编写了些控制
3 液晶显示的函数.
4 ******************************************************************************/
5
6 #include<REG51.H>
7 #include"lcd1062.h"
8 /***********************************void wait()*****************************
9 该函数的作用是对LCD进行检测,看LCD是否处于忙的状态.当bflag=1时表示忙,
10 此时不可以向LCD进行读写操作.而当bflag=0时,表示可以向它读写数据.
11 ****************************************************************************/
12 void Wait()
13 {
14 1 DATA=0xff;
15 1 RW=1; RS=0; //设LCD为读控制字的状态
16 1 do
17 1 {E=0;E=1;}while(bflag==1);
18 1 }
19
20
21
22 /**********************************void Wrcom()*******************************
23 该函数的作用是向LCD写入控制字.
24 ******************************************************************************/
25 void Wrcom(uchar com)
26 {
27 1 DATA=com;
28 1 RW=0; RS=0; //设LCD为写控制字的状态
29 1 E=0; E=1;
30 1 Wait();
31 1 }
32
33
34 /**************************************void Disdata()*******************************
35 该函数的作用是向LCD写入数据并显示出来.
36 ***********************************************************************************/
37 void Disdata(uchar dat)
38 {
39 1 DATA=dat;
40 1 RW=0; RS=1; //设LCD为写数据的状态
41 1 E=0; E=1;
42 1 Wait();
43 1 }
44
45
46
47 /***************************************void Init_LCD()*******************************
48 该函数的作用是初始化LCD.
49 *****************************************************************************************/
50 void Init_LCD()
51 {
52 1 Wrcom(0x01); //清屏
53 1 Wrcom(0x0c); //开显示,关光标及闪烁
54 1 Wrcom(0x06); //文字不动,光标右移
55 1 Wrcom(0x3c); //8位,两行,5*10点阵
C51 COMPILER V7.20 LCD1062 08/23/2007 23:01:48 PAGE 2
56 1 }
57
58
59 /****************************************************************************
60 该函数能定位光标到指定的位置,并选择是否要闪烁
61 ****************************************************************************/
62 void Dis_cursor(uchar row,uchar line)
63 {
64 1 Wrcom(0x0d); //开显示,闪烁、不开光标
65 1 //Wrcom(0x0e); //开显示、光标、不闪烁
66 1 //Wrcom(0x0f); //开显示、光标、闪烁
67 1 if(row==1)
68 1 {
69 2 Wrcom(0x80+line-1);
70 2 }
71 1 else
72 1 {
73 2 Wrcom(0xc0+line-1);
74 2 }
75 1
76 1 }
77
78
79 /****************************************void Disdatastring()********************************
80 该函数的作用是向LCD写入一串数据,并把数据串显示出来. 先行再列,列不能为0,行下边的为0
81 ********************************************************************************************/
82 void Dis_string(uchar line,uchar row,uchar dat[])
83 {
84 1 uchar com,*s;
85 1 s=dat;
86 1
87 1 if(line==1)
88 1 {
89 2 com=0x80+row-1; //把数据写到第一行
90 2 Wrcom(com);
91 2
92 2 while(*s!='@'&&com<=0x8f) //写入数据串
93 2 {
94 3 Disdata(*s);
95 3 com++;
96 3 s++;
97 3 }
98 2 }
99 1
100 1 else
101 1 {com=0xc0+row-1; //把数据写入第二行
102 2 Wrcom(com);
103 2
104 2 while(*s!='@'&&com<=0xcf) //写入数据串
105 2 {
106 3 Disdata(*s);
107 3 com++;
108 3 s++;
109 3 }
110 2 }
111 1 }
112
113
114
115
116
117 /****************************************void Disdatastring()********************************
C51 COMPILER V7.20 LCD1062 08/23/2007 23:01:48 PAGE 3
118 该函数的作用是向LCD写入一个浮点数,并把数据显示出来.
119 ********************************************************************************************/
120 void Dis_float(uchar line,uchar row,float dat)
121 {
122 1 uchar dat1[9],i=0,com;
123 1 uint temp1;
124 1 uint temp2;
125 1
126 1 if(dat>0)
127 1 {
128 2 dat1[0]='+';
129 2 temp2=((ulong)(dat*1000))%1000;
130 2 temp1=(uint)dat;
131 2 }
132 1
133 1 else
134 1 {
135 2 dat1[0]='-';
136 2 temp2=(ulong)(-dat*1000)%1000;
137 2 temp1=(uint)(-dat);
138 2 }
139 1
140 1 dat1[1]=(temp1/1000)%10+'0';
141 1 dat1[2]=(temp1/100)%10+'0';
142 1 dat1[3]=(temp1/10)%10+'0';
143 1 dat1[4]=temp1%10+'0';
144 1 dat1[5]='.';
145 1 dat1[6]=(temp2/100)%10+'0';
146 1 dat1[7]=(temp2/10)%10+'0';
147 1 dat1[8]=temp2%10+'0';
148 1
149 1 if(line==1)
150 1 {
151 2 com=0x80+row-1; //把数据写到第一行
152 2 Wrcom(com);
153 2
154 2 while(i<=8&&com<=0x8f) //写入数据串
155 2 {
156 3 Disdata(dat1[i]);
157 3 com++;
158 3 i++;
159 3 }
160 2 }
161 1
162 1 else
163 1 {
164 2 com=0xc0+row-1; //把数据写入第二行
165 2 Wrcom(com);
166 2
167 2 while(i<=8&&com<=0xcf) //写入数据串
168 2 {
169 3 Disdata(dat1[i]);
170 3 com++;
171 3 i++;
172 3 }
173 2 }
174 1
175 1 }
176
177
178
179 /****************************************void Disdatastring()********************************
C51 COMPILER V7.20 LCD1062 08/23/2007 23:01:48 PAGE 4
180 该函数的作用是向LCD写入一个8位的整数,并把数据显示出来.
181 ********************************************************************************************/
182 void Dis_char(uchar line,uchar row,char dat)
183 {
184 1 uchar dat1[4],i=0,com;
185 1 if(dat&0x80)
186 1 {
187 2 dat1[0]='-';
188 2 dat=~dat+1;
189 2 }
190 1 else
191 1 dat1[0]='+';
192 1
193 1 dat1[1]=dat/100+'0';
194 1 dat1[2]=(dat/10)%10+'0';
195 1 dat1[3]=dat%10+'0';
196 1
197 1 if(line==1)
198 1 {
199 2 com=0x80+row-1; //把数据写到第一行
200 2 Wrcom(com);
201 2
202 2 while(i<=3&&com<=0x8f) //写入数据串
203 2 {
204 3 Disdata(dat1[i]);
205 3 com++;
206 3 i++;
207 3 }
208 2 }
209 1
210 1 else
211 1 {
212 2 com=0xc0+row-1; //把数据写入第二行
213 2 Wrcom(com);
214 2
215 2 while(i<=3&&com<=0xcf) //写入数据串
216 2 {
217 3 Disdata(dat1[i]);
218 3 com++;
219 3 i++;
220 3 }
221 2 }
222 1
223 1 }
224
225
226 /****************************************void Disdatastring()********************************
227 该函数的作用是向LCD写入一个16位整数,并把数据显示出来.
228 ********************************************************************************************/
229 void Dis_int(uchar line,uchar row,int dat)
230 {
231 1 uchar dat1[6],i=0,com;
232 1 if(dat&0x8000)
233 1 {
234 2 dat1[0]='-';
235 2 dat=~dat+1;
236 2 }
237 1 else
238 1 dat1[0]='+';
239 1
240 1 dat1[1]=dat/10000+'0';
241 1 dat1[2]=(dat/1000)%10+'0';
C51 COMPILER V7.20 LCD1062 08/23/2007 23:01:48 PAGE 5
242 1 dat1[3]=(dat/100)%10+'0';
243 1 dat1[4]=(dat/10)%10+'0';
244 1 dat1[5]=dat%10+'0';
245 1
246 1 if(line==1)
247 1 {
248 2 com=0x80+row-1; //把数据写到第一行
249 2 Wrcom(com);
250 2
251 2 while(i<=5&&com<=0x8f) //写入数据串
252 2 {
253 3 Disdata(dat1[i]);
254 3 com++;
255 3 i++;
256 3 }
257 2 }
258 1
259 1 else
260 1 {
261 2 com=0xc0+row-1; //把数据写入第二行
262 2 Wrcom(com);
263 2
264 2 while(i<=5&&com<=0xcf) //写入数据串
265 2 {
266 3 Disdata(dat1[i]);
267 3 com++;
268 3 i++;
269 3 }
270 2 }
271 1
272 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 881 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 36
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 + -