📄 12864a-3.lst
字号:
C51 COMPILER V6.12 12864A_3 01/04/2002 01:54:59 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE 12864A_3
OBJECT MODULE PLACED IN .\12864A-3.OBJ
COMPILER INVOKED BY: D:\keil c\C51\BIN\C51.EXE .\12864A-3.c DEBUG OBJECTEXTEND
stmt level source
1 /*******************************************************************/
2 /* */
3 /* 51单片机演示程序 - 128*64LCD显示 */
4 /* */
5 /* LCD型号:带汉字库)或兼容型号 控制器ST7920 */
6 /* MCU:STC89C52 ,晶体频率:11.0592MHz */
7 /* 丫丫设计屋 */
8 /* 邮箱: zhaopingyong@yahoo.cn */
9 /* 网站: */
10 /* */
-
11 /* */
12 /*******************************************************************/
13
14 #include"AT89x52.h"
15 #include"intrins.h"
16
17 #define uchar unsigned char
18 #define uint unsigned int
19 /* 端口定义*/
20 #define LCD_data P0 //数据口
21 sbit LCD_RS = P2^4; //寄存器选择输入
22 sbit LCD_RW = P2^3; //液晶读/写控制
23 sbit LCD_EN = P2^2; //液晶使能控制
24 sbit LCD_RST = P2^7; //液晶复位
25 sbit LCD_PSB = P2^5; //液晶并/串选择
26
27 sbit DUAN=P2^0; //74HC573的LE端 U5 LED的段选端
28 sbit WEI=P2^1; //74HC573的LE端 U4 LED的位选端
29
30 uchar code dis1[] = {" 丫丫设计屋"};
31 uchar code dis2[] = {" QQ:794652574"};
32 uchar code dis3[] = {"多功能--学习板"};
33 uchar code dis4[] = {"学单片机的好帮手"};
34
35 #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
36 void delay0(uchar x); //x*0.14MS
37 void beep();
38 void dataconv();
39 void lcd_pos(uchar X,uchar Y); //确定显示位置
40 /*******************************************************************/
41 /* */
42 /* 数码管位选控制函数 */
43 /* */
44 /*******************************************************************/
45 void wei_1()
46 {
47 1 WEI=1;
48 1 P0=0;
49 1 WEI=0;
50 1 }
51 /*******************************************************************/
52 /* */
53 /* 数码管段选控制函数 */
54 /* */
C51 COMPILER V6.12 12864A_3 01/04/2002 01:54:59 PAGE 2
55 /*******************************************************************/
56 void duan_1()
57 {
58 1 DUAN=1;
59 1 P0=0;
60 1 DUAN=0;
61 1 }
62 /*******************************************************************/
63 /* */
64 /* 延时函数 */
65 /* */
66 /*******************************************************************/
67 void delay(int ms)
68 {
69 1 while(ms--)
70 1 {
71 2 uchar i;
72 2 for(i=0;i<250;i++)
73 2 {
74 3 _nop_();
75 3 _nop_();
76 3 _nop_();
77 3 _nop_();
78 3 }
79 2 }
80 1 }
81 /*******************************************************************/
82 /* */
83 /*检查LCD忙状态 */
84 /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */
85 /* */
86 /*******************************************************************/
87 bit lcd_busy()
88 {
89 1 bit result;
90 1 LCD_RS = 0;
91 1 LCD_RW = 1;
92 1 LCD_EN = 1;
93 1 delayNOP();
94 1 result = (bit)(P0&0x80);
95 1 LCD_EN = 0;
96 1 return(result);
97 1 }
98 /*******************************************************************/
99 /* */
100 /*写指令数据到LCD */
101 /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */
102 /* */
103 /*******************************************************************/
104 void lcd_wcmd(uchar cmd)
105 {
106 1 while(lcd_busy());
107 1 LCD_RS = 0;
108 1 LCD_RW = 0;
109 1 LCD_EN = 0;
110 1 _nop_();
111 1 _nop_();
112 1 P0 = cmd;
113 1 delayNOP();
114 1 LCD_EN = 1;
115 1 delayNOP();
116 1 LCD_EN = 0;
C51 COMPILER V6.12 12864A_3 01/04/2002 01:54:59 PAGE 3
117 1 }
118 /*******************************************************************/
119 /* */
120 /*写显示数据到LCD */
121 /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */
122 /* */
123 /*******************************************************************/
124 void lcd_wdat(uchar dat)
125 {
126 1 while(lcd_busy());
127 1 LCD_RS = 1;
128 1 LCD_RW = 0;
129 1 LCD_EN = 0;
130 1 P0 = dat;
131 1 delayNOP();
132 1 LCD_EN = 1;
133 1 delayNOP();
134 1 LCD_EN = 0;
135 1 }
136 /*******************************************************************/
137 /* */
138 /* LCD初始化设定 */
139 /* */
140 /*******************************************************************/
141 void lcd_init()
142 {
143 1 wei_1();
144 1 duan_1();
145 1 LCD_RST=0;
146 1 delay(1);
147 1 LCD_RST=1;
148 1 LCD_PSB=1;
149 1 delay(10);
150 1 lcd_wcmd(0x34); //扩充指令操作
151 1 delay(5);
152 1 lcd_wcmd(0x30); //基本指令操作
153 1 delay(5);
154 1 lcd_wcmd(0x0C); //显示开,关光标
155 1 delay(5);
156 1 lcd_wcmd(0x01); //清除LCD的显示内容
157 1 delay(5);
158 1 }
159 /*********************************************************/
160 /* */
161 /* 主程序 */
162 /* */
163 /*********************************************************/
164 main()
165 {
166 1 uchar i;
167 1 delay(10); //延时
168 1
169 1 lcd_init(); //初始化LCD
170 1
171 1 lcd_pos(0,0); //设置显示位置为第一行的第1个字符
172 1 i = 0;
173 1 while(dis1[i] != '\0')
174 1 { //显示字符
175 2 lcd_wdat(dis1[i]);
176 2 i++;
177 2 }
178 1 lcd_pos(1,0); //设置显示位置为第二行的第1个字符
C51 COMPILER V6.12 12864A_3 01/04/2002 01:54:59 PAGE 4
179 1 i = 0;
180 1 while(dis2[i] != '\0')
181 1 {
182 2 lcd_wdat(dis2[i]); //显示字符
183 2 i++;
184 2 }
185 1 lcd_pos(2,0); //设置显示位置为第三行的第1个字符
186 1 i = 0;
187 1 while(dis3[i] != '\0')
188 1 {
189 2 lcd_wdat(dis3[i]); //显示字符
190 2 i++;
191 2 }
192 1 lcd_pos(3,0); //设置显示位置为第四行的第1个字符
193 1 i = 0;
194 1 while(dis4[i] != '\0')
195 1 {
196 2 lcd_wdat(dis4[i]); //显示字符
197 2 i++;
198 2 }
199 1 while(1);
200 1 }
201
202
203
204 /*********************************************************/
205 /* */
206 /* 延时x*0.14ms子程序 */
207 /* */
208 /*********************************************************/
209
210 void delay0(uchar x) //x*0.14MS
211 {
212 1 uchar i;
213 1 while(x--)
214 1 {
215 2 for (i = 0; i<13; i++) {}
216 2 }
217 1 }
218 /*********************************************************/
219 /* */
220 /* 设定显示位置 */
221 /* */
222 /*********************************************************/
223 void lcd_pos(uchar X,uchar Y)
224 {
225 1 uchar pos;
226 1 if (X==0)
227 1 {X=0x80;}
228 1 else if (X==1)
229 1 {X=0x90;}
230 1 else if (X==2)
231 1 {X=0x88;}
232 1 else if (X==3)
233 1 {X=0x98;}
234 1 pos = X+Y ;
235 1 lcd_wcmd(pos); //显示地址
236 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 346 ----
C51 COMPILER V6.12 12864A_3 01/04/2002 01:54:59 PAGE 5
CONSTANT SIZE = 63 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
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 + -