同志們,做實驗的時候一定要把端口重新設置成和你的實際硬件一樣,不要說我是騙人的,著東西可編了我3個多小時,絕對沒問題!記得P0口加上拉,或者用其他端口,如果不顯示,參照《12864及1602液晶的驅動指南》,如果還不行,聯系本人,這是個靜態圖片,大家看看,絕對真實!
 - #include<reg52.h>
- #include<intrins.h>
- #include<absacc.h>
- #define Lcd_Bus P0 //MCU P0<------> LCM
- #define Disp_On 0x3f//開顯示
- #define Disp_Off 0x3e//關顯示
- #define Col_Add 0x40//列地址
- #define Page_Add 0xb8//頁地址
- #define Start_Line 0xc0//起始頁
- sbit cs1=P2^3; //Master chip enable
- sbit cs2=P2^4; //Slave chip enable
- sbit Enable=P2^2; // mode Enable single
- sbit Di=P2^0; //Data or Instrument Select
- sbit RW=P2^1; //Write or Read
- sbit Lcd_Rst=P2^5; //Lcm reset
- /*****************************
- 字模,此字體下對應的
- 點陣為:寬x高=16x16
- *****************************/
- unsigned char code Chinese_character[][32]=
- {
- {0x02,0xF2,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0xF2,0x02,0x00 ,
- 0x00,0x7F,0x28,0x24,0x22,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x7F,0x00,0x00},/*"西",0*/
- {0x80,0x90,0x8C,0x84,0x84,0xF4,0xA5,0x86,0x84,0x84,0x84,0x84,0x94,0x8C,0x84,0x00,
- 0x80,0x80,0x80,0x40,0x47,0x28,0x28,0x10,0x28,0x24,0x43,0xC0,0x40,0x00,0x00,0x00},/*"安",1*/
- {0x00,0x42,0x62,0x5A,0xC6,0x10,0x54,0x54,0x54,0xFF,0x54,0x54,0x7C,0x10,0x10,0x00,
- 0x40,0x23,0x14,0x08,0x17,0x28,0x29,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x40,0x00},/*"建",2*/
- {0x10,0x48,0x47,0xCC,0x54,0x44,0x14,0xE8,0x27,0x24,0x2C,0xF4,0x04,0x04,0x04,0x00,
- 0x10,0x30,0x10,0x0F,0x88,0x48,0x30,0x0F,0x01,0x06,0x00,0x3F,0x40,0x40,0x70,0x00},/*"筑",3*/
- {0x10,0x12,0x92,0x72,0xFE,0x51,0x91,0x00,0x22,0xCC,0x00,0x00,0xFF,0x00,0x00,0x00,
- 0x04,0x02,0x01,0x00,0xFF,0x00,0x04,0x04,0x04,0x02,0x02,0x02,0xFF,0x01,0x01,0x00},/*"科",4*/
- {0x08,0x08,0x88,0xFF,0x48,0x28,0x00,0xC8,0x48,0x48,0x7F,0x48,0xC8,0x48,0x08,0x00,
- 0x01,0x41,0x80,0x7F,0x00,0x40,0x40,0x20,0x13,0x0C,0x0C,0x12,0x21,0x60,0x20,0x00},/*"技",5*/
- {0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
- 0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00},/*"大",6*/
- {0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
- 0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00},/*"學",4*/
- {0x00,0x02,0x1C,0xE8,0x00,0x40,0x60,0x58,0x47,0x22,0x20,0x28,0x30,0xE0,0x40,0x00,
- 0x02,0x02,0x7F,0x00,0x00,0x00,0x7F,0x21,0x21,0x21,0x21,0x21,0x7F,0x00,0x00,0x00},/*"冶",0*/
- {0x40,0x40,0x20,0x20,0x50,0x48,0x44,0xC3,0x44,0x48,0x50,0x50,0x20,0x60,0x20,0x00,
- 0x40,0x40,0x42,0x42,0x4A,0x72,0x42,0x7F,0x42,0x62,0x5A,0x42,0x42,0x40,0x40,0x00},/*"金",1*/
- {0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
- 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00},/*"工",2*/
- {0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,
- 0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00},/*"程",3*/
- {0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
- 0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00},/*"學",4*/
- {0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,
- 0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00},/*"院",5*/
- {0x10,0x10,0xD0,0xFE,0x50,0x90,0x00,0x10,0x10,0x10,0xD0,0xFE,0x10,0x10,0x10,0x00,
- 0x08,0x06,0x01,0xFF,0x00,0x01,0x10,0x08,0x04,0x43,0x80,0x7F,0x00,0x00,0x00,0x00},/*"材",0*/
- {0x20,0x24,0xA8,0x70,0xFF,0x68,0xA4,0x20,0x42,0x8C,0x00,0x00,0xFF,0x00,0x00,0x00,
- 0x08,0x06,0x01,0x00,0xFF,0x00,0x01,0x02,0x02,0x03,0x02,0x02,0xFF,0x01,0x01,0x00},/*"料",1*/
- {0x00,0x08,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,
- 0x40,0x20,0x18,0x07,0x00,0x20,0x40,0x3F,0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00},/*"加",2*/
- {0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
- 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00},/*"工",4*/
- {0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
- 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00},/*"工",4*/
- {0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,
- 0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00},/*"程",5*/
- };
- unsigned char code E[][16]=
- {
- {0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00},/*"C",0*/
- {0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00},/*"r",1*/
- {0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20},/*"a",2*/
- {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00},/*"s",3*/
- {0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00},/*"y",4*/
- {0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00},/*"b",5*/
- {0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00},/*"o",6*/
- {0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00},/*"y",7*/
- {0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00},/*"e",8*/
- };
- /***********************延時子程序***********************/
- void delay(unsigned int k)
- {
- unsigned int i;
- unsigned int j;
- for(i=0;i<k;i++)
- for(j=0;j<20;j++);
- }
- /***********************寫命令左***********************/
- void write_cmd_1(unsigned char command)
- {
- cs1=1;cs2=0;
- Di=0;
- RW=0;
- Lcd_Bus=command;
- delay(0);
- Enable=1;
- delay(0);
- Enable=0;
- }
- /***********************寫命令右***********************/
- void write_cmd_2(unsigned char command)
- {
- cs1=0;cs2=1;
- Di=0;
- RW=0;
- Lcd_Bus=command;
- delay(0);
- Enable=1;
- delay(0);
- Enable=0;
- }
- /***********************寫數據左***********************/
- void write_data_1(unsigned char dis_data)
- {
- cs1=1;cs2=0;
- Di=1;
- RW=0;
- Lcd_Bus=dis_data;
- delay(0);
- Enable=1;
- delay(0);
- Enable=0;
- }
- /***********************寫數據右***********************/
- void write_data_2(unsigned char dis_data)
- {
- cs1=0;cs2=1;
- Di=1;
- RW=0;
- Lcd_Bus=dis_data;
- delay(0);
- Enable=1;
- delay(0);
- Enable=0;
- }
- /***********************清內存左***********************/
- void clear_1(void)
- {
- unsigned char j,k;
- cs1=1;cs2=0;
- write_cmd_1(Page_Add+0);
- write_cmd_1(Col_Add+0);
- for(k=0;k<8;k++){
- write_cmd_1(Page_Add+k);
- for(j=0;j<64;j++)write_data_1(0x00);
- }
- }
- /***********************清內存右***********************/
- void clear_2(void)
- {
- unsigned char j,k;
- cs1=0;cs2=1;
- write_cmd_2(Page_Add+0);
- write_cmd_2(Col_Add+0);
- for(k=0;k<8;k++){
- write_cmd_2(Page_Add+k);
- for(j=0;j<64;j++)write_data_2(0x00);
- }
- }
- /***********************顯示漢字16*16左************************/
- void Chinese_disp_1(unsigned char pag,unsigned char col,unsigned char n)
- {
- unsigned char i=0;
- unsigned char j=0;
- cs1=1;cs2=0;
- for(i=0;i<2;i++)
- {
- write_cmd_1(Page_Add+pag+i);
- write_cmd_1(Col_Add+col);
- for(j=0;j<16;j++)
- write_data_1(Chinese_character[n][16*i+j]);
- }
- }
- /***********************顯示漢字16*16右***********************/
- void Chinese_disp_2(unsigned char pag,unsigned char col,unsigned char n)
- {
- unsigned char i=0;
- unsigned char j=0;
- cs1=0;cs2=1;
- for(i=0;i<2;i++)
- {
- write_cmd_2(Page_Add+pag+i);
- write_cmd_2(Col_Add+col);
- for(j=0;j<16;j++)
- write_data_2(Chinese_character[n][16*i+j]);
- }
- }
- /***********************顯示英文16*8左************************/
- void E_disp_1(unsigned char pag,unsigned char col,unsigned char n)
- {
- unsigned char i=0;
- unsigned char j=0;
- cs1=1;cs2=0;
- for(i=0;i<2;i++)
- {
- write_cmd_1(Page_Add+pag+i);
- write_cmd_1(Col_Add+col);
- for(j=0;j<8;j++)
- write_data_1(E[n][8*i+j]);
- }
- }
- /***********************顯示英文16*8右***********************/
- void E_disp_2(unsigned char pag,unsigned char col,unsigned char n)
- {
- unsigned char i=0;
- unsigned char j=0;
- cs1=0;cs2=1;
- for(i=0;i<2;i++)
- {
- write_cmd_2(Page_Add+pag+i);
- write_cmd_2(Col_Add+col);
- for(j=0;j<8;j++)
- write_data_2(E[n][8*i+j]);
- }
- }
- /***********************液晶屏初始化***********************/
- void init_lcd()
- {
- Lcd_Rst=0;
- delay(100);
- Lcd_Rst=1;
- delay(100);
- write_cmd_1(Disp_Off); write_cmd_2(Disp_Off);
- write_cmd_1(Page_Add+0); write_cmd_2(Page_Add+0);
- write_cmd_1(Start_Line+0); write_cmd_2(Start_Line+0);
- write_cmd_1(Col_Add+0); write_cmd_2(Col_Add+0);
- write_cmd_1(Disp_On); write_cmd_2(Disp_On);
- }
- /***********************LCD顯示子程序***********************/
- void display(void)
- {
- unsigned char i;
- for(i=Start_Line;i<0xff;i++)
- {
- Chinese_disp_1(0,0, 0);
- Chinese_disp_1(0,16,1);
- Chinese_disp_1(0,32,2);
- Chinese_disp_1(0,48,3);
- Chinese_disp_2(0,0, 4);
- Chinese_disp_2(0,16,5);
- Chinese_disp_2(0,32,6);
- Chinese_disp_2(0,48,7);
- //西安建筑科技大學
- Chinese_disp_1(2,16,8);
- Chinese_disp_1(2,32,9);
- Chinese_disp_1(2,48,10);
- Chinese_disp_2(2,0,11);
- Chinese_disp_2(2,16,12);
- Chinese_disp_2(2,32,13);
- //冶金工程學院
- Chinese_disp_1(4,16,14);
- Chinese_disp_1(4,32,15);
- Chinese_disp_1(4,48,16);
- Chinese_disp_2(4,0,17);
- Chinese_disp_2(4,16,18);
- Chinese_disp_2(4,32,19);
- //材料加工工程
- E_disp_1(6,24,0);
- E_disp_1(6,32,1);
- E_disp_1(6,40,2);
- E_disp_1(6,48,3);
- E_disp_1(6,56,4);
- E_disp_2(6,0,5);
- E_disp_2(6,8,6);
- E_disp_2(6,16,7);
- E_disp_2(6,24,8);
- //Crasyboye
- write_cmd_1(i);
- write_cmd_2(i);
- delay(3000);//調整滾動速度
- }
- //delay(60000);
- }
- /***********主程序************/
- void main(void)
- { init_lcd();
- clear_1();
- clear_2();
- while(1)
- {
- display();
- }
- }
復制代碼
|