📄 lcd.lst
字号:
188 1 RW = 0;
189 1 E = 1;
190 1 _nop_();
191 1 E = 0;
192 1 _nop_();
193 1 }
194
195 void WriteCommandM( unsigned char CommandByte )
196 {
197 1 BusyM();
198 1 P0 = CommandByte;
199 1 RS = 0; //指令
200 1 RW = 0;
201 1 E = 1;
202 1 _nop_();
203 1 E = 0;
204 1 _nop_();
205 1 }
206
207 void WriteCommandR( unsigned char CommandByte )
208 {
209 1 BusyR();
210 1 P0 = CommandByte;
211 1 RS = 0; //指令
212 1 RW = 0;
213 1 E = 1;
214 1 _nop_();
215 1 E = 0;
216 1 _nop_();
217 1 }
218
219 /***************************/
220 /*读数据 */
221 /***************************/
222 unsigned char ReadData( void )
223 {
224 1 unsigned char DataByte;
225 1 Locatexy(); /*坐标定位,返回时保留分区状态不变 */
226 1 RS = 1; /*数据输出*/
227 1 RW = 1; /*读入 */
228 1 P0 = 0xFF; //输出0xff以便读取正确
229 1 E = 1; /*读入到LCM*/
230 1 _nop_();
231 1 DataByte = P0; /*数据读出到数据口P1 */
232 1 E = 0;
233 1 _nop_();
234 1 return DataByte;
235 1 }
236
237 /***************************/
238 /*写数据 */
239 /***************************/
240 void WriteData( unsigned char DataByte )
241 {
C51 COMPILER V7.08 LCD 05/26/2008 00:03:31 PAGE 5
242 1 Locatexy(); /*坐标定位,返回时保留分区状态不变 */
243 1 RS = 1; /*数据输出*/
244 1 RW = 0; /*写输出 */
245 1 P0 = DataByte; /*数据输出到数据口 */
246 1 E = 1; /*写入到LCM*/
247 1 _nop_();
248 1 E = 0;
249 1 _nop_();
250 1 }
251
252 void LcmClear(unsigned char a,unsigned char b,unsigned char c,unsigned char d)
253 {
254 1 Page = 0;
255 1 Col = 0;
256 1 for(Page=a;Page<b;Page++)
257 1 for(Col=c;Col<d;Col++)
258 1 WriteData(0);
259 1 }
260
261 void LcmInit( void )
262 {
263 1 WriteCommandL(0x3f); //开显示
264 1 WriteCommandM(0x3f);
265 1 WriteCommandR(0x3f);
266 1
267 1 WriteCommandL(0xc0); //设置起始地址=0
268 1 WriteCommandM(0xc0);
269 1 WriteCommandR(0xc0);
270 1
271 1 WriteCommandL(0x3f); //开显示
272 1 WriteCommandM(0x3f);
273 1 WriteCommandR(0x3f);
274 1
275 1 LcmClear(0,8,0,192);
276 1 Col = 0;
277 1 Page= 0;
278 1 Locatexy();
279 1 }
280
281 void LcmPutDots( unsigned char a,unsigned char b,unsigned char c,unsigned char d,unsigned char DotByte )
282 {
283 1 Page = 0;
284 1 Col = 0;
285 1 for(Page=a;Page<b;Page++)
286 1 {
287 2 for(Col=c;Col<d;Col++)
288 2 {
289 3 WriteData( DotByte );
290 3 }
291 2 }
292 1 }
293
294 void LcmPutBMP(unsigned char a,unsigned char b,unsigned char c,unsigned char d,unsigned char *puts )
295 {
296 1 unsigned int X=0;
297 1 Page = 0;
298 1 Col = 0;
299 1 for(Page=a;Page<b;Page++)
300 1 {
301 2 for(Col=c;Col<d;Col++)
302 2 {
303 3 WriteData( puts[X] );
C51 COMPILER V7.08 LCD 05/26/2008 00:03:31 PAGE 6
304 3 X++;
305 3 }
306 2 }
307 1 }
308
309 /*void date(void)
310 {
311 LcmPutBMP(0,2,42,50,number_0); //0
312 LcmPutBMP(0,2,50,58,number_8); //8年
313
314 LcmPutBMP(0,2,62,70,number_0); //(0-1)月
315 LcmPutBMP(0,2,70,78,number_5); //(0-9)月
316
317 LcmPutBMP(0,2,82,90,number_2); //0-3日
318 LcmPutBMP(0,2,90,98,number_6); //0-9日
319 }*/
320 void Delay(unsigned int MS)
321 {
322 1 unsigned char us,usn;
323 1 while(MS!=0)
324 1 {
325 2 usn = 2; //for 12M
326 2 while(usn!=0)
327 2 {
328 3 us=0xf6;
329 3 while (us!=0){us--;};
330 3 usn--;
331 3 }
332 2 MS--;
333 2 }
334 1 }
335 void key_scan(void)
336 {
337 1 if(KEY_YES==0){Delay(100);if(KEY_YES==0){KEY=1;}}
338 1 if(KEY_UP==0){Delay(100);if(KEY_UP==0){KEY=2;a+=1;if(a==5)a=1;}}
339 1 if(KEY_DOWN==0){Delay(100);if(KEY_DOWN==0){KEY=3;a-=1;if(a==0)a=4;}}
340 1 if(KEY_NO==0){Delay(100);if(KEY_NO==0){KEY=4;}}
341 1 }
342 void main_menu(void)
343 { KEY=0;
344 1 for(;;)
345 1 {
346 2 LcmPutBMP(0,2,2,34,DATE);
347 2 LcmPutBMP(0,2,34,42,Symbol);
348 2 LcmPutBMP(0,2,106,138,TIME);
349 2 LcmPutBMP(0,2,138,146,Symbol);
350 2 LcmPutBMP(2,4,2,66,Company_Profile);
351 2 LcmPutBMP(2,4,66,74,Symbol);
352 2 LcmPutBMP(2,4,100,164,Contact);
353 2 LcmPutBMP(2,4,164,172,Symbol);
354 2 LcmPutBMP(4,6,2,66,Information);
355 2 LcmPutBMP(4,6,66,74,Symbol);
356 2 LcmPutBMP(6,8,2,66,parameters);
357 2 LcmPutBMP(6,8,66,74,Symbol);
358 2
359 2 LcmPutBMP(0,2,42,50,number_0); //0
360 2 LcmPutBMP(0,2,50,58,number_8); //8年
361 2
362 2 LcmPutBMP(0,2,62,70,number_0); //(0-1)月
363 2 LcmPutBMP(0,2,70,78,number_5); //(0-9)月
364 2
365 2 LcmPutBMP(0,2,82,90,number_2); //0-3日
C51 COMPILER V7.08 LCD 05/26/2008 00:03:31 PAGE 7
366 2 LcmPutBMP(0,2,90,98,number_6); //0-9日
367 2
368 2 time_display();
369 2 key_scan();
370 2 if(KEY==4){break;}
371 2 if(a==1)
372 2 {
373 3
374 3 LcmClear(4,8,75,91);
375 3 LcmClear(2,4,175,191);
376 3 KEY=0;
377 3 for(;;)
378 3 {
379 4 LcmPutBMP(2,4,75,91,Cursor);
380 4 if(count_min_1==0){LcmClear(0,2,50,58);LcmPutBMP(0,2,50,58,number_0);}
381 4 if(count_min_1==1){LcmClear(0,2,50,58);LcmPutBMP(0,2,50,58,number_1);}
382 4 if(count_min_1==2){LcmClear(0,2,50,58);LcmPutBMP(0,2,50,58,number_2);}
- //8年
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -