📄 lcd.lst
字号:
C51 COMPILER V7.06 LCD 11/21/2005 17:42:08 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: f:\Keil\C51\BIN\C51.EXE LCD.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "LCD.h"
2 /*------------------延时子程序-----------------------------*/
3 void delay(unsigned int t)
4 {
5 1 unsigned int i,j;
6 1 for(i=0;i<t;i++)
7 1 for(j=0;j<10;j++);
8 1 }
9
10
11 /*------------------写命令到LCD------------------------------*/
12 void write_com(unsigned char cmdcode)
13 {
14 1
15 1 RS=0;
16 1 RW=0;
17 1
18 1 Lcd_Bus=cmdcode;
19 1 delay(0);
20 1 Enable=1;//下降沿写数据,高电平读数据
21 1 delay(0);
22 1 Enable=0;
23 1 }
24
25
26
27 /*-------------------写数据到LCD----------------------------*/
28 void write_data(unsigned char Dispdata)
29 {
30 1 RS=1;
31 1 RW=0;
32 1
33 1 Lcd_Bus=Dispdata;
34 1 delay(0);
35 1 Enable=1;
36 1 delay(0);
37 1 Enable=0;
38 1 }
39
40
41 /*-------------------读LCD数据----------------------------*/
42 /*unsigned char read_data( void )
43 {
44 unsigned char tmpin;
45
46 Di=1;
47 RW=1;
48 delay(0);
49 Enable=1;
50 delay(0);
51 Enable=0;
52
53 tmpin=Lcd_Bus;
54
55 return tmpin;
C51 COMPILER V7.06 LCD 11/21/2005 17:42:08 PAGE 2
56 }
57 */
58
59
60 /*------------------显示边框-------------------------------*/
61 void frame()
62 {
63 1 unsigned char i;
64 1
65 1 Lcs=1;
66 1 Rcs=1;
67 1 write_com(Page_Add+0);
68 1 write_com(Col_Add+0);
69 1 for(i=0;i<64;i++)
70 1 {
71 2 write_data(0x01);
72 2 }
73 1
74 1 write_com(Page_Add+7);
75 1 write_com(Col_Add+0);
76 1 for(i=0;i<64;i++)
77 1 {
78 2 write_data(0x80);
79 2 }
80 1
81 1 for(i=0;i<8;i++)
82 1 {
83 2 Lcs=0;
84 2 Rcs=1;
85 2 write_com(Page_Add+i);
86 2 write_com(Col_Add+63);
87 2 write_data(0xff);
88 2
89 2 Lcs=1;
90 2 Rcs=0;
91 2 write_com(Page_Add+i);
92 2 write_com(Col_Add+0);
93 2 write_data(0xff);
94 2 }
95 1 }
96
97 /*-----------------设定起始地址---------------*/
98 /*void setxy(unsigned char x,y)
99 {
100 write_com(Page_Add+x);
101 write_com(Col_Add+y);
102 }
103 */
104 /*------------------清除内存---------------*/
105 void lcd_clr(void)
106 {
107 1 unsigned char j,k;
108 1
109 1 Lcs=1;
110 1 Rcs=1;
111 1 write_com(Page_Add+0);
112 1 write_com(Col_Add+0);
113 1
114 1 for(k=0;k<8;k++)
115 1 {
116 2 write_com(Page_Add+k);
117 2 for(j=0;j<64;j++)
C51 COMPILER V7.06 LCD 11/21/2005 17:42:08 PAGE 3
118 2 {
119 3 write_data(0x00);
120 3 }
121 2 }
122 1 }
123 /*--------------------------清除指定内存段--------------------------*/
124 void lcd_clr_zd(unsigned char start_page,unsigned char start_col,unsigned int count)
125 {
126 1 unsigned int i;
127 1 if(start_col<64)
128 1 {
129 2 Lcs=1;
130 2 Rcs=0;
131 2 write_com(Page_Add+start_page);
132 2 write_com(Col_Add+start_col);
133 2 for(i=0;i<count;i++)
134 2 {
135 3 write_data(0x00);
136 3 }
137 2 }
138 1 else
139 1 {
140 2 Lcs=0;
141 2 Rcs=1;
142 2 write_com(Page_Add+start_page);
143 2 write_com(Col_Add+start_col-64);
144 2 for(i=0;i<count;i++)
145 2 {
146 3 write_data(0x00);
147 3 }
148 2 }
149 1 }
150
151 /*------------------显示12864图片---------------------------*/
152 void Disp_Img(unsigned char code *img)
153 {
154 1 unsigned char j,k;
155 1
156 1 for(k=0;k<8;k++)
157 1 {
158 2 Lcs=1;
159 2 Rcs=0;
160 2 delay(1);
161 2 write_com(Page_Add+k);
162 2 write_com(Col_Add+0);
163 2 for(j=0;j<64;j++)
164 2 {
165 3 write_data(img[k*128+j]);
166 3 }
167 2 Lcs=0;
168 2 Rcs=1;
169 2 delay(1);
170 2 write_com(Page_Add+k);
171 2 write_com(Col_Add+0);
172 2 for(j=64;j<128;j++)
173 2 {
174 3 write_data(img[k*128+j]);
175 3 }
176 2 }
177 1 }
178
179 /***************显示任意大小,位置图片*********************/
C51 COMPILER V7.06 LCD 11/21/2005 17:42:08 PAGE 4
180 void disp_image(unsigned char x,unsigned y,unsigned char w,unsigned char h,unsigned char code *img)
181 {
182 1 unsigned char j,k;
183 1 if(x<64)
184 1 {
185 2 for(k=0;k<h/8;k++)
186 2 {
187 3 delay(1);
188 3 Lcs=1;
189 3 Rcs=0;
190 3 write_com(Page_Add+y+k);//图片高度必须为8的倍数,起始页地址(y)。。。
191 3 write_com(Col_Add+x);
192 3 for(j=0;j<w;j++)
193 3 {
194 4 if((j+x)<64) write_data(img[w*k+j]);
195 4 else
196 4 {
197 5 Lcs=0; Rcs=1;
198 5 write_com(Page_Add+y+k);//图片高度必须为8的倍数,起始页地址(y)。。。
199 5 write_com(Col_Add+(x+j-64));
200 5 write_data(img[w*k+j]);
201 5 }
202 4 }
203 3 }
204 2 }
205 1
206 1 else
207 1 {
208 2 for(k=0;k<h/8;k++)
209 2 {
210 3 Lcs=0;
211 3 Rcs=1;
212 3 delay(1);
213 3 write_com(Page_Add+y+k);
214 3 write_com(Col_Add+x-64);
215 3 for(j=0;j<w;j++)
216 3 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -