硬體:TG12232B (122*32)模擬口線接線方式 連接線圖: --------------------------------------------------| |DB0-----P0.0 | DB4-----P0.4 | RW-------P1.1 | A0--------P1.0 | |DB1-----P0.1 | DB5-----P0.5 | RS-------P2.1 | V0接1K電阻到GND | |DB2-----P0.2 | DB6-----P0.6 | E1-------P1.3 | |DB3-----P0.3 | DB7-----P0.7 | E2-------P1.2 | --------------------------------------------------- 本程序源碼只供學習參考,如有需要請聯繫作者。 [注:AT89x52使用22.1184M或11.0592M晶振,實測使用22.1184M或11.0592都可以] 編譯平台:Keil uV2 7.08 //可能看起來有點亂,不過效果還是不錯的,顯示圖形總的來說比顯示漢字要簡單,當然顯示漢字也不難。 希望此程序能給你一些幫助。 =============================================================*/ #include <AT89X52.H> #define uchar unsigned char #define uint unsigned int #define E1 P1_3 //塊1 左邊 #define E2 P1_2 //塊2 右邊 #define RW P1_1 #define A0 P1_0 //A0為1時是數據,0時為指令數據 #define DATA P0 //數據 extern unsigned char code Bmpt1[]; extern unsigned char code Bmpt2[]; extern unsigned char code Bmpt3[]; extern unsigned char code Bmpt4[]; extern unsigned char code Bmpt5[]; extern unsigned char code Bmpt6[]; extern unsigned char code Bmpt7[]; extern unsigned char code Bmptc[]; extern unsigned char code bmp001[]; extern unsigned char code Bmp08[]; extern unsigned char code Bmp07[]; extern unsigned char code Bmp06[]; extern unsigned char code Bmp05[]; extern unsigned char code Bmp04[]; extern unsigned char code Bmp03[]; extern unsigned char code Bmp02[]; extern unsigned char code Bmp01[]; extern unsigned char code Bmp012[]; extern unsigned char code Bmp003[]; extern unsigned char code Bmp002[]; //延時 void delay(unsigned int i) { unsigned char k=200; while(i>0) { i--; } while(k>1)k--; } //左頁 //發送數據 void OUTMD(unsigned char i) { A0=1; //寫數據 //delay(5); E1=1; //delay(10); DATA=i; //delay(5); E1=0; } //左頁 //發送命令 void OUTMI(unsigned char i) { A0=0; //寫指令 //delay(5); E1=1; //delay(10); DATA=i; //delay(5); E1=0; } //右頁 //發送數據 void OUTSD(unsigned char i) { A0=1; //寫數據 //delay(5); E2=1; //delay(10); DATA=i; //delay(5); E2=0; } //右頁 //發送命令 void OUTSI(unsigned char i) { A0=0; //寫指令 //delay(5); E2=1; //delay(10); DATA=i; //delay(5); E2=0; } //初始化 void lcdini(void) { RW=0; OUTMI(0XE2); OUTSI(0XE2);//複位 OUTMI(0XAE); OUTSI(0XAE);//POWER SAVE OUTMI(0XA4); OUTSI(0XA4);//動態驅動 OUTMI(0XA9); OUTSI(0XA9);//1/32占空比 OUTMI(0XA0); OUTSI(0XA0);//時鐘線輸出 OUTMI(0XEE); OUTSI(0XEE);//дģʽ OUTMI(0X00); OUTMI(0XC0); OUTSI(0X00); OUTSI(0XC0); OUTMI(0XAF); OUTSI(0XAF); } /* 函數說明:同時設置主從顯示頁為0-3頁。(內函數,私有,用戶不直接調用) ------------------------------------------------------------------------ */ void SetPage(uchar page0,uchar page1) { OUTMI(0xB8|page1);OUTSI(0xB8|page0); } /* -------------------------------------------------------------------------------- 函數說明:同時設置主從列地址為0-121。(內函數,私有,用戶不直接調用) -------------------------------------------------------------------------------- */ void SetAddress(uchar address0,uchar address1) { OUTMI(address1);OUTSI(address0); } /* -------------------------------------------------------------------------------- 調用方式:void PutChar0(uchar ch) |