📄 lcd12864.lst
字号:
C51 COMPILER V9.01 LCD12864 07/28/2012 10:10:16 PAGE 1
C51 COMPILER V9.01, COMPILATION OF MODULE LCD12864
OBJECT MODULE PLACED IN LCD12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD12864.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "STC15F2K.h"
2 #include <intrins.h>
3
4 #ifndef uchar
5 #define uchar unsigned char
6 #endif
7 #ifndef uint
8 #define uint unsigned int
9 #endif
10 #define nop(); {_nop_();_nop_();_nop_();_nop_();};
11 #define DataPort P0 //定义P0口为LCD通讯端口
12 sbit RS=P4^5; //数据/命令端
13 sbit RW=P5^5; //读/写选择端
14 sbit E=P5^4;
15 sbit RST=P4^4;
16 sbit PSB=P4^1;
17 sbit Busy=DataPort^7;
18
19 void lcd_busy(void)
20 {
21 1 DataPort=0xff;
22 1 RS=0;
23 1 RW=1;
24 1 E=1;
25 1 while(Busy==1);
26 1 E=0;
27 1 }
28
29 void lcd_com(uchar com)
30 {
31 1 lcd_busy();
32 1 RS=0;
33 1 RW=0;
34 1 DataPort=com;
35 1 E=1;
36 1 nop();
37 1 E=0;
38 1 }
39
40 void lcd_dat(uchar dat)
41 {
42 1 lcd_busy();
43 1 RS=1;
44 1 RW=0;
45 1 DataPort=dat;
46 1 E=1;
47 1 nop();
48 1 E=0;
49 1 }
50
51 void lcd_init(void)
52 {
53 1 RST=1;
54 1 PSB=1;
55 1 lcd_com(0x30); /*30---基本指令动作*/
C51 COMPILER V9.01 LCD12864 07/28/2012 10:10:16 PAGE 2
56 1 lcd_com(0x01); /*清屏,地址指针指向00H*/
57 1 lcd_com(0x06); /*光标的移动方向*/
58 1 lcd_com(0x0c); /*开显示,关游标*/
59 1 }
60
61 void lcd_disp(uchar y,uchar *str) //向第y行 写入字符串
62 {
63 1 uchar i;
64 1 switch(y)
65 1 {
66 2 case 0:y=0x80;break;
67 2 case 1:y=0x90;break;
68 2 case 2:y=0x88;break;
69 2 case 3:y=0x98;break;
70 2 }
71 1 lcd_com(0x30);
72 1 lcd_com(y);
73 1 for(i=0;i<16;i++)
74 1 {
75 2 lcd_dat(*str);
76 2 str++;
77 2 }
78 1 }
79 /*lcd_img 此函数可以与for函数组合画图*/
80 /*
81 void lcd_img(uchar y,uchar x,uchar dat1,uchar dat2)
82 {
83 lcd_com(0x34);
84 lcd_com(0x80+y);
85 lcd_com(0x80+x);
86 lcd_com(0x30);
87 lcd_dat(dat1);
88 lcd_dat(dat2);
89 lcd_com(0x36);
90 } */
91
92 void lcd_imgclr() //清除屏幕画点。
93 {
94 1 uchar x,y;
95 1 for(y=0;y<0x20;y++)
96 1 {
97 2 for(x=0;x<0x10;x++)
98 2 {
99 3 lcd_com(0x34);
100 3 lcd_com(0x80+y);
101 3 lcd_com(0x80+x);
102 3 lcd_com(0x30);
103 3 lcd_dat(0x00);
104 3 lcd_dat(0x00);
105 3 }
106 2 }
107 1 lcd_com(0x36);
108 1 }
109
110 void lcd_rec(uchar y,uchar x,uchar num,uchar dat)
111 {
112 1 uchar i,j;
113 1 x=y>1?(x+8):x;
114 1 y=y%2?0x10:0x00;
115 1 for(j=0;j<num;j++)
116 1 {
117 2 for(i=0;i<16;i++)
C51 COMPILER V9.01 LCD12864 07/28/2012 10:10:16 PAGE 3
118 2 {
119 3 lcd_com(0x34);
120 3 lcd_com(0x80+y+i);
121 3 lcd_com(0x80+x+j);
122 3 lcd_com(0x30);
123 3 lcd_dat(dat);
124 3 lcd_dat(dat);
125 3 }
126 2 }
127 1 lcd_com(0x36);
128 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 266 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
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 + -