📄 12864m-p.lst
字号:
207 { // PSB=0; //串口
208 1 PSB=1;//并口时选这个,上一行取消
209 1 REST=1;
210 1 REST=0;
211 1 REST=1;
212 1 WRCommand(0x30); //基本指令集,8位并行
213 1
214 1 WRCommand(0x06); //启始点设定:光标右移
215 1
216 1 WRCommand(0x01); //清除显示DDRAM
217 1
218 1 WRCommand(0x0C); //显示状态开关:整体显示开,光标显示关,光标显示反白关
219 1
220 1 WRCommand(0x02); //地址归零
221 1 }
222 //显示数组字符串(显示半宽字型16*8点阵)
223 void ShowQQChar(Uchar addr,Uchar *english,Uchar count)
224 {
225 1 Uchar i;
226 1 WRCommand(addr); //设定DDRAM地址
227 1 for(i=0;i<count;)
228 1 {
229 2 WRData(english[i*2]);
230 2 WRData(english[i*2+1]);
231 2 i++;
232 2 }
233 1 }
234 //显示连续字串(半宽字符)
235 void ShowNUMChar(Uchar addr,Uchar i,Uchar count)
236 {
237 1 Uchar j;
238 1 for(j=0;j<count;)
239 1 {
240 2 WRCommand(addr); //设定DDRAM地址
241 2 WRData(i+j);
C51 COMPILER V7.06 12864M_P 08/17/2007 23:47:42 PAGE 5
242 2 j++;
243 2 WRData(i+j);
244 2 addr++;
245 2 j++;
246 2 }
247 1 }
248 //自定义字符写入CGRAM
249 void WRCGRAM(Uchar data1,Uchar data2,Uchar addr)
250 {
251 1 Uchar i;
252 1 for(i=0;i<16;)
253 1 {
254 2 WRCommand(addr+i); //设定CGRAM地址
255 2 WRData(data1);
256 2 WRData(data1);
257 2 i++;
258 2 WRCommand(addr+i); //设定CGRAM地址
259 2 WRData(data2);
260 2 WRData(data2);
261 2 i++;
262 2 }
263 1 }
264 //显示自定义的字符,并把这个字符填满全屏16*16
265 void ShowCGChar(Uchar addr,Uchar i)
266 {
267 1 Uchar j;
268 1 for(j=0;j<0x20;)
269 1 {
270 2 WRCommand(addr+j); //设定DDRAM地址
271 2 WRData(0x00);
272 2 WRData(i);
273 2 j++;
274 2 }
275 1 }
276 void CLEARGDRAM(void)
277 {
278 1 Uchar j;
279 1 Uchar i;
280 1 WRCommand(0x34);
281 1 WRCommand(0x36);
282 1 for(j=0;j<32;j++)
283 1 {
284 2 WRCommand(0x80+j);
285 2 WRCommand(0x80);//X坐标
286 2 for(i=0;i<32;i++)//
287 2 {
288 3 WRData(0x00);
289 3 }
290 2 }
291 1
292 1 }
293 //写入GDRAM 绘图,Y是Y绘图坐标,2个字节一行,CLONG是图形长度,以字节
294 //为单位;HIGHT是图形高度,TAB是图形数据表.12864M的图形显示范围是256*32点阵.
295 //要在12864M里显示全屏,取模时一幅图横切成两半
296 //绘图在串口输入时,会比在并口下的输入要慢一些
297 void WRGDRAM(Uchar Y1,Uchar clong,Uchar hight,Uchar *TAB1)
298 {
299 1 Uint k;
300 1 Uchar j;
301 1 Uchar i;
302 1 WRCommand(0x34);
303 1 WRCommand(0x36);
C51 COMPILER V7.06 12864M_P 08/17/2007 23:47:42 PAGE 6
304 1 for(j=0;j<hight;j++)//32
305 1 { //先上半屏
306 2 WRCommand(Y1+j); //Y总坐标,即第几行
307 2 WRCommand(0x80);//X坐标,即横数第几个字节开始写起
308 2 for(i=0;i<clong;i++)//
309 2 {
310 3 WRData(TAB1[clong*j+i]);
311 3 }
312 2 //后下半屏
313 2
314 2 for(k=0;k<clong;k++)//
315 2 {
316 3 WRData(TAB1[clong*(j+hight)+k]);
317 3 }
318 2
319 2 }
320 1 }
321
322 void menu(void)
323 {
324 1 LCDInit();
325 1 ShowNUMChar(0x80,0x01,0x0f);//显示半宽特殊符号
326 1 ShowNUMChar(0x90,0x30,0x0f);//显示半宽0~?数字标点
327 1 ShowNUMChar(0x88,0x41,0x0f);//显示半宽A~P大写
328 1 ShowNUMChar(0x98,0x61,0x0f);//显示半宽a~p小写
329 1 WaitNms(250); //等待时间
330 1 WaitNms(250); //等待时间
331 1 stopint();
332 1 WRCommand(0x01); //清除显示DDRAM
333 1
334 1 WRCGRAM(0xff,0x00,0x40);//写入横
335 1 WRCGRAM(0x00,0xff,0x50);//写入横2
336 1 WRCGRAM(0xaa,0xaa,0x60);//写入竖
337 1 WRCGRAM(0x55,0x55,0x70);//写入竖2
338 1 ShowCGChar(0x80,0x00);//显示横并填满
339 1 WaitNms(250); //等待时间
340 1 WaitNms(250); //等待时间
341 1 stopint();
342 1 WRCommand(0x01); //清除显示DDRAM
343 1
344 1 ShowCGChar(0x80,02);//显示横2并填满
345 1 WaitNms(250); //等待时间
346 1 WaitNms(250); //等待时间
347 1 stopint();
348 1 WRCommand(0x01); //清除显示DDRAM
349 1
350 1 ShowCGChar(0x80,04);//显示竖并填满
351 1 WaitNms(250); //等待时间
352 1 WaitNms(250); //等待时间
353 1 stopint();
354 1 WRCommand(0x01); //清除显示DDRAM
355 1
356 1 ShowCGChar(0x80,06);//显示竖2并填满
357 1 WaitNms(250); //等待时间
358 1 WaitNms(250); //等待时间
359 1 stopint();
360 1 WRCommand(0x01); //清除显示DDRAM
361 1
362 1 WRCGRAM(0x00,0x00,0x40);//清CGRAM1
363 1 WRCGRAM(0x00,0x00,0x50);//清CGRAM2
364 1 WRCGRAM(0xaa,0x55,0x40);//写入点
365 1 WRCGRAM(0x55,0xaa,0x50);//写入点2
C51 COMPILER V7.06 12864M_P 08/17/2007 23:47:42 PAGE 7
366 1 ShowCGChar(0x80,00);//显示点并填满
367 1 WaitNms(250); //等待时间
368 1 WaitNms(250); //等待时间
369 1 stopint();
370 1 WRCommand(0x01); //清除显示DDRAM
371 1
372 1 ShowCGChar(0x80,02);//显示点2并填满
373 1 WaitNms(250); //等待时间
374 1 WaitNms(250); //等待时间
375 1 stopint();
376 1 WRCommand(0x01); //清除显示DDRAM
377 1
378 1 ShowQQChar(0x80,uctech,lengthCF3);//显示'瑞特电子有限公司',以下共四行
379 1 ShowQQChar(0x90,uctech,lengthCF3);
380 1 ShowQQChar(0x88,uctech,lengthCF3);
381 1 ShowQQChar(0x98,uctech,lengthCF3);
382 1 WaitNms(250); //等待时间
383 1 WaitNms(250); //等待时间
384 1 stopint();
385 1 WRCommand(0x01); //清除显示DDRAM
386 1 }
387
388 void menu2(void)
389 { CLEARGDRAM();
390 1 WRGDRAM(0x80,16,32,TAB1);
391 1 WaitNms(250); //等待时间
392 1 WaitNms(250); //等待时间
393 1 stopint();
394 1
395 1 }
396 //主函数
397 void main(void)
398 {
399 1
400 1
401 1 menu();//初始化及半宽字符和点横竖汉字扫描
402 1 menu2();//绘图显示
403 1 for(;;)
404 1 {;}
405 1
406 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 761 ----
CONSTANT SIZE = 1041 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 15 15
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 + -