📄 lcd.lst
字号:
170 { uchar x1,y1,x,y;
171 1 WR_rowcol(posx,posy);
172 1 x1=col;
173 1 y1=row;
174 1 row=y1>>3; /*取Y方向分页地址*/
175 1 Rddata();
176 1 y=y1&0x07; /*字节内位置计算*/
177 1 x=0x01;
178 1 x=x<<y; /*移入所画点*/
C51 COMPILER V7.06 LCD 04/02/2007 15:23:04 PAGE 4
179 1 Wrdata(cbyte|x); /*画上屏幕*/
180 1 col=x1; /*恢复xy坐标*/
181 1 row=y1;
182 1 }
183
184 /**************************************屏幕滚动定位*************************************/
185 void Rollscreen(uchar x)
186 {
187 1 cbyte = DISPFIRST|x; /*定义显示起始行为x?*/
188 1 WrcmdL(cbyte);
189 1 WrcmdR(cbyte);
190 1 }
191
192 /**************************************一个字串的输出***********************************/
193 void Putstr(uchar posx,uchar posy,uchar *puts,uchar i)
194 { uchar j,X;
195 1 WR_rowcol(posx,posy);
196 1 for (j=0;j<i;j++)
197 1 {
198 2 X = puts[j];
199 2 if (X&0x80)
200 2 {
201 3 Putcdot(X&0x7f);/*只保留低7位*/
202 3 }
203 2 else Putedot(X-0x20); /*ascii码表从0x20开始*/
204 2 }
205 1 }
206
207 /*********************************半角字符点阵码数据输出********************************/
208 void Putedot(uchar Order)
209 {
210 1 uchar i,bakerx,bakery; /*共定义4个局部变量*/
211 1 int x; /*偏移量,字符量少的可以定义为UCHAR */
212 1 bakerx = col; /*暂存x,y坐标,已备下半个字符使用*/
213 1 bakery = row;
214 1 x=Order * 0x10; /*半角字符,每个字符16字节*/
215 1 /*上半个字符输出,8列*/
216 1 for(i=0;i<8;i++)
217 1 {
218 2 cbyte = Ezk[x]; /*取点阵码,rom数组*/
219 2 Wrdata(cbyte); /*写输出一字节*/
220 2 x++;
221 2 col++;
222 2 if (col==LCDLIMIT){col=0;row++;row++;}; /*下一列,如果列越界换行*/
223 2 if (row>7) row=0; /*如果行越界,返回首行*/
224 2 } /*上半个字符输出结束*/
225 1 col = bakerx; /*列对齐*/
226 1 row = bakery+1; /*指向下半个字符行*/
227 1 /*下半个字符输出,8列*/
228 1 for(i=0;i<8;i++)
229 1 {
230 2 cbyte = Ezk[x]; /*取点阵码*/
231 2 Wrdata(cbyte); /*写输出一字节*/
232 2 x++;
233 2 col++;
234 2 if (col==LCDLIMIT){col=0;row=row+2;}; /*下一列,如果列越界换行*/
235 2 if (row>7) row=1; /*如果行越界,返回首行*/
236 2 } /*下半个字符输出结束*/
237 1 row=bakery;
238 1 } /*整个字符输出结束*/
239
240 /*********************************全角字符点阵码数据输出********************************/
C51 COMPILER V7.06 LCD 04/02/2007 15:23:04 PAGE 5
241 void Putcdot(uchar Order)
242 {
243 1 uchar i,bakerx,bakery; /*共定义3个局部变量*/
244 1 int x; /*偏移量,字符量少的可以定义为UCHAR */
245 1 bakerx = col; /*暂存x,y坐标,已备下半个字符使用*/
246 1 bakery = row;
247 1 x=Order * 0x20; /*每个字符32字节*/
248 1 /*上半个字符输出,16列*/
249 1 for(i=0;i<16;i++)
250 1 {
251 2 Wrdata(Hzk[x]); /*写输出一字节*/
252 2 x++;
253 2 col++;
254 2 if (col==LCDLIMIT){ col=0;row++;row++;} /*下一列,如果列越界换行*/
255 2 if (row>6) row=0; /*如果行越界,返回首行*/
256 2 } /*上半个字符输出结束*/
257 1 /*下半个字符输出,16列 */
258 1 col = bakerx;
259 1 row = bakery+1;
260 1 for(i=0;i<16;i++) /*下半部分*/
261 1 {
262 2 Wrdata(Hzk[x]);
263 2 x++;
264 2 col++;
265 2 if (col==LCDLIMIT){col=0;row++;row++;} /*下一列,如果列越界换行*/
266 2 if (row>7) row=1; /*如果行越界,返回首行*/
267 2 } /*下半个字符输出结束*/
268 1 row = bakery;
269 1 } /*整个字符输出结束*/
270
271 /***************************从液晶片上读数据,保留在全局变量中***************************/
272 void Rddata(void)
273 {
274 1 Locatexy(); /*坐标定位,返回时保留分区状态不变*/
275 1 Data=0xFF;
276 1 RS = 1; /*数据*/
277 1 RW = 1; /*读数据*/
278 1 E = 1; /*读入到LCM*/
279 1 _nop_();
280 1 cbyte = Data; /*虚读一次*/
281 1 E= 0;
282 1 Locatexy(); /*坐标定位,返回时保留分区状态不变*/
283 1 Data=0xFF;
284 1 _nop_();
285 1 RS = 1; /*数据*/
286 1 RW = 1; /*读数据*/
287 1 E = 1; /*读入到LCM*/
288 1 _nop_();
289 1 cbyte = Data; /*从数据口读数据,真读*/
290 1 E= 0;
291 1 }
292
293 /****************************************延时*******************************************/
294 void Delay(uchar nMS)
295 {
296 1 uchar us,usn;
297 1 while(nMS!=0)
298 1 { usn = 4;
299 2 while(usn!=0)
300 2 {
301 3 us=0xf0;
302 3 while (us!=0){us--;};
C51 COMPILER V7.06 LCD 04/02/2007 15:23:04 PAGE 6
303 3 usn--;
304 3 }
305 2 nMS--;
306 2 }
307 1 }
308
309 /************************************定义字符串数组*************************************/
310 uchar code STR1[]=" ^_^FEDLT";
311 uchar code STR2[]="QQ :12345678";
312 uchar code STR3[]="TEL:13612345678";
313 uchar code STR4[]=" Welcome you!";
314 uchar code STR5[]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e};
315 /************************************定义中文字库***************************************/
316 /*0x80为列表中第一个汉字,0x81为第二个(在Hzk表中我删除了),汉字最高位为1,所有
317 最小从0x80开始而不是从0x00开始最多可制表到0xff那么多个汉字*/
318
319 uchar code Hzk[]={
320 0x40, 0x40, 0x40, 0x5f, 0xd1, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x5f, 0x40, 0x40, 0x40, 0x00, /*号*/
321 0x00, 0x00, 0x00, 0x02, 0x07, 0x02, 0x02, 0x22, 0x42, 0x82, 0x42, 0x3e, 0x00, 0x00, 0x00, 0x00,
322
323 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0xff, 0x08, 0x08, 0x08, 0x08,0x08, 0xfc, 0x08, 0x00,
324 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0x01, 0x01, 0x01, 0x01,0x08, 0x03, 0x00, 0x00,
325
326 0x00, 0xfe, 0x02, 0x0a, 0x8a, 0x8a, 0x8a, 0xfa, 0x8a, 0x8a, 0x8a, 0x0a, 0x02, 0xfe, 0x00, 0x00,
327 0x00, 0xff, 0x40, 0x48, 0x48, 0x48, 0x48, 0x4f, 0x48, 0x49, 0x4e, 0x48, 0x40, 0xff, 0x00, 0x00,
328
329 0x00, 0x07, 0x00, 0x08, 0x00, 0x60, 0x03, 0x00, 0x00,0x00,0x02,0x04,0x02,0x46,0x02,0x46,
330 0x02,0x40,0x02,0x50,0x02,0x03,0x02,0x00,0x02,0x00,0x02,0x40,0x02,0x04,0x02,0x04,
331 0xFF,0xE0,0x00,0x10,0x00,0x0E,0x00,0x01,0x00,0x00,0xE4,0x00,0xA4,0xC2,0x28,0x8E,
332 0x00,0x84,0x00,0x06,0xE7,0x80,0x7E,0x00,0x7C,0x20,0xC7,0x24,0x03,0xA0,0x05,0xE4,
333 0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,
334 0x40,0x00,0x40,0x00,0x40,0x01,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x01,0x40,0x03,
335 0x00,0x00,0x04,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0E,0x00,0x0D,0xC0,0x0F,0x80,
336 0x1F,0x00,0x78,0x00,0xF7,0x80,0x1F,0xC0,0x31,0x80,0xF3,0x00,0xF6,0x00,0x7C,0x00,
337 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x1C,0x04,0x3E,0x06,0x7C,
338 0x07,0xC0,0x1E,0x80,0x7F,0x38,0x21,0x78,0x01,0xB8,0x01,0xF0,0x03,0x40,0x1F,0x98,
339 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
340 0x00,0x01,0x00,0x82,0x01,0xDA,0x03,0xDA,0x07,0x9A,0x01,0x9F,0x01,0x8B,0x01,0xE7,
341 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,
342 0xB0,0x00,0x20,0x00,0x60,0x00,0xC0,0x00,0xC0,0x0F,0x80,0x07,0x00,0x00,0x00,0x01,
343 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
344 0x00,0x0B,0x00,0x09,0x00,0x07,0x60,0x35,0xE0,0x1E,0x60,0x1D,0xE0,0x08,0x80,0x08,
345 0x00,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x38,0x00,0x30,0x00,0x60,0x00,0x43,0x00,
346 0xFF,0x00,0x63,0x00,0xD6,0x00,0xFE,0x00,0xEC,0x01,0xD0,0x07,0x3C,0x0E,0xFC,0x00,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -