📄 lce128642.lst
字号:
C51 COMPILER V6.12 LCE128642 04/27/2007 18:12:05 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE LCE128642
OBJECT MODULE PLACED IN .\lce128642.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\lce128642.c DEBUG OBJECTEXTEND CODE SYMBOLS
stmt level source
1 //Lcm.c
2 //
3 //Body: HT48C30-1
4 //Mask option
5 //BZ/BZB : All Disable
6 //the others use the default value
7
8 #include <reg52.h>
9 #include <INTRINS.H>
10 #define Uchar unsigned char
11 #define Uint unsigned int
12 #define Datalcm P2
13 #define cotr P3
14
15 sbit Elcm= P3^0;
16 sbit Rwlcm= P3^1;
17 sbit Dilcm= P3^2;
18 sbit CS2LCM= P3^3;
19 sbit CS1LCM= P3^4;
20
21 //#pragma vector isr_4 @ 0x4
22 //#pragma vector isr_8 @ 0x8
23 //#pragma vector isr_c @ 0xc
24
25 //ISR for safequard
26 ///void isr_4(){} // external ISR
27 //void isr_8(){}// timer/event 0
28 //void isr_c(){} // timer/event 1
29
30 //initialize registers for safeguard
31 //void safeguard_init(){
32 // _intc = 0;
33 _//tmrc = 0;
34 //tmr = 0;
35 //_pac = 0xff; //input mode
36 //_pbc = 0xff;
37 //_pcc = 0x00;
38 //}
39
40 //#define FOUR_BIT
41 //#define ONE_LINE
42
43
44
45
46
47
48 #define DISPON 0x3f /*显示on */
49 #define DISPOFF 0x3e /*显示off */
50 #define DISPFIRST 0xc0 /*显示起始行定义 */
51 #define SETX 0x40 /*X定位设定指令(页) */
52 #define SETY 0xb8 /*Y定位设定指令(列) */
53 #define Lcdbusy 0x80 /*LCM忙判断位 */
54
55 /**************显示分区边界位置*****************/
C51 COMPILER V6.12 LCE128642 04/27/2007 18:12:05 PAGE 2
56 #define MODL 0x00 /*左区 */
57
58 #define MODR 0x40 /*中区和右区分界 */
59 #define LCMLIMIT 0x80 /*显示区的右边界 */
60
61
62 ;void compute(Uchar *shuzhu,char);
63 void Lcminit(void); /*液晶模块初始化 */
64 void Delay(Uchar); /*延时,入口数为Ms */
65 void lcdbusyL(void); /*busy判断、等待(左区) */
66
67 void lcdbusyR(void); /*busy判断、等待(右区) */
68 void Putedot(Uchar); /*半角字符输出 */
69 void Putcdot(Uchar); /*全角(汉字)输出 */
70 void Wrdata(Uchar); /*数据输出给LCM */
71 void Lcmcls( void ); /*LCM全屏幕清零(填充0) */
72 void wtcom(void); /*公用busy等待 */
73 void Locatexy(void); /*光标定位 */
74 void WrcmdL(Uchar); /*左区命令输出 */
75
76 void WrcmdR(Uchar); /*右区命令输出 */
77 void Putstr(Uchar *puts,Uchar i); /*中英文字符串输出 */
78 void Rollscreen(Uchar x); /*屏幕向上滚动演示 */
79 void Rddata(void); /* 从液晶片上读数据 */
80 void point(void); /*打点 */
81 void Linexy(Uchar endx,Uchar endy);
82
83 void display(void);
84 /*数组列表*/
85 char code Ezk[]={
86
87
88 /*-文字:0--0x30 */
89 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
90 0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
91 /*-文字:1--0x31 */
92 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,
93 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
94 /*-文字:2--0x32 */
95 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,
96 0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
97 /*-文字:3--0x33 */
98 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,
99 0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
100 /*-文字:4--0x34 */
101 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,
102 0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
103 /*-文字:5--0x35 */
104 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,
105 0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
106 /*-文字:6--0x36 */
107 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,
108 0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
109 /*-文字:7--0x37 */
110 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,
111 0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
112 /*-文字:8--0x38 */
113 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,
114 0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
115 /*-文字:9--0x39 */
116 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
117 0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
C51 COMPILER V6.12 LCE128642 04/27/2007 18:12:05 PAGE 3
118 /*-文字::-- */
119 0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,
120 0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,
121 /*-文字:.--0x2e */
122 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
123 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
124
125 }; /*ASCII常规字符点阵码表 */
126
127 /****************************************/
128 /* 定义ASCII字库8列*16行 */
129 /****************************************/
130
131
132 Uchar code Hzk[]={
133 0x00,0x3E,0x22,0xE2,0x22,0x3E,0x00,0xFE,//"距",
134 0x22,0x22,0x22,0x22,0xF3,0x22,0x00,0x00,
135 0x20,0x7F,0x20,0x3F,0x12,0x12,0x00,0x7F,
136 0x42,0x42,0x42,0x42,0x47,0x60,0x40,0x00,
137
138 0x04,0x04,0x04,0xF4,0x04,0x8C,0x55,0x26,//"离",
139 0x54,0x8C,0x04,0xF4,0x04,0x06,0x04,0x00,
140 0x00,0xFC,0x04,0x05,0x25,0x35,0x2D,0x27,
141 0x25,0x35,0x25,0x45,0x84,0x7E,0x04,0x00,
142
143
144 0x00,0x00,0xFC,0x24,0x24,0x24,0x24,0x24,//"后",
145 0x24,0x22,0x22,0x23,0xA2,0x30,0x20,0x00,
146 0x40,0x30,0x0F,0x00,0x00,0xFF,0x41,0x41,
147 0x41,0x41,0x41,0x41,0xFF,0x01,0x00,0x00,
148
149
150 0x08,0x08,0x08,0x08,0x88,0x78,0x0F,0x08,//"左",
151 0x08,0x08,0x08,0x88,0x0C,0x08,0x00,0x00,
152 0x20,0x50,0x48,0x46,0x41,0x41,0x41,0x41,
153 0x7F,0x41,0x41,0x41,0x41,0x60,0x40,0x00,
154
155
156
157
158 0x08,0x08,0x08,0x08,0xC8,0x38,0x0F,0x08,//"右",
159 0x08,0x08,0x08,0x08,0x88,0x0C,0x08,0x00,
160 0x08,0x04,0x02,0x01,0xFF,0x41,0x41,0x41,
161 0x41,0x41,0x41,0x41,0xFF,0x01,0x00,0x00,
162
163
164 0x10,0x10,0x10,0x10,0x10,0xF1,0x92,0x96,// "方",
165 0x90,0x90,0x90,0xD0,0x90,0x18,0x10,0x00,
166 0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x00,
167 0x40,0x80,0x40,0x3F,0x00,0x00,0x00,0x00
168 };
169 /*自用汉字点阵码表 */
170
171 char dot2[]=10;
172
173 Uchar disdatahou[4];//="20.0"; /*自定义字符串 */
174 Uchar disdatayou[4];//="05.0";
175 Uchar disdatazuo[4];//="05.0";
176
177 Uchar datahou=211;
178 Uchar datayou=55;
179 Uchar datazuo=50;
C51 COMPILER V6.12 LCE128642 04/27/2007 18:12:05 PAGE 4
180
181 Uchar dir;//pian duan fang xiang
182
183 //Uchar STRhh[];
184 //Uchar STRh1[];
185 //Uchar STRh2[];
186 //Uchar STRh3[];
187 //Uchar num[];
188
189 /********************************/
190 /* 演示主程序 */
191 /********************************/
192 Uchar col;
193 Uchar row;
194 Uchar cbyte; /*列x,行(页)y,输出数据 */
195 Uchar hou,zuo,you;
196 bit xy; /*画线方向标志:1水平 */
197
198 void main(void)
199
200 {
201 1 //Uchar x,y;
202 1 col=0;
203 1 row=0;
204 1 Delay(40); /*延时大约40Ms,等待外设准备好 */
205 1 Lcminit(); /*液晶模块初始化,包括全屏幕清屏*/
206 1
207 1
208 1 while(1){
209 2 display();
210 2 }
211 1
212 1
213 1
214 1 }
215
216
217
218
219
220 /****************************************/
221 /* 画点 */
222 /****************************************/
223
224 void point(void)
225 {
226 1 Uchar x1,y1,x,y;
227 1 x1=col;
228 1 y1=row;
229 1 row=y1>>3; /*取Y方向分页地址 */
230 1 Rddata();
231 1 y=y1&0x07; /*字节内位置计算 */
232 1 x=0x01;
233 1 x=x<<y; /*移入所画点 */
234 1 Wrdata(cbyte|x); /*画上屏幕 */
235 1 col=x1; /*恢复xy坐标 */
236 1 row=y1;
237 1 }
238
239 /****************************************/
240 /* 屏幕滚动定位 */
241 /****************************************/
C51 COMPILER V6.12 LCE128642 04/27/2007 18:12:05 PAGE 5
242 void Rollscreen(Uchar x)
243 {
244 1 cbyte = DISPFIRST|x; /*定义显示起始行为x?*/
245 1 WrcmdL(cbyte);
246 1
247 1 WrcmdR(cbyte);
248 1 }
249
250 /****************************************/
251 /* 一个字串的输出 */
252 /****************************************/
253 void Putstr(Uchar *puts,Uchar i)
254 {
255 1 Uchar j,X;
256 1 for (j=0;j<i;j++)
257 1 {
258 2 X = puts[j];
259 2 if (X&0x80)
260 2 {
261 3 Putcdot(X&0x7f); /*只保留低7位*/
262 3 }
263 2 else Putedot(X); /*ascii码表从0x20开始*/
264 2 //else Putedot(X);
265 2 }
266 1 }
267
268 /****************************************/
269 /* 半角字符点阵码数据输出 */
270 /****************************************/
271 void Putedot(Uchar Order)
272 {
273 1 Uchar i,bakerx,bakery; /*共定义4个局部变量 */
274 1 int x; /*偏移量,字符量少的可以定义为UCHAR */
275 1 bakerx = col; /*暂存x,y坐标,已备下半个字符使用 */
276 1 bakery = row;
277 1 x=Order * 0x10; /*半角字符,每个字符16字节 */
278 1 /*上半个字符输出,8列 */
279 1 for(i=0;i<8;i++)
280 1 {
281 2 cbyte = Ezk[x]; /*取点阵码,rom数组 */
282 2 Wrdata(cbyte); /*写输出一字节 */
283 2 x++;
284 2 col++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -