📄 digital-v-lcd-ok-11-17.lst
字号:
C51 COMPILER V8.08 DIGITAL_V_LCD_OK_11_17 11/17/2008 19:57:19 PAGE 4
180 1 writeCommand(0x0c);//设置显示状态:显示器开,有光标,关闪烁 writeCommand(0x0f)
181 1 //writeCommand(0x0c);writeCommand(0x0e)
182 1 writeCommand(0x06);
183 1 }
184
185 /**********************************************************
186 函数名称: display_xy
187 函数描述: LCD确定光标位置函数
188 入口参数: 列坐标x,行坐标y
189 **********************************************************/
190
191 void display_xy(uchar x,uchar y)
192 {
193 1 if(y==1) //若第二行则光标地址加0x80
194 1 x+=0x40;
195 1 x+=0x80;
196 1 writeCommand(x);
197 1 }
198
199 /**********************************************************
200 函数名称: display_char
201 函数描述: 显示字符函数
202 入口参数: 列坐标x,行坐标y,输入数据
203 **********************************************************/
204
205 void display_char(uchar x,uchar y,uchar inputData)
206 {
207 1 display_xy(x,y); //确定光标位置
208 1 writeData(inputData); //输入字符数据
209 1 }
210
211 /**********************************************************
212 函数名称: display_string
213 函数描述: 显示字符串函数
214 入口参数: 列坐标x,行坐标y,输入数据串
215 **********************************************************/
216
217 void display_string(uchar x,uchar y,uchar *stringData)
218 {
219 1 uchar columnCoordinate=x; //定义列坐标
220 1 uchar rowCoordinate=y; //定义行坐标
221 1
222 1 while(*stringData!='\0') //循环条件:字符串没有结束
223 1 {
224 2 display_char(columnCoordinate,rowCoordinate,*stringData);
225 2 columnCoordinate++;
226 2 stringData++;
227 2 /* if(*stringData==0x60) //设置是否回车显示
228 2 rowCoordinate++;
229 2 if(rowCoordinate==2)
230 2 rowCoordinate=0; */
231 2 if(columnCoordinate==16)
232 2 {
233 3 columnCoordinate=0;
234 3 rowCoordinate++;
235 3 if(rowCoordinate==2) //当前页面显示完,准备下一页显示
236 3 {
237 4 delay(400); //翻页速度
238 4 writeCommand(0x01); //显示完一页后清屏,下一页内容更新
239 4 rowCoordinate=0; //重新在第一行显示
240 4 }
241 3 }
C51 COMPILER V8.08 DIGITAL_V_LCD_OK_11_17 11/17/2008 19:57:19 PAGE 5
242 2 //writeCommand(0x01);
243 2 }
244 1
245 1 //一次显示结束
246 1 //delay(400);//停留时间,全部内容重新显示
247 1
248 1 }
249
250 //以上是TLC1602的驱动程序
251
252
253 /**********************************************************
254 函数名称:initialSerial
255 函数描述:串行口初始化
256 入口参数: 无
257 **********************************************************/
258
259 /*void initialSerial()
260 {
261 TMOD=0x20;
262 SCON=0x50;
263 TH1=0xfd;
264 TL1=0xfd;
265 TR1=1;
266 EA=1;
267 }
268
269 /**********************************************************
270 函数名称:serialSend
271 函数描述:串行口发送函数
272 入口参数: AD转换结果
273 **********************************************************/
274 /*void serialSend(uchar send[])
275 {
276 uchar i;
277 while(1) //设置发送的数组元素个数
278 {
279 SBUF=send[i];
280 while(!TI);
281 TI=0;
282 i++;
283 if(i==5)
284 break;
285 }
286 }
287
288 /**********************************************************
289 函数名称:T0interrupt
290 函数描述:T0定时函数,控制采样时刻
291 入口参数: 无
292 **********************************************************/
293 /*void T0interrupt() interrupt 1 using 1
294 {
295 uchar nCounter;
296 TH0=0x3C;
297 TL0=0XB0;
298 if(nCounter==INTERVAL)
299 {
300 nCounter=0;
301 ADFlag=1;
302 }
303 nCounter++;
C51 COMPILER V8.08 DIGITAL_V_LCD_OK_11_17 11/17/2008 19:57:19 PAGE 6
304
305 }
306
307
308 /**********************************************************
309 函数名称: main
310 函数描述:主函数
311 入口参数: 无
312 **********************************************************/
313
314 void main(void)
315 {
316 1 uint adData,adResult;
317 1 uchar hundredBit,tenBit,oneBit;
318 1 uchar dataString[6]; //转换结果数据
319 1 uchar inputdata[]="The Voltage is:";//待显示的内容
320 1 delay(100); //等待LCD进入工作状态
321 1 initialLcd1602();
322 1 //initialSerial();
323 1 //循环显示内容
324 1 while(1)
325 1 {
326 2
327 2 display_string(0,0,inputdata); //起始显示位置
328 2 adResult=adConvert(0);
329 2 adData=adResult*1.0/4096*500; //设置精度为0.01,AD参考电压为5V
330 2 oneBit=adData%10; //个位数
331 2 tenBit=(adData/10)%10; //十位数
332 2 hundredBit=(adData/100)%10; // 百位数
333 2
334 2 dataString[0]=hundredBit+0x30;
335 2 dataString[1]=0x2E;//设置小数点
336 2 dataString[2]=tenBit+0x30;
337 2 dataString[3]=oneBit+0x30;
338 2 dataString[4]=0x56; //设置'V'
339 2 //以上为对AD转换数据的处理
340 2
341 2 display_string(6,1,dataString);
342 2 delay(100); //避免CPU时刻扫描LCD
343 2 // serialSend(dataString);
344 2
345 2 }
346 1 }
347
348
349
350
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 476 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 34
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 + -