📄 main.lst
字号:
162 {
163 1 LCD_DB = regnada;
164 1 LCD_COMMAND &=LCD_CS1_ENABLE; // chip enable.
165 1 LCD_COMMAND |=LCD_CS2_ENABLE;
166 1 LCD_COMMAND |=LCD_RD_DISABLE;
167 1 LCD_COMMAND &=LCD_RS_REG;
168 1 LCD_COMMAND &=LCD_WR_ENABLE;
169 1 ;
170 1 LCD_COMMAND |=LCD_WR_DISABLE;
171 1 LCD_COMMAND |=LCD_RS_DDRAM;
172 1 LCD_COMMAND |=LCD_CS1_DISABLE;
173 1
174 1 }
175 //.............................................
176 void lcd_datawrite(uchar wrdata)
177 { //写资料到DDRAM
178 1 //while(LCD_BUSY == 1);
179 1 LCD_DB = wrdata;
C51 COMPILER V7.20 MAIN 04/03/2008 10:27:52 PAGE 4
180 1 LCD_COMMAND &=LCD_CS1_ENABLE; // chip enable.
181 1 LCD_COMMAND |=LCD_CS2_ENABLE;
182 1 LCD_COMMAND |=LCD_RD_DISABLE;
183 1 LCD_COMMAND |=LCD_RS_DDRAM;
184 1 LCD_COMMAND &=LCD_WR_ENABLE;
185 1 ;
186 1 LCD_COMMAND |=LCD_WR_DISABLE;
187 1 LCD_COMMAND |=LCD_RS_REG;
188 1 LCD_COMMAND |=LCD_CS1_DISABLE;
189 1 }
190
191 uchar lcd_regread(uchar regname)
192 { //读缓存器
193 1 uchar reg_rddata;
194 1 lcd_regwr(regname);
195 1 LCD_DB= 0xff;
196 1 P74OUT = 0x03; // Output configuration for P4-7
197 1 DelayS(10);
198 1 LCD_COMMAND &=LCD_RS_REG;
199 1 LCD_COMMAND |=LCD_CS2_ENABLE;
200 1 LCD_COMMAND &=LCD_CS1_ENABLE; // chip enable.
201 1
202 1 LCD_COMMAND |=LCD_WR_DISABLE;
203 1 LCD_COMMAND &=LCD_RS_REG;
204 1 LCD_COMMAND &=LCD_RD_ENABLE;
205 1 ;
206 1 reg_rddata=LCD_DB;
207 1 LCD_COMMAND |=LCD_RD_DISABLE;
208 1 LCD_COMMAND |=LCD_RS_DDRAM;
209 1 LCD_COMMAND |=LCD_CS1_DISABLE;
210 1 ;
211 1 P74OUT = 0xF3;
212 1 DelayS(10);
213 1 return(reg_rddata);
214 1
215 1 }
216 //=============================================
217 void LCD_Reset(void)
218 {
219 1 DelayL(10); // delay 120ms 等待上电复位
220 1 LCD_COMMAND &=LCD_RST_ENABLE; // RST置低电平
221 1 DelayL(10);
222 1 LCD_COMMAND |=LCD_RST_DISABLE; // RST置高电平
223 1 DelayL(10);
224 1
225 1 }
226
227 void lcd_regwrite(uchar regname,uchar regdata)
228 { //写资料到缓存器
229 1 lcd_regwr(regname);
230 1 DelayS(1);
231 1 lcd_regwr(regdata);
232 1 }
233 //.............................................
234 void lcd_initial(void)
235 { //初始化
236 1 lcd_regwrite(0x00,0xc9); // lcd control register(lcr)
237 1 lcd_regwrite(0x01,0xe2); // misc.register(mir)
238 1 lcd_regwrite(0x02,0x10); // advance power setup register(apsr)
239 1 lcd_regwrite(0x03,0x80); // advance display setup regiser(adsr)
240 1 lcd_regwrite(0x10,0x69); // cursor control register(ccr)
241 1 lcd_regwrite(0x11,0x00); // distance of word or lines register(dwlr)
C51 COMPILER V7.20 MAIN 04/03/2008 10:27:52 PAGE 5
242 1 lcd_regwrite(0x12,0x91); // memory access mode register(awrr)
243 1 lcd_regwrite(0x21,0x27); // display window right register(dwrr)
244 1 lcd_regwrite(0x31,0xef); // display window bottom register(dwbr)
245 1 lcd_regwrite(0x41,0x00); // display window left register(dwlr)
246 1 lcd_regwrite(0x51,0x00); // display window top register(dwtr)
247 1 lcd_regwrite(0x20,0x27); // active window right register(awrr)
248 1 lcd_regwrite(0x30,0xef); // active window bottom register(awbr)
249 1 lcd_regwrite(0x40,0x00); // active window left register(awlr)
250 1 lcd_regwrite(0x50,0x00); // active window top register(awtr)
251 1 lcd_regwrite(0x60,0x00); // cursor position x register(cpxr)
252 1 lcd_regwrite(0x61,0x00); // begin segment position register(bgsg)
253 1 lcd_regwrite(0x70,0x00); // cursor position y register(cpyr)
254 1 lcd_regwrite(0x71,0x00); // shift action range,begin commom register(bgcm)
255 1 lcd_regwrite(0x72,0xef); // shift action range,end commom register(edcm)
256 1 lcd_regwrite(0x80,0xaa); // blink time register(btr)
257 1 lcd_regwrite(0x81,0x00); // frame rate polarity change at common_fa register(fdca)
258 1 lcd_regwrite(0x91,0x00); // frame rate polarity change at common_fb register(fdcb)
259 1 lcd_regwrite(0x90,0x06); // shift clock control register(sccr)
260 1 lcd_regwrite(0xa0,0x11); // interrupt setup & status register(frcb)
261 1 lcd_regwrite(0xa1,0x00); // key scan control register(kscr)
262 1 lcd_regwrite(0xa2,0x00); // key scan data register(ksdr)
263 1 lcd_regwrite(0xa3,0x00); // key scan data expand register(kser)
264 1 lcd_regwrite(0xb0,0x27); // interrupt column setup register(intx)
265 1 lcd_regwrite(0xb1,0xef); // interrupt row setup register(inty)
266 1 lcd_regwrite(0xc0,0x00); // touch panel control register(tpcr)
267 1 lcd_regwrite(0xc1,0x24); // adc status register(adcs)
268 1 lcd_regwrite(0xc8,0x80); // touch panel segment high byte data register(tpxr)
269 1 lcd_regwrite(0xc9,0x80); // touch panel common high byte data register(tpyr)
270 1 lcd_regwrite(0xca,0x00); // touch panel segment/common low byte data register(tpzr)
271 1 lcd_regwrite(0xd0,0x80); // lcd contrast control register (lccr)
272 1 lcd_regwrite(0xe0,0x00); // pattern data register(pdr)
273 1 lcd_regwrite(0xf0,0xa0); // font control register(fcr)
274 1 lcd_regwrite(0xf1,0x0f); // font size control register
275 1 }
276 //.............................................
277 void lcd_clear(void)
278 { //清屏
279 1 uchar reg_rddata;
280 1 lcd_regwrite(0xe0,0x00);
281 1 reg_rddata =lcd_regread(0xf0);
282 1 reg_rddata |= 0x08;
283 1 lcd_regwrite(0xf0,reg_rddata);
284 1 }
285
286
287 void SetXY(uchar x,uchar y)
288 {
289 1 lcd_regwrite(0x60,x); // active window top register(awtr)
290 1
291 1 lcd_regwrite(0x70,y); // active window top register(awtr)
292 1
293 1 }
294
295 void lcd_photo(uchar code *pho)
296 { //显示图形
297 1 uchar i,j,k;
298 1 uchar code *pp;
299 1 SetXY(0,0);
300 1 for(k=0;k<4;k++)
301 1 {
302 2 pp=pho;
303 2 for(j=0;j<60;j++)
C51 COMPILER V7.20 MAIN 04/03/2008 10:27:52 PAGE 6
304 2 {
305 3 for(i=0;i<40;i++)
306 3 {
307 4 lcd_datawrite(*pp);
308 4 ++pp;
309 4 }
310 3 }
311 2 }
312 1 }
313
314
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 777 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 1 4
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 + -