📄 lcd12864.lst
字号:
C51 COMPILER V7.50 LCD12864 12/12/2008 21:32:05 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD12864
OBJECT MODULE PLACED IN lcd12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd12864.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 ***************************************************************************
3 *
4 * (C) Copyright 2007,单片机初学者园地
5 * All Rights reserved.
6 *
7 *项目名称: 51单片机学习开发系统
8 *
9 *本文件名称:LCD12864.c
10 *
11 * 完成作者 : 单片机初学者 http://blog.ednchina.com/ahai0306/
12 * 当前版本 : V1.0
13 * 完成日期 : 2007年4月1日
14 * 描 述 :
15 * 此程序实现,完成12864液晶(ST790)的驱动程序,可以显示任意的ASCII字符和中文字符
16 *
17 *
18 ****************************************************************************
19 */
20
21 #include "Lcd12864.h"
22 #include <INTRINS.H>
23
24
25 sbit EN=P3^4;
26 sbit RW=P3^6;
27 sbit RS=P3^7;
28 sbit Lcd_RST=P0^3;
29
30
31
32 #define NOP _nop_(); _nop_()
33
34 void delay(uint16 data i)
35 {
36 1 while(i--);
37 1 }
38
39 uint8 CheckBusy(void)
40 {
41 1 uint8 a;
42 1 RS=0;
43 1 RW=1;
44 1 NOP;
45 1 EN=1;
46 1 NOP;
47 1 P2=0xff;
48 1 a=P2;
49 1 EN=0;
50 1 if(a&0x80)
51 1 return OK;
52 1 else
53 1 return NOK;
54 1 }
55 void SendLcdCommand (uint8 command)
C51 COMPILER V7.50 LCD12864 12/12/2008 21:32:05 PAGE 2
56 {
57 1 NOP;NOP;
58 1
59 1 // delay(500);
60 1 while(CheckBusy());
61 1 RS=0;
62 1 RW=0;
63 1 P2=command;
64 1 EN=1;
65 1 NOP;NOP;
66 1 EN=0;
67 1 }
68
69 void SendLcdData (uint8 dat)
70 {
71 1 NOP;NOP;
72 1 while(CheckBusy());
73 1 // delay(500);
74 1 RS=1;
75 1 RW=0;
76 1 P2=dat;
77 1 EN=1;
78 1 NOP;NOP;
79 1 EN=0;
80 1 }
81
82 void LCD_init(void)
83 {
84 1 Lcd_RST = 0;
85 1 delay(5000);
86 1 Lcd_RST = 1;
87 1 delay(500);
88 1
89 1 SendLcdCommand(0x34);//扩充指令操作
90 1 SendLcdCommand(0x30);//基本指令操作
91 1 SendLcdCommand(0x01);//清除显示
92 1 SendLcdCommand(0x06);//指定在资料写入或读取时,光标的移动方向
93 1 SendLcdCommand(0x0c);//开显示,关光标,不闪烁
94 1 }
95
96 void Clear_display(void)
97 {
98 1 SendLcdCommand(0x01);//清除显示
99 1 }
100
101 void Disp_lcd( uint8 x, uint8 y, uint8 *chinese )
102 {
103 1 uint8 xtemp;;
104 1 switch(x)
105 1 {
106 2 case 0: xtemp=0x80+y; break;
107 2 case 1: xtemp=0x90+y; break;
108 2 case 2: xtemp=0x88+y; break;
109 2 case 3: xtemp=0x98+y; break;
110 2 default:break;
111 2 }
112 1 // xtemp== x%2*0x10 + x/2*0x08 + y + 0x80;
113 1 SendLcdCommand(xtemp);
114 1 do
115 1 {
116 2 SendLcdData(*chinese);
117 2 chinese++;
C51 COMPILER V7.50 LCD12864 12/12/2008 21:32:05 PAGE 3
118 2 }while(*chinese!=0);
119 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 201 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -