📄 main.lst
字号:
198 1 P3MDOUT = 0xFF; // Output configuration for P3
199 1 P74OUT = 0xF3; // Output configuration for P4-7
200 1
201 1 P1MDIN = 0xFF; // Input configuration for P1
202 1 }
203 /*-------------------------------------------------------------------
204 * 功能: 液晶屏的相关程序
205 * 调用: NULL
206 * 输入: NULL
207 * 返回: NULL
208 * 说明: 对LCD的寄存器和DDRAM
209 -------------------------------------------------------------------*/
210 void lcd_regwr(uchar regnada)
211 {
212 1 LCD_DB = regnada;
213 1 LCD_COMMAND &=LCD_CS1_ENABLE; // chip enable.
214 1 LCD_COMMAND |=LCD_CS2_ENABLE;
215 1 LCD_COMMAND |=LCD_RD_DISABLE;
216 1 LCD_COMMAND &=LCD_RS_REG;
217 1 LCD_COMMAND &=LCD_WR_ENABLE;
218 1 ;
219 1 LCD_COMMAND |=LCD_WR_DISABLE;
220 1 LCD_COMMAND |=LCD_RS_DDRAM;
221 1 LCD_COMMAND |=LCD_CS1_DISABLE;
222 1
223 1 }
224 //.............................................
225 void lcd_datawrite(uchar wrdata)
226 { //写资料到DDRAM
227 1 //while(LCD_BUSY == 1);
228 1 LCD_DB = wrdata;
229 1 LCD_COMMAND &=LCD_CS1_ENABLE; // chip enable.
230 1 LCD_COMMAND |=LCD_CS2_ENABLE;
231 1 LCD_COMMAND |=LCD_RD_DISABLE;
232 1 LCD_COMMAND |=LCD_RS_DDRAM;
233 1 LCD_COMMAND &=LCD_WR_ENABLE;
234 1 ;
235 1 LCD_COMMAND |=LCD_WR_DISABLE;
236 1 LCD_COMMAND |=LCD_RS_REG;
237 1 LCD_COMMAND |=LCD_CS1_DISABLE;
238 1 }
239
240 uchar lcd_regread(uchar regname)
241 { //读缓存器
C51 COMPILER V7.20 MAIN 04/03/2008 10:40:57 PAGE 5
242 1 uchar reg_rddata;
243 1 lcd_regwr(regname);
244 1 LCD_DB= 0xff;
245 1 P74OUT = 0x03; // Output configuration for P4-7
246 1 DelayS(10);
247 1 LCD_COMMAND &=LCD_CS1_ENABLE; // chip enable.
248 1 LCD_COMMAND |=LCD_CS2_ENABLE;
249 1 LCD_COMMAND |=LCD_WR_DISABLE;
250 1 LCD_COMMAND &=LCD_RS_REG;
251 1 LCD_COMMAND &=LCD_RD_ENABLE;
252 1 ;
253 1 reg_rddata=LCD_DB;
254 1 LCD_COMMAND |=LCD_RD_DISABLE;
255 1 LCD_COMMAND |=LCD_RS_DDRAM;
256 1 LCD_COMMAND |=LCD_CS1_DISABLE;
257 1 ;
258 1 P74OUT = 0xF3;
259 1 DelayS(10);
260 1 return(reg_rddata);
261 1
262 1 }
263 //=============================================
264 void LCD_Reset(void)
265 {
266 1 DelayL(10); // delay 120ms 等待上电复位
267 1 LCD_COMMAND &=LCD_RST_ENABLE; // RST置低电平
268 1 DelayL(10);
269 1 LCD_COMMAND |=LCD_RST_DISABLE; // RST置高电平
270 1 DelayL(10);
271 1
272 1 }
273
274 void lcd_regwrite(uchar regname,uchar regdata)
275 { //写资料到缓存器
276 1 lcd_regwr(regname);
277 1 DelayS(1);
278 1 lcd_regwr(regdata);
279 1 }
280 //.............................................
281 void lcd_initial(void)
282 { //初始化
283 1 lcd_regwrite(0x00,0xc9); // lcd control register(lcr)
284 1 lcd_regwrite(0x01,0xe2); // misc.register(mir)
285 1 lcd_regwrite(0x02,0x10); // advance power setup register(apsr)
286 1 lcd_regwrite(0x03,0x80); // advance display setup regiser(adsr)
287 1 lcd_regwrite(0x10,0x69); // cursor control register(ccr)
288 1 lcd_regwrite(0x11,0x00); // distance of word or lines register(dwlr)
289 1 lcd_regwrite(0x12,0x91); // memory access mode register(awrr)
290 1 lcd_regwrite(0x21,0x27); // display window right register(dwrr)
291 1 lcd_regwrite(0x31,0xef); // display window bottom register(dwbr)
292 1 lcd_regwrite(0x41,0x00); // display window left register(dwlr)
293 1 lcd_regwrite(0x51,0x00); // display window top register(dwtr)
294 1 lcd_regwrite(0x20,0x27); // active window right register(awrr)
295 1 lcd_regwrite(0x30,0xef); // active window bottom register(awbr)
296 1 lcd_regwrite(0x40,0x00); // active window left register(awlr)
297 1 lcd_regwrite(0x50,0x00); // active window top register(awtr)
298 1 lcd_regwrite(0x60,0x00); // cursor position x register(cpxr)
299 1 lcd_regwrite(0x61,0x00); // begin segment position register(bgsg)
300 1 lcd_regwrite(0x70,0x00); // cursor position y register(cpyr)
301 1 lcd_regwrite(0x71,0x00); // shift action range,begin commom register(bgcm)
302 1 lcd_regwrite(0x72,0xef); // shift action range,end commom register(edcm)
303 1 lcd_regwrite(0x80,0xaa); // blink time register(btr)
C51 COMPILER V7.20 MAIN 04/03/2008 10:40:57 PAGE 6
304 1 lcd_regwrite(0x81,0x00); // frame rate polarity change at common_fa register(fdca)
305 1 lcd_regwrite(0x91,0x00); // frame rate polarity change at common_fb register(fdcb)
306 1 lcd_regwrite(0x90,0x06); // shift clock control register(sccr)
307 1 lcd_regwrite(0xa0,0x11); // interrupt setup & status register(frcb)
308 1 lcd_regwrite(0xa1,0x00); // key scan control register(kscr)
309 1 lcd_regwrite(0xa2,0x00); // key scan data register(ksdr)
310 1 lcd_regwrite(0xa3,0x00); // key scan data expand register(kser)
311 1 lcd_regwrite(0xb0,0x27); // interrupt column setup register(intx)
312 1 lcd_regwrite(0xb1,0xef); // interrupt row setup register(inty)
313 1 lcd_regwrite(0xc0,0x00); // touch panel control register(tpcr)
314 1 lcd_regwrite(0xc1,0x24); // adc status register(adcs)
315 1 lcd_regwrite(0xc8,0x80); // touch panel segment high byte data register(tpxr)
316 1 lcd_regwrite(0xc9,0x80); // touch panel common high byte data register(tpyr)
317 1 lcd_regwrite(0xca,0x00); // touch panel segment/common low byte data register(tpzr)
318 1 lcd_regwrite(0xd0,0x80); // lcd contrast control register (lccr)
319 1 lcd_regwrite(0xe0,0x00); // pattern data register(pdr)
320 1 lcd_regwrite(0xf0,0xa0); // font control register(fcr)
321 1 lcd_regwrite(0xf1,0x0f); // font size control register
322 1 }
323 //.............................................
324 void lcd_clear(void)
325 { //清屏
326 1 uchar reg_rddata;
327 1 lcd_regwrite(0xe0,0x00);
328 1 reg_rddata =lcd_regread(0xf0);
329 1 reg_rddata |= 0x08;
330 1 lcd_regwrite(0xf0,reg_rddata);
331 1 }
332
333
334 void SetXY(uchar x,uchar y)
335 {
336 1 lcd_regwrite(0x60,x); // active window top register(awtr)
337 1 lcd_regwrite(0x70,y); // active window top register(awtr)
338 1
339 1 }
340
341 /*void lcd_photo(uchar code *pho)
342 { //显示图形
343 uchar i,j,k;
344 uchar code *pp;
345 SetXY(0,0);
346 for(k=0;k<4;k++)
347 {
348 pp=pho;
349 for(j=0;j<60;j++)
350 {
351 for(i=0;i<40;i++)
352 {
353 lcd_datawrite(*pp);
354 ++pp;
355 }
356 }
357 }
358 }*/
359 void WriteCharTo7843(unsigned char num)
360 {
361 1 unsigned char count;
362 1 DCLK=0;
363 1 for(count=0;count<8;count++)
364 1 {
365 2 if((num&0x80)==0x80)
C51 COMPILER V7.20 MAIN 04/03/2008 10:40:57 PAGE 7
366 2 DIN=1;
367 2 else if((num&0x80)==0x00)
368 2 DIN=0;
369 2 DCLK=0; _nop_();_nop_();_nop_();
370 2 DCLK=1; _nop_();_nop_();_nop_();
371 2 num<<=1;
372 2 }
373 1 }
374 unsigned int ReadFromCharFrom7843()
375 {
376 1 unsigned char count=0;
377 1 unsigned int Num=0;
378 1 for(count=0;count<12;count++)
379 1 {
380 2 Num<<=1;
381 2 DCLK=1; _nop_();_nop_();_nop_();
382 2 DCLK=0; _nop_();_nop_();_nop_();
383 2 if(DOUT==1) Num++;
384 2 }
385 1 return(Num);
386 1 }
387
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1793 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 9 56
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -