📄 lcd12232.lst
字号:
C51 COMPILER V7.02a LCD12232 12/10/2008 20:34:03 PAGE 1
C51 COMPILER V7.02a, COMPILATION OF MODULE LCD12232
OBJECT MODULE PLACED IN lcd12232.OBJ
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE lcd12232.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include <intrins.h>
3 //#include <at89x51.h>
4
5 sbit LCD_RS=P1^0;//定义引脚
6 sbit LCD_RW=P1^1;
7 sbit LCD_E=P1^2;
8 #define LCD_Data P2
9 #define Busy 0x80 //用于检测LCD状态字中的Busy标识
10
11
12
13 void WriteDataLCD(unsigned char WDLCD);
14 void WriteCommandLCD(unsigned char WCLCD,BuysC);
15 unsigned char ReadDataLCD(void);
16 unsigned char ReadStatusLCD(void);
17 void LCDInit(void);
18 void LCDClear(void);
19 void LCDFlash(void);
20 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
21 void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
22 void DisplayImage (unsigned char code *DData);
23 void Delay5Ms(void);
24 void Delay400Ms(void);
25
26
27 code unsigned char uctech[] = {"51单片机学习网"};
28 code unsigned char net[] = {"www.lydz8.com"};
29 //----------------------------------------------------------------------------
30 code unsigned char tmp[]={//122*32点阵图形数据,林洋电子吧
31 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,
32 0x80,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
33 0x80,0x00,0x8F,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
34 0x80,0x03,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
35 0x80,0x01,0xFF,0xF8,0x00,0x10,0x80,0x20,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
36 0x80,0x01,0xFF,0xF0,0x80,0x10,0x83,0x24,0x02,0x01,0xFE,0x03,0xF0,0x00,0x00,0x40,
37 0x80,0x03,0xFF,0xF8,0x20,0x10,0x80,0x44,0x1F,0xE0,0x0C,0x3A,0x90,0x00,0x00,0x40,
38 0x80,0x03,0xFF,0xFC,0xE0,0x3F,0xF0,0x3B,0x12,0x20,0x30,0x2A,0x90,0x00,0x00,0x40,
39 0x80,0x0F,0xFF,0xFC,0x38,0x10,0xC2,0x08,0x12,0x20,0x20,0x2A,0x90,0x00,0x00,0x40,
40 0x80,0x0F,0xFC,0xAF,0x9E,0x1D,0xC1,0x7F,0x1F,0xE3,0xFF,0x2B,0xF0,0x00,0x00,0x40,
41 0x80,0x2F,0xF8,0x00,0x20,0x35,0xA0,0x08,0x12,0x20,0x20,0x2A,0x10,0x00,0x00,0x40,
42 0x80,0x03,0xF0,0x00,0x20,0x32,0x91,0x08,0x1F,0xE0,0x20,0x3A,0x00,0x38,0x00,0x40,
43 0x80,0x01,0xF0,0x01,0x00,0x16,0x91,0x7F,0x12,0x00,0x20,0x2A,0x00,0x30,0x00,0x40,
44 0x80,0x00,0x38,0x0C,0x00,0x10,0x82,0x08,0x02,0x10,0x20,0x02,0x10,0x20,0x00,0x40,
45 0x80,0x00,0x1F,0xE0,0x00,0x10,0x82,0x08,0x01,0xF0,0x60,0x01,0xF0,0x20,0x00,0x40,
46 0x80,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x40,
47 0x80,0x01,0xFB,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x60,0x40,
48 0x80,0x03,0xFF,0xE8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xF8,0x40,
49 0x80,0x01,0xDF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0xF8,0x40,
50 0x80,0x01,0xFF,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0xF8,0x40,
51 0x80,0x03,0xFD,0xFE,0x00,0x00,0x00,0x08,0x01,0x01,0x80,0x00,0x00,0x0D,0xF8,0x40,
52 0x80,0x05,0xF7,0xFF,0x80,0x00,0x00,0x08,0x01,0x02,0x40,0x00,0x00,0x27,0xF8,0x40,
53 0x80,0x07,0xFE,0xFE,0x83,0xDE,0xF0,0x09,0x27,0x3A,0x40,0x73,0x3E,0x61,0xF9,0x40,
54 0x80,0x07,0xEF,0x7B,0x03,0xDE,0xF0,0x08,0xC9,0x19,0x80,0x84,0xAA,0xE3,0xF9,0xC0,
55 0x80,0x0D,0xFF,0xBC,0x01,0x8C,0x60,0x08,0xC9,0x32,0x40,0x94,0xAA,0xE3,0xFC,0xC0,
C51 COMPILER V7.02a LCD12232 12/10/2008 20:34:03 PAGE 2
56 0x80,0x06,0xBF,0xF8,0x01,0x8C,0x62,0x08,0xC7,0x3B,0xC8,0x63,0x2A,0xE7,0xFD,0x40,
57 0x80,0xFF,0xFF,0xFD,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0xC7,0xFE,0x40,
58 0xDF,0xFF,0x7E,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC3,0xF8,0x40,
59 0xFF,0xF8,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xE0,0x40,
60 0xFF,0xE1,0xFF,0xF7,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,
61 0x80,0x01,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
62 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0};
63 //--------------------------------------------------------------------------
64
65 void main(void)
66 {
67 1 Delay400Ms(); //启动等待,等LCD讲入工作状态
68 1 LCDInit(); //LCM初始化
69 1 Delay5Ms(); //延时片刻(可不要)
70 1 while(1){
71 2 LCDClear();
72 2 DisplayImage(tmp);//显示图形
73 2 Delay400Ms();
74 2 Delay400Ms();
75 2 Delay400Ms();
76 2 Delay400Ms();
77 2 Delay400Ms();
78 2 Delay400Ms();
79 2 Delay400Ms();
80 2 LCDClear();
81 2 DisplayListChar(0, 0, uctech); //显示字库中的中文数字
82 2 DisplayListChar(0, 5, net); //显示字库中的中文数字
83 2 Delay400Ms();
84 2 Delay400Ms();
85 2 Delay400Ms();
86 2 Delay400Ms();
87 2 LCDFlash(); //闪烁效果
88 2 //}
89 2 }
90 1 }
91
92 //写数据
93 void WriteDataLCD(unsigned char WDLCD)
94 {
95 1 ReadStatusLCD(); //检测忙
96 1 LCD_RS = 1;
97 1 LCD_RW = 0;
98 1 LCD_Data = WDLCD;
99 1 LCD_E = 1;
100 1 LCD_E = 1;
101 1 LCD_E = 1;
102 1 LCD_E = 0;
103 1 }
104
105 //写指令
106 void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC为0时忽略忙检测
107 {
108 1 if (BuysC) ReadStatusLCD(); //根据需要检测忙
109 1 LCD_RS = 0;
110 1 LCD_RW = 0;
111 1 LCD_Data = WCLCD;
112 1 LCD_E = 1;
113 1 LCD_E = 1;
114 1 LCD_E = 1;
115 1 LCD_E = 0;
116 1 }
117
C51 COMPILER V7.02a LCD12232 12/10/2008 20:34:03 PAGE 3
118 //读数据
119 unsigned char ReadDataLCD(void)
120 {
121 1 LCD_RS = 1;
122 1 LCD_RW = 1;
123 1 LCD_E = 0;
124 1 LCD_E = 0;
125 1 LCD_E = 1;
126 1 return(LCD_Data);
127 1 }
128
129 //读状态
130 unsigned char ReadStatusLCD(void)
131 {
132 1 LCD_Data = 0xFF;
133 1 LCD_RS = 0;
134 1 LCD_RW = 1;
135 1 LCD_E = 1;
136 1 while (LCD_Data & Busy); //检测忙信号
137 1 LCD_E = 0;
138 1 return(LCD_Data);
139 1 }
140
141 void LCDInit(void) //LCM初始化
142 {
143 1 WriteCommandLCD(0x30,1); //显示模式设置,开始要求每次检测忙信号
144 1 WriteCommandLCD(0x01,1); //显示清屏
145 1 WriteCommandLCD(0x06,1); // 显示光标移动设置
146 1 WriteCommandLCD(0x0C,1); // 显示开及光标设置
147 1 }
148 void LCDClear(void) //清屏
149 {
150 1 WriteCommandLCD(0x01,1); //显示清屏
151 1 WriteCommandLCD(0x34,1); // 显示光标移动设置
152 1 WriteCommandLCD(0x30,1); // 显示开及光标设置
153 1 }
154 void LCDFlash(void) //闪烁效果
155 {
156 1 WriteCommandLCD(0x08,1); //显示清屏
157 1 Delay400Ms();
158 1 WriteCommandLCD(0x0c,1); // 显示开及光标设置
159 1 Delay400Ms();
160 1 WriteCommandLCD(0x08,1); //显示清屏
161 1 Delay400Ms();
162 1 WriteCommandLCD(0x0c,1); // 显示开及光标设置
163 1 Delay400Ms();
164 1 WriteCommandLCD(0x08,1); //显示清屏
165 1 Delay400Ms();
166 1 }
167 //按指定位置显示一个字符
168 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
169 {
170 1 Y &= 0x1;
171 1 X &= 0xF; //限制X不能大于15,Y不能大于1
172 1 if (Y) X |= 0x10; //当要显示第二行时地址码+0x10;
173 1 X |= 0x80; // 算出指令码
174 1 WriteCommandLCD(X, 0); //这里不检测忙信号,发送地址码
175 1 WriteDataLCD(DData);
176 1 }
177
178 //按指定位置显示一串字符
179 void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
C51 COMPILER V7.02a LCD12232 12/10/2008 20:34:03 PAGE 4
180 {
181 1 unsigned char ListLength,X2;
182 1 ListLength = 0;
183 1 X2=X;
184 1 Y &= 0x01;
185 1 X &= 0x0F; //限制X不能大于15,Y不能大于1
186 1 if (Y) X2 |= 0x10; //当要显示第二行时地址码+0x10;
187 1 X2 |= 0x80; // 算出指令码
188 1 WriteCommandLCD(X2, 1); //这里不检测忙信号,发送地址码
189 1 while (DData[ListLength]>=0x20) //若到达字串尾则退出
190 1 {
191 2 if (X <= 0x0F) //X坐标应小于0xF
192 2 {
193 3 WriteDataLCD(DData[ListLength]); //
194 3 ListLength++;
195 3 X++;
196 3 Delay5Ms();
197 3 }
198 2 }
199 1 }
200
201 //图形显示122*32
202 void DisplayImage (unsigned char code *DData){
203 1 unsigned char x,y;
204 1 for(x=0;x<32;x++){ //32行
205 2 WriteCommandLCD(0x34,1);
206 2 WriteCommandLCD((0x80+x),1);//列地址
207 2 WriteCommandLCD(0x80,1); //行地址
208 2 WriteCommandLCD(0x30,1);
209 2 for(y=0;y<16;y++)
210 2 WriteDataLCD(DData[x*16+y]);//读取数据写入LCD
211 2 }
212 1 WriteCommandLCD(0x36,1); //扩充功能设定
213 1 WriteCommandLCD(0x30,1);
214 1 }
215
216 //5ms延时
217 void Delay5Ms(void)
218 {
219 1 unsigned int TempCyc = 5552;
220 1 while(TempCyc--);
221 1 }
222
223 //400ms延时
224 void Delay400Ms(void)
225 {
226 1 unsigned char TempCycA = 5;
227 1 unsigned int TempCycB;
228 1 while(TempCycA--)
229 1 {
230 2 TempCycB=7269;
231 2 while(TempCycB--);
232 2 };
233 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 524 ----
CONSTANT SIZE = 541 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 11
C51 COMPILER V7.02a LCD12232 12/10/2008 20:34:03 PAGE 5
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 + -