📄 lcddev.lst
字号:
219 1 temp |= 0x04;
220 1 Lcd_writedatatocmd(WLCR,temp);
221 1 }
222 /*
223 函数名:void LCD_OFF(void)
224
225 */
226 //关显示
227 void LCD_OFF(void)
228 {
229 1 uchar temp;
230 1 temp = Lcd_readdatafromcmd(WLCR );
231 1 temp &= 0xFB;
232 1 Lcd_writedatatocmd(WLCR ,temp);
233 1 }
234
235 //设置光标位置
236 void LCD_GotoXY(uchar X1,uchar Y1)
237 {
238 1 Lcd_writedatatocmd(CURX,X1 & 0x3f);
239 1 Delay(2);
240 1 Lcd_writedatatocmd(CURY,Y1 & 0xff);
241 1 Delay(2);
C51 COMPILER V8.02 LCDDEV 04/21/2009 22:23:54 PAGE 5
242 1 }
243
244 //文字模式
245 void LCD_TEXT(void)
246 {
247 1 uchar temp;
248 1 temp = Lcd_readdatafromcmd(WLCR);
249 1 temp |= 0x08; //WLCR寄存器第3位
250 1 Lcd_writedatatocmd(WLCR,temp);
251 1 }
252
253
254 //绘图模式
255 void LCD_Graphic(void)
256 {
257 1 uchar temp;
258 1 temp = Lcd_readdatafromcmd(WLCR);
259 1 temp &= 0xf7; //改变WLCR第三位
260 1 Lcd_writedatatocmd(WLCR,temp);
261 1 }
262
263 //显示
264 void Access_2Page(void)
265 {
266 1 uchar temp;
267 1 temp = Lcd_readdatafromcmd(MAMR);
268 1 temp |= 0x03;//置位第 1 2 位,完成选择同时存取DDRAM1和DDRAM2
269 1 Lcd_writedatatocmd(MAMR,temp);
270 1 }
271
272 void Onlyshowpage1(void)
273 {
274 1 uchar temp;
275 1 temp = Lcd_readdatafromcmd(MAMR);
276 1 temp &= 0x9f;//清零第6 ,5位
277 1 temp |= 0x10;//置位第4位;完成在屏幕上只显示DDRAM1
278 1 Lcd_writedatatocmd(MAMR,temp);
279 1 }
280
281 void Lcd_stringwrite(uchar *pstr,uchar strlen,uchar DispMode)
282 {
283 1 uint i;
284 1 Lcd_ChkBusy();
285 1 //LcdDataPort_OutPut();
286 1 RS = 1;
287 1 RD = 1;
288 1 CS = 0;
289 1 Lcd_DataPort = MWCR; //从光标处写入内存指令
290 1 WR = 0; //写寄存器
291 1 Delay(5);
292 1 WR = 1;
293 1 CS = 1;
294 1 RS = 0;
295 1 CS = 0;
296 1 for(i=0; i<strlen; i++)
297 1 {
298 2 if(DispMode == 1)
299 2 Lcd_DataPort = ((*pstr++)); // 准备预写入显示内存的数据
300 2 else
301 2 Lcd_DataPort = (~(*pstr++)); // 准备预写入显示内存的数据
302 2 WR = 0; // "写"信号使能 开始写
303 2 Delay(2);
C51 COMPILER V8.02 LCDDEV 04/21/2009 22:23:54 PAGE 6
304 2 WR = 1; // "写"信号禁能
305 2 }
306 1
307 1 CS = 1;
308 1 RS = 1;
309 1 }
310
311
312 void ClearRam(void)
313 {
314 1 uchar temp0,temp1;
315 1
316 1 LCD_Graphic();
317 1 Access_2Page();
318 1 temp0 = Lcd_readdatafromcmd(FNCR);
319 1 temp0 |= 0x08; //
320 1 Lcd_writedatatocmd(FNCR,temp0); //开始清除内存
321 1
322 1 do //检测是否已经清除完
323 1 {
324 2 Delay(5);
325 2 temp1 =Lcd_readdatafromcmd(FNCR);
326 2 temp1 &= 0x08;
327 2 } while(temp1 );
328 1
329 1 }
330
331
332 void Lcd_clearscreen(void)
333 {
334 1 //LCD_TEXT();
335 1 Onlyshowpage1();
336 1 Lcd_writedatatocmd(PNTR,0x00);
337 1 ClearRam();
338 1 }
339
340 //初始化液晶寄存器
341 void IniLcd(void)
342 {
343 1 Lcd_writedatatocmd(WLCR,0X00);
344 1 Lcd_writedatatocmd(MISC,0x00);
345 1 Lcd_writedatatocmd(ADSR,0x00);
346 1 Lcd_writedatatocmd(INTR,0x00);
347 1 Lcd_writedatatocmd(WCCR,0x00);
348 1 Lcd_writedatatocmd(CHWI,0x00);
349 1 Lcd_writedatatocmd(MAMR,0x11);
350 1 Lcd_writedatatocmd(AWRR,0x27);
351 1 Lcd_writedatatocmd(DWWR,0x27);
352 1 Lcd_writedatatocmd(AWBR,0xEF);
353 1 Lcd_writedatatocmd(DWHR,0xEF);
354 1 Lcd_writedatatocmd(AWLR,0x00);
355 1 Lcd_writedatatocmd(AWTR,0x00);
356 1 Lcd_writedatatocmd(CURX,0x00);
357 1 Lcd_writedatatocmd(BGSG,0x00);
358 1 Lcd_writedatatocmd(EDSG,0x00);
359 1 Lcd_writedatatocmd(CURY,0x00);
360 1 Lcd_writedatatocmd(BGCM,0x00);
361 1 Lcd_writedatatocmd(EDCM,0x00);
362 1 Lcd_writedatatocmd(BTMR,0x00);
363 1 Lcd_writedatatocmd(ITCR,0x00);
364 1 Lcd_writedatatocmd(KSCR1,0x00);
365 1 Lcd_writedatatocmd(KSCR2,0x00);
C51 COMPILER V8.02 LCDDEV 04/21/2009 22:23:54 PAGE 7
366 1 Lcd_writedatatocmd(KSDR0,0x00);
367 1 Lcd_writedatatocmd(KSDR1,0x00);
368 1 Lcd_writedatatocmd(KSDR2,0x00);
369 1 Lcd_writedatatocmd(TPCR1,0x00);
370 1 Lcd_writedatatocmd(TPXR,0x00);
371 1 Lcd_writedatatocmd(TPYR,0x00);
372 1 Lcd_writedatatocmd(TPZR,0x00);
373 1 Lcd_writedatatocmd(TPCR2,0x00);
374 1 Lcd_writedatatocmd(PCR,0x00);
375 1 Lcd_writedatatocmd(PDCR,0x00);
376 1 Lcd_writedatatocmd(PNTR,0x00);
377 1 Lcd_writedatatocmd(FNCR,0X00);
378 1 Lcd_writedatatocmd(FVHT,0x00);
379 1 Lcd_clearscreen();//初始化LCD,选择只显示TXT格式,DDRAM1,自动清除DDRAM
380 1 //LCD_GotoXY(0x00,0x00);
381 1 }
382
383 void activewindow(uchar top,uchar button) //
384 {
385 1 Lcd_writedatatocmd(AWLR,0x00);//设置工作窗口左边界 要求AWLR<=AWRR
386 1 Lcd_writedatatocmd(AWRR,0x27);//设置工作窗口右边界 要求 <=0x27
387 1 Lcd_writedatatocmd(AWTR,top); //设置工作窗口上边界
388 1 Lcd_writedatatocmd(AWBR,button);//设置工作窗口下边界要求<=0xef
389 1
390 1 Lcd_writedatatocmd(DWWR,0x27);//设置显示窗口宽度
391 1 Lcd_writedatatocmd(DWHR,0xef);//设置显示窗口高度
392 1 }
393
394 /*
395 void Display(uchar top0,uchar button0,uchar Length,uchar *p)
396 */
397
398 void Display(uchar top0,uchar button0,uchar Length) //加个参数 uchar *p 就可以直接调用数组显示
399 {
400 1 uchar i,j;
401 1 uchar k=0;
402 1 for(i=0;i<=15;i++)
403 1 {
404 2 activewindow(top0,button0);//16各工作窗口 16路波形信号 每路波形占10各点高度
405 2 LCD_GotoXY(0x00,top0);
406 2 for(j=0;j<=Length;j++)
407 2 {
408 3 //LCD_GotoXY(0x00,top0);
409 3 Lcd_writedatatocmd(MWCR,k);
410 3 k=~k;
411 3 }
412 2 top0 += 0x0a;
413 2 button0 +=0x0a;
414 2 k=~k;
415 2
416 2 }
417 1 }
418
419 void Displaymygraph(uchar top1,uchar button1,uchar udata)
420 {
421 1 uchar i;
422 1 activewindow(top1,button1);
423 1 LCD_GotoXY(0x00,top1);
424 1 for(i=0;i<=20;i++)
425 1 {
426 2 Lcd_writedatatocmd(MWCR,udata);
427 2 }
C51 COMPILER V8.02 LCDDEV 04/21/2009 22:23:54 PAGE 8
428 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 887 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 8
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 + -