#endif
£Ã£È£Á£Ò £Ì£Ã£Ä£®£Ã #include
// º¯Êý¹¦ÄÜ: LCD³õʼ»¯ // Èë¿Ú²ÎÊý: ÎÞ // ·µ»Ø²ÎÊý: ÎÞ // È«¾Ö±äÁ¿: ÎÞ
// µ÷ÓÃÄ£¿é: lcd_wcmd(); delay(); void lcd_init() {
lcd_wcmd(0x38); delay(1);
lcd_wcmd(0x0c); delay(1);
lcd_wcmd(0x06); delay(1);
lcd_wcmd(0x01); }
//----------------------------------------------------------------- // ¹¦ÄܳÌÐò // bit lcd_bz() //
// º¯Êý¹¦ÄÜ: ¼ì²âLCD BFµÄ״̬ // Èë¿Ú²ÎÊý: ÎÞ // ·µ»Ø²ÎÊý: ÎÞ // È«¾Ö±äÁ¿: ÎÞ
// µ÷ÓÃÄ£¿é: ÎÞ
// ×¢ÒâÊÂÏî: ÿ´Î¶ÁдLCM²Ù×÷֮ǰ,Ó¦Ê×Ïȼì²âæ±êÖ¾BF,È·ÈÏBF=0ºó,·ÃÎʹý³Ì²ÅÄܽøÐÐ
//----------------------------------------------------------------- bit lcd_bz() {
bit busy; rs=0; rw=1; ep=1; _nop_(); _nop_(); _nop_(); _nop_();
busy=(bit)(P1&0x80); ep=0; return busy; }
25
//----------------------------------------------------------------- // void lcd_wcmd(unsigned char cmd)
//----------------------------------------------------------------- //
// º¯Êý¹¦ÄÜ: дLCMµÄÖ¸Áî´úÂë // Èë¿Ú²ÎÊý: LCMÖ¸Áî // ·µ»Ø²ÎÊý: ÎÞ // È«¾Ö±äÁ¿:
// µ÷ÓÃÄ£¿é: lcd_bz(); // ×¢ÒâÊÂÏî:
//----------------------------------------------------------------- void lcd_wcmd(unsigned char cmd) {
while(lcd_bz());//ÅжÏLCDÊÇ·ñæµ rs=0; rw=0; ep=0; _nop_(); _nop_(); P1=cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep=1; _nop_(); _nop_(); _nop_(); _nop_(); ep=0; }
//----------------------------------------------------------------- // void lcd_pos(unsigned char pos)
//----------------------------------------------------------------- //
// º¯Êý¹¦ÄÜ: д£Ì£Ã£ÄµÄÖ¸ÁîµØÖ· // Èë¿Ú²ÎÊý:£Ì£Ã£ÄÖ¸ÁîµØÖ· // ·µ»Ø²ÎÊý: ÎÞ // È«¾Ö±äÁ¿:
// µ÷ÓÃÄ£¿é: lcd_wcmd(); // ×¢ÒâÊÂÏî:
//----------------------------------------------------------------- void lcd_pos(unsigned char pos) {
lcd_wcmd(pos|0x80); }
//----------------------------------------------------------------- // void WrCLcdD (uchar lcddata)
26
//----------------------------------------------------------------- //
// º¯Êý¹¦ÄÜ: дLCMÒªÏÔʾµÄÊý¾Ý // Èë¿Ú²ÎÊý: ´ýдµÄÊý¾Ý // ·µ»Ø²ÎÊý: ÎÞ // È«¾Ö±äÁ¿:
// µ÷ÓÃÄ£¿é: lcd_bz(); // ×¢ÒâÊÂÏî:
//----------------------------------------------------------------- void lcd_wdat(unsigned char dat) {
while(lcd_bz());//ÅжÏLCDÊÇ·ñæµ rs=1; rw=0; ep=0; P1=dat; _nop_(); _nop_(); ep=1; _nop_(); _nop_(); ep=0;
_nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); }
//----------------------------------------------------------------- // ÑÓʱ³ÌÐò
//----------------------------------------------------------------- void delay(uchar ms) {
uchar i; while(ms--) {
for(i=0; i<250; i++) { _nop_(); _nop_(); _nop_(); _nop_(); } } }
£Ã£È£Á£Ò £Ì£Ã£Ä£®£È #ifndef __char_lcd_h__ #define __char_lcd_h__
//-----------------------------------------------------------------
27
// Êý¾ÝÀàÐͺ궨Òå
//----------------------------------------------------------------- #define uchar unsigned char #define uint unsigned int
//----------------------------------------------------------------- // I/O¿Ú¶¨Òå:¿ØÖÆ/Êý¾ÝÏß½Ó¿Ú
//----------------------------------------------------------------- sbit rs=P2^2; //¼Ä´æÆ÷Ñ¡Ôñ¶Ë¿Ú sbit rw=P2^1; //¶ÁдѡÔñ¶Ë¿Ú sbit ep=P2^0; //ʹÄÜÐźŶ˿Ú
//----------------------------------------------------------------- // Íⲿ±äÁ¿ÉùÃ÷
//----------------------------------------------------------------- //----------------------------------------------------------------- // Íⲿº¯ÊýÉùÃ÷
//----------------------------------------------------------------- extern void lcd_init(void); // LCD³õʼ»¯
extern bit lcd_bz(void); // ¼ì²âLCD BFµÄ״̬ extern void lcd_wcmd(uchar cmd); // дLCDµÄÖ¸Áî´úÂë extern void lcd_wdat(uchar dat); // дLCDÏÔʾµÄÊý¾Ý
extern void lcd_pos(uchar pos); // дLCDµÄÖ¸Áî´úÂëµØÖ·//extern void CG_Write (void);
extern void delay(uchar ms); // ÑÓʱ #endif
4.1 ʱÖÓ²¿·ÖÈí¼þÉè¼Æ
£Ä£é£ó£ð£ì£á£ù£®£ã
#include
uchar code dis4[] = {\
uchar code initdisp[] = {\//uchar code DT_place[] = {7,10,13,21,24,27};
uchar code DT_lcdplace[] = {0x07,0x0a,0x0d,0x45,0x48,0x4b}; uchar code DTdata_addr[] = {9,8,7,4,2,0}; uchar DTdata_tab[] = {0,0,0,0,0,0};
uchar code chars[8][6] = {{\ \ \{\ day \{%uchar data_h,data_l; void data_wr() {
uchar i;
for(i=5; i>=0; i--) {
*(ds_addr+(DTdata_addr[i]))=DTdata_tab[i];
28