📄 410.lst
字号:
166 1 while(1)
167 1 {
168 2 LCD_EN = 0;
169 2 Delay_us(10);
170 2 LCD_RS = 0;
171 2 Delay_us(10);
172 2 LCD_RW = 1;
173 2 Delay_us(10);
174 2 LCD_PORT = 0xff;
175 2 Delay_us(10);
176 2 LCD_EN = 1;
177 2 Delay_us(10);
178 2 if(!LCD_Busy) break;
179 2 }
180 1 LCD_EN = 0;
181 1 }
182 /*----------------------------------------------------------------------------
183 下面这个函数用于向液晶模块写入控制指令代码。
184 函数入口参数:Command ------ 向液晶模块写入的控制指令代码 。
185 CS_Num ------ 左右半屏的选数值
186 ----------------------------------------------------------------------------*/
187 void LCD_WriteCommand(uchar Command, uchar CS_Num)
188 {
189 1 if(CS_Num==1) /*选择左半屏*/
190 1 {
191 2 LCD_CS1 = 0;
192 2 Delay_us(10);
193 2 LCD_CS2 = 1;
194 2 }
195 1 else if(CS_Num==2) /*选择右半屏*/
C51 COMPILER V7.50 410 10/04/2007 14:21:04 PAGE 5
196 1 {
197 2 LCD_CS1 = 1;
198 2 Delay_us(10);
199 2 LCD_CS2 = 0;
200 2 }
201 1 LCD_Check_Busy();
202 1 Delay_us(10);
203 1 LCD_EN = 0; /* 使能信号为L */
204 1 Delay_us(10);
205 1 LCD_RS = 0; /* 置寄存器选择为L */
206 1 Delay_us(10);
207 1 LCD_RW = 0; /* 置读/写选择为L */
208 1 Delay_us(10);
209 1 LCD_PORT = Command; /* 将控制指令代码输出到的数据端口 */
210 1 Delay_us(10);
211 1 LCD_EN = 1; /* 使能信号为H */
212 1 Delay_us(10); /* 延时2us */
213 1 LCD_EN = 0; /* 使能信号为L */
214 1 Delay_us(10);
215 1 LCD_CS1 = 1; /* 置片选1为L */
216 1 Delay_us(10);
217 1 LCD_CS2 = 1; /* 置片选2为L */
218 1 Delay_us(10);
219 1
220 1 }
221
222
223 /*----------------------------------------------------------------------------
224 下面这个函数用于向液晶模块写入显示数据。
225 函数入口参数:Data------ 向液晶模块写入的显示数据 。
226 CS_Num-------左右半屏的选数值
227 ----------------------------------------------------------------------------*/
228 void LCD_WriteData(uchar Data,uchar CS_Num)
229 {
230 1 if(CS_Num==1) /*选择左半屏*/
231 1 {
232 2 LCD_CS1 = 0;
233 2 Delay_us(10);
234 2 LCD_CS2 = 1;
235 2 }
236 1 else if(CS_Num==2) /*选择右半屏*/
237 1 {
238 2 LCD_CS1 = 1;
239 2 Delay_us(10);
240 2 LCD_CS2 = 0;
241 2 }
242 1 LCD_Check_Busy();
243 1 Delay_us(10);
244 1 LCD_EN = 0;
245 1 Delay_us(10);
246 1 LCD_RS = 1; /* 置寄存器选择为H */
247 1 Delay_us(10);
248 1 LCD_RW = 0; /* 置读/写选择为L */
249 1 Delay_us(10);
250 1 LCD_PORT = Data; /* 将显示数据输出到的数据端口 */
251 1 Delay_us(10);
252 1 LCD_EN = 1; /* 使能信号为H */
253 1 Delay_us(10); /* 延时2us */
254 1 LCD_EN = 0; /* 使能信号为L */
255 1 Delay_us(10);
256 1 LCD_CS1= 1; /* 置片选1为L */
257 1 Delay_us(10);
C51 COMPILER V7.50 410 10/04/2007 14:21:04 PAGE 6
258 1 LCD_CS2= 1; /* 置片选2为L */
259 1 }
260
261 /*---------------------------------------------------------------------------
262 下面这个函数用于液晶模块的清屏。
263 ---------------------------------------------------------------------------*/
264 void LCD_keyclr(uchar Side_Num)
265 {
266 1 uchar i,k,COM;
267 1
268 1 for(i=0;i<8;i++)
269 1 {
270 2 COM=0xB8+i;
271 2 LCD_WriteCommand(COM,Side_Num);
272 2 COM=0x40;
273 2 LCD_WriteCommand(COM,Side_Num);
274 2
275 2 for(k=0;k<64;k++)
276 2 {
277 3 LCD_WriteData(0x00,Side_Num);
278 3 }
279 2 }
280 1 Delay_us(2);
281 1 }
282
283
284 /*---------------------------------------------------------------------------
285 下面这个函数用于向液晶模块初始化。
286 如果没有写完一个半屏的数据就要充分结合此函数来达到要显示的效果
287 ---------------------------------------------------------------------------*/
288 void LCD_Initial(void)
289 {
290 1 LCD_RST = 0; /* 置复位信号为低电平 */
291 1 // Delay_us(2);
292 1 LCD_RST = 1; /* 置复位信号为高电平 */
293 1 LCD_WriteCommand(0x3F,Left); /*显示开*/
294 1 LCD_WriteCommand(0x3F,Right);
295 1 LCD_WriteCommand(0xC0,Left); /*起始行*/
296 1 LCD_WriteCommand(0xC0,Right);
297 1 LCD_WriteCommand(0xB8,Left); /*起始页*/
298 1 LCD_WriteCommand(0xB8,Right);
299 1 LCD_WriteCommand(0x40,Left); /*起始列*/
300 1 LCD_WriteCommand(0x40,Right);
301 1 }
302
303 /*---------------------------------------------------------------------------
304 下面这个函数显示开机画面,按回车进入主控界面
305 ---------------------------------------------------------------------------*/
306 firstpagelcd()
307 {
308 1
309 1 page=0xb8;
310 1 for(j=0;j<8;j++)
311 1 {
312 2 LCD_WriteCommand((page+j),Right);
313 2 LCD_WriteCommand(0x40,Right);
314 2 for(i=0;i<64;i++)
315 2 {
316 3 LCD_WriteData(fr[64*j+i],Right);
317 3 }};
318 1
319 1
C51 COMPILER V7.50 410 10/04/2007 14:21:04 PAGE 7
320 1 page=0xb8;
321 1 for(j=0;j<8;j++)
322 1 {
323 2 LCD_WriteCommand((page+j),Left);
324 2 LCD_WriteCommand(0x40,Left);
325 2 for(i=0;i<64;i++)
326 2 {
327 3 LCD_WriteData(fl[64*j+i],Left);
328 3 }};
329 1 }
330 /*---------------------------------------------------------------------------
331 下面这个函数显示第二页画面的固定值
332 ---------------------------------------------------------------------------*/
333 secondpage()
334 {
335 1 page=0xbc; //r0
336 1 pageend=2;clmsum=21;
337 1 clmstart=0x40;pagestart=0;
338 1
339 1 leftout(); //ri
*** WARNING C206 IN LINE 339 OF 410.C: 'leftout': missing function-prototype
340 1 pagestart=2;pageend=4;clmstart=0x40;
341 1 rightout();
*** WARNING C206 IN LINE 341 OF 410.C: 'rightout': missing function-prototype
342 1
343 1 page=0xba; //con:
344 1 pageend=8;clmsum=28;clmstart=0x40;
345 1 pagestart=6;
346 1
347 1 leftout(); //a+b:
348 1 pagestart=4;pageend=6;clmstart=0x40;
349 1 rightout();
350 1 }
351
352 /*---------------------------------------------------------------------------
353 下面这个函数显示左半屏数据
354 ---------------------------------------------------------------------------*/
355 leftout(){
356 1 for((j=pagestart,k=0);j<pageend;(j++,k++))
357 1 {
358 2 LCD_WriteCommand((page+k),Left);
359 2 LCD_WriteCommand(clmstart,Left);
360 2 for(i=0;i<clmsum;i++)
361 2 {
362 3 digitalin=ro[j][i];
363 3 if(keysetin==1){digitalin=~ro[j][i];};
364 3 LCD_WriteData(digitalin,Left);
365 3 }}
366 1 keysetin=0;
367 1 }
368 /*---------------------------------------------------------------------------
369 下面这个函数显示右半屏数据
370 ---------------------------------------------------------------------------*/
371 rightout(){
372 1 for((j=pagestart,k=0);j<pageend;(j++,k++))
373 1 {
374 2 LCD_WriteCommand((page+k),Right);
375 2 LCD_WriteCommand(clmstart,Right);
376 2 for(i=0;i<clmsum;i++)
377 2 {
378 3 digitalin=ro[j][i];
379 3 if(keysetin==1){digitalin=~ro[j][i];};
C51 COMPILER V7.50 410 10/04/2007 14:21:04 PAGE 8
380 3 LCD_WriteData(digitalin,Right);
381 3 }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -