📄 lcd12864.lst
字号:
156 2 for(i=0;i<125;i++);
157 2 }
158 1 }
159 //检查LCD忙状态
160 void LcdBusy(){
161 1 DI=0;
162 1 RW=1;
163 1 E=1;
164 1 _nop_();
165 1 while(Busy);
166 1 E=0;
167 1 }
168 //给LCD写命令
169 void WriteCommand(uchar Command){
170 1 LcdBusy();
171 1 DI=0;
172 1 RW=0;
173 1 P0=Command;
174 1 E=1;
175 1 _nop_();
176 1 E=0;
177 1 }
178 //给LCD写数据
179 void WriteData(uchar Data){
C51 COMPILER V8.02 LCD12864 11/14/2007 13:59:43 PAGE 4
180 1 LcdBusy();
181 1 DI=1;
182 1 RW=0;
183 1 P0=Data;
184 1 E=1;
185 1 _nop_();
186 1 E=0;
187 1 }
188 //LCD清屏
189 void LcdClear(){
190 1 uchar i,j,Y=0;
191 1 CSL=1;
192 1 CSR=1;
193 1 for(j=0;j<8;j++){
194 2 WriteCommand(Y|0xB8);
195 2 WriteCommand(0x40);
196 2 for(i=0;i<64;i++) WriteData(0x00);
197 2 Y++;
198 2 }
199 1 }
200 //LCD初始化
201 void LcdInit(){
202 1 RST=0;
203 1 _nop_();_nop_();_nop_();
204 1 RST=1;
205 1 CSL=1;
206 1 CSR=1;
207 1 WriteCommand(0x3F);//开显示
208 1 Delay(1);
209 1 LcdClear();
210 1 }
211 //显示一幅图像
212 void Pic(uchar *PicCode){
213 1 uchar i,j,Y=0;
214 1 for(j=0;j<8;j++){
215 2 //左半屏写64个数据
216 2 CSL=1;
217 2 CSR=1;
218 2 WriteCommand(Y|0xB8);
219 2 WriteCommand(0x40);
220 2 for(i=0;i<64;i++) WriteData(*PicCode++);
221 2 //右半屏写64个数据
222 2 CSL=0;
223 2 CSR=1;
224 2 WriteCommand(Y|0xB8);
225 2 WriteCommand(0x40);
226 2 for(i=0;i<64;i++) WriteData(*PicCode++);
227 2 Y++;
228 2 }
229 1 }
230 //显示汉字
231 void Zh(uchar X,uchar Y,uchar Start,uchar Num){
232 1 uchar i;
233 1 uchar j;
234 1 for(j=0;j<Num;j++){
235 2 for(i=0;i<16;i++){
236 3 if(X>128){
237 4 Y+=2;
238 4 X=1;
239 4 }
240 3 if(X>64){
241 4 CSL=0;
C51 COMPILER V8.02 LCD12864 11/14/2007 13:59:43 PAGE 5
242 4 CSR=1;
243 4 }else{
244 4 CSL=1;
245 4 CSR=0;
246 4 }
247 3 WriteCommand((Y-1)*2|0xB8);
248 3 WriteCommand((X-1)|0x40);
249 3 WriteData(ZhCode[(Start+j)*32+i]);
250 3 WriteCommand(((Y-1)*2+1)|0xB8);
251 3 WriteCommand((X-1)|0x40);
252 3 WriteData(ZhCode[(Start+j)*32+i+16]);
253 3 X++;
254 3 }
255 2 }
256 1 }
257 //显示字符
258 void Char(uchar X,uchar Y,uchar Start,uchar Num){
259 1 uchar i;
260 1 uchar j;
261 1 for(j=0;j<Num;j++){
262 2 for(i=0;i<8;i++){
263 3 if(X>128){
264 4 Y+=2;
265 4 X=1;
266 4 }
267 3 if(X>64){
268 4 CSL=0;
269 4 CSR=1;
270 4 }else{
271 4 CSL=1;
272 4 CSR=0;
273 4 }
274 3 WriteCommand((Y-1)*2|0xB8);
275 3 WriteCommand((X-1)|0x40);
276 3 WriteData(CharCode[(Start+j)*16+i]);
277 3 WriteCommand(((Y-1)*2+1)|0xB8);
278 3 WriteCommand((X-1)|0x40);
279 3 WriteData(CharCode[(Start+j)*16+i+8]);
280 3 X++;
281 3 }
282 2 }
283 1 }
284 //主函数
285 main(){
286 1 P0=0x00;
287 1 LcdInit();//Lcd初始化
288 1 while(1){
289 2 Pic(PicCode);
290 2 Delay(2000);
291 2 LcdClear();
292 2 Zh(17,1,0,6);//显示"伟杰电子科技"
293 2 Char(1,2,0,16);//显示"www.wejay.com.cn"
294 2 Zh(1,3,6,2);//显示"型号"
295 2 Char(33,3,16,8);//显示":WJ89S52"
296 2 Zh(1,4,8,2);//显示"电话"
297 2 Char(33,4,24,12);//显示":13818903490"
298 2 Delay(2000);
299 2 LcdClear();
300 2 }
301 1 }
C51 COMPILER V8.02 LCD12864 11/14/2007 13:59:43 PAGE 6
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 648 ----
CONSTANT SIZE = 1920 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 11
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 + -