⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hgo12864a.c

📁 keil c51 单片机控制128*64液晶屏
💻 C
字号:
/******************************************************************/

/******************************************************************/
#include <reg52.h>
#include <intrins.h>
/******************************************************************/

/*RES	EQU	P2.4
CS      EQU     P2.3
RS      EQU     P2.5    ;A0
SCL     EQU     P2.6
SDAT    EQU     P2.7
;PS1	EQU	P1.1*/
sbit    cs1=P2^3;
sbit    rst=P2^4;
sbit    a0=P2^5;
sbit    sclk=P2^6;
sbit    di=P2^7;

//sbit    key=P3^7;        /*     KEY	EQU P3.7 */  

unsigned char bdata flag;
sbit flag_key=flag^0;
unsigned int *p;
unsigned int *q;
#define  nop()      _nop_()   /*定义空指令*/

void lcd_init(void);
void delay(void);
void delay1(void);  

void wcom(unsigned char com);
void wdata(unsigned char dat);
void write(unsigned char a);


void disdate_a(unsigned char dat_a,unsigned char dat_b);
void disdate_b(unsigned char *p);
void disdate_c(unsigned char *q);
/*  西文字符库定义  */
unsigned char code success[768]={ 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /*" "=00H*/
0x00,0x00,0x00,0x4F,0x00,0x00,0x00,0x00,    /*"!"=01H*/
0x00,0x00,0x07,0x00,0x07,0x00,0x00,0x00,    /*"""=02h*/
0x00,0x14,0x7F,0x14,0x7F,0x14,0x00,0x00,    /*"#"=03h*/
0x00,0x24,0x2A,0x7F,0x2A,0x12,0x00,0x00,    /*"$"=04h*/
0x00,0x23,0x13,0x08,0x64,0x62,0x00,0x00,    /*"%"=05h*/
0x00,0x36,0x49,0x55,0x22,0x50,0x00,0x00,    /*"&"=06h*/
0x00,0x00,0x05,0x03,0x00,0x00,0x00,0x00,    /*"'"=07h*/
0x00,0x00,0x1C,0x22,0x41,0x00,0x00,0x00,    /*"("=08h*/
0x00,0x00,0x41,0x22,0x1C,0x00,0x00,0x00,    /*")"=09h*/
0x00,0x14,0x08,0x3E,0x08,0x14,0x00,0x00,    /*"*"=0Ah*/
0x00,0x08,0x08,0x3E,0x08,0x08,0x00,0x00,    /*"+"=0Bh*/
0x00,0x00,0x50,0x30,0x00,0x00,0x00,0x00,    /*";"=0Ch*/
0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x00,    /*"-"=0Dh*/
0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,    /*"."=0Eh*/
0x00,0x20,0x10,0x08,0x04,0x02,0x00,0x00,    /*"/"=0Fh*/
0x00,0x3E,0x51,0x49,0x45,0x3E,0x00,0x00,    /*"0"=10h*/
0x00,0x00,0x42,0x7F,0x40,0x00,0x00,0x00,    /*"1"=11h*/
0x00,0x42,0x61,0x51,0x49,0x46,0x00,0x00,    /*"2"=12h*/
0x00,0x21,0x41,0x45,0x4B,0x31,0x00,0x00,    /*"3"=13h*/
0x00,0x18,0x14,0x12,0x7F,0x10,0x00,0x00,    /*"4"=14h*/
0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00,    /*"5"=15h*/
0x00,0x3C,0x4A,0x49,0x49,0x30,0x00,0x00,    /*"6"=16h*/
0x00,0x01,0x01,0x79,0x05,0x03,0x00,0x00,    /*"7"=17h*/
0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00,    /*"8"=18h*/
0x00,0x06,0x49,0x49,0x29,0x1E,0x00,0x00,    /*"9"=19h*/
0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,    /*":"=1Ah*/
0x00,0x00,0x56,0x36,0x00,0x00,0x00,0x00,    /*";"=1Bh*/
0x00,0x08,0x14,0x22,0x41,0x00,0x00,0x00,    /*"<"=1Ch*/
0x00,0x14,0x14,0x14,0x14,0x14,0x00,0x00,    /*"="=1Dh*/
0x00,0x00,0x41,0x22,0x14,0x08,0x00,0x00,    /*">"=1Eh*/
0x00,0x02,0x01,0x51,0x09,0x06,0x00,0x00,    /*"?"=1Fh*/
0x00,0x32,0x49,0x79,0x41,0x3E,0x00,0x00,    /*"@"=20h*/
0x00,0x7E,0x11,0x11,0x11,0x7E,0x00,0x00,    /*"A"=21h*/
0x00,0x41,0x7F,0x49,0x49,0x36,0x00,0x00,    /*"B"=22h*/
0x00,0x3E,0x41,0x41,0x41,0x22,0x00,0x00,    /*"C"=23h*/
0x00,0x41,0x7F,0x41,0x41,0x3E,0x00,0x00,    /*"D"=24h*/
0x00,0x7F,0x49,0x49,0x49,0x49,0x00,0x00,    /*"E"=25h*/
0x00,0x7F,0x09,0x09,0x09,0x01,0x00,0x00,    /*"F"=26h*/
0x00,0x3E,0x41,0x41,0x49,0x7A,0x00,0x00,    /*"G"=27h*/
0x00,0x7F,0x08,0x08,0x08,0x7F,0x00,0x00,    /*"h"=28h*/
0x00,0x00,0x41,0x7F,0x41,0x00,0x00,0x00,    /*"I"=29h*/
0x00,0x20,0x40,0x41,0x3F,0x01,0x00,0x00,    /*"J"=2Ah*/
0x00,0x7F,0x08,0x14,0x22,0x41,0x00,0x00,    /*"K"=2Bh*/
0x00,0x7F,0x40,0x40,0x40,0x40,0x00,0x00,    /*"L"=2Ch*/
0x00,0x7F,0x02,0x0C,0x02,0x7F,0x00,0x00,    /*"M"=2Dh*/
0x00,0x7F,0x06,0x08,0x30,0x7F,0x00,0x00,    /*"N"=2Eh*/
0x00,0x3E,0x41,0x41,0x41,0x3E,0x00,0x00,    /*"O"=2Fh*/
0x00,0x7F,0x09,0x09,0x09,0x06,0x00,0x00,    /*"P"=30h*/
0x00,0x3E,0x41,0x51,0x21,0x5E,0x00,0x00,    /*"Q"=31h*/
0x00,0x7F,0x09,0x19,0x29,0x46,0x00,0x00,    /*"R"=32h*/
0x00,0x26,0x49,0x49,0x49,0x32,0x00,0x00,    /*"S"=33h*/
0x00,0x01,0x01,0x7F,0x01,0x01,0x00,0x00,    /*"T"=34h*/
0x00,0x3F,0x40,0x40,0x40,0x3F,0x00,0x00,    /*"U"=35h*/
0x00,0x1F,0x20,0x40,0x20,0x1F,0x00,0x00,    /*"V"=36h*/
0x00,0x7F,0x20,0x18,0x20,0x7F,0x00,0x00,    /*"W"=37h*/
0x00,0x63,0x14,0x08,0x14,0x63,0x00,0x00,    /*"X"=38h*/
0x00,0x07,0x08,0x70,0x08,0x07,0x00,0x00,    /*"Y"=39h*/
0x00,0x61,0x51,0x49,0x45,0x43,0x00,0x00,    /*"Z"=3Ah*/
0x00,0x00,0x7F,0x41,0x41,0x00,0x00,0x00,    /*"["=3Bh*/
0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x00,    /*"\"=3Ch*/
0x00,0x00,0x41,0x41,0x7F,0x00,0x00,0x00,    /*"]"=3Dh*/
0x00,0x04,0x02,0x01,0x02,0x04,0x00,0x00,    /*"^"=3Eh*/
0x00,0x40,0x40,0x40,0x40,0x40,0x00,0x00,    /*"_"=3Fh*/
0x00,0x01,0x02,0x04,0x00,0x00,0x00,0x00,    /*"`"=40h*/
0x00,0x20,0x54,0x54,0x54,0x78,0x00,0x00,    /*"a"=41h*/
0x00,0x7F,0x48,0x44,0x44,0x38,0x00,0x00,    /*"b"=42h*/
0x00,0x38,0x44,0x44,0x44,0x28,0x00,0x00,    /*"c"=43h*/
0x00,0x38,0x44,0x44,0x48,0x7F,0x00,0x00,    /*"d"=44h*/
0x00,0x38,0x54,0x54,0x54,0x18,0x00,0x00,    /*"e"=45h*/
0x00,0x00,0x08,0x7E,0x09,0x02,0x00,0x00,    /*"f"=46h*/
0x00,0x0C,0x52,0x52,0x4C,0x3E,0x00,0x00,    /*"g"=47h*/
0x00,0x7F,0x08,0x04,0x04,0x78,0x00,0x00,    /*"h"=48h*/
0x00,0x00,0x44,0x7D,0x40,0x00,0x00,0x00,    /*"i"=49h*/
0x00,0x20,0x40,0x44,0x3D,0x00,0x00,0x00,    /*"j"=4Ah*/
0x00,0x00,0x7F,0x10,0x28,0x44,0x00,0x00,    /*"k"=4Bh*/
0x00,0x00,0x41,0x7F,0x40,0x00,0x00,0x00,    /*"l"=4Ch*/
0x00,0x7C,0x04,0x78,0x04,0x78,0x00,0x00,    /*"m"=4Dh*/
0x00,0x7C,0x08,0x04,0x04,0x78,0x00,0x00,    /*"n"=4Eh*/
0x00,0x38,0x44,0x44,0x44,0x38,0x00,0x00,    /*"o'=4Fh*/
0x00,0x7E,0x0C,0x12,0x12,0x0C,0x00,0x00,    /*"p"=50h*/
0x00,0x0C,0x12,0x12,0x0C,0x7E,0x00,0x00,    /*"q"=51h*/
0x00,0x7C,0x08,0x04,0x04,0x08,0x00,0x00,    /*"r"=52h*/
0x00,0x58,0x54,0x54,0x54,0x64,0x00,0x00,    /*"s"=53h*/
0x00,0x04,0x3F,0x44,0x40,0x20,0x00,0x00,    /*"t"=54h*/
0x00,0x3C,0x40,0x40,0x3C,0x40,0x00,0x00,    /*"u"=55h*/
0x00,0x1C,0x20,0x40,0x20,0x1C,0x00,0x00,    /*"v"=56h*/
0x00,0x3C,0x40,0x30,0x40,0x3C,0x00,0x00,    /*"w"=57h*/
0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x00,    /*"x"=58h*/
0x00,0x1C,0xA0,0xA0,0x90,0x7C,0x00,0x00,    /*"y"=59h*/
0x00,0x44,0x64,0x54,0x4C,0x44,0x00,0x00,    /*"z"=5Ah*/
0x00,0x00,0x08,0x36,0x41,0x00,0x00,0x00,    /*"{"=5Bh*/
0x00,0x00,0x00,0x77,0x00,0x00,0x00,0x00,    /*"|"=5Ch*/
0x00,0x00,0x41,0x36,0x08,0x00,0x00,0x00,    /*"}"=5Dh*/
0x00,0x02,0x01,0x02,0x04,0x02,0x00,0x00,    /*"~"=5Fh*/
0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00     /*" "=0x60*/
 };

/*  中文字符库定义  */
unsigned char code CCTAB[128]={
                                   0x82,0x8A,0x92,0xB2,0x02,0xA7,0x92,0x5E,     /*蓬90 = 00H*/
                                   0x2A,0xAF,0x2A,0x5A,0x4A,0x83,0x82,0x00,
                                   0x00,0x80,0x40,0x3F,0x41,0x90,0x95,0x95,
                                   0x95,0xFF,0x95,0x95,0x95,0xD0,0x40,0x00,
                                   0x80,0x64,0x24,0x24,0x3F,0x24,0xA6,0x64,     /*勃90 = 01H*/
                                   0x20,0x20,0xFF,0x20,0x20,0xF0,0x20,0x00,
                                   0x00,0x08,0x49,0x89,0x7D,0x0B,0x89,0x40,
                                   0x30,0x0E,0x41,0x80,0x40,0x3F,0x00,0x00,
                                   0x40,0x42,0x44,0xCC,0x00,0x20,0x22,0xE2,     /*远90 = 02H*/
                                   0x22,0x22,0xE2,0x23,0x32,0x20,0x00,0x00,
                                   0x00,0x40,0x20,0x1F,0x20,0x50,0x4C,0x43,
                                   0x40,0x40,0x47,0x48,0x48,0x6E,0x20,0x00,
                                   0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,     /*大90 = 03H*/
                                   0xA0,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
                                   0x00,0x40,0x40,0x20,0x10,0x0C,0x03,0x00,
                                   0x01,0x06,0x08,0x10,0x20,0x60,0x20,0x00
                                   };



/*************************************************/
 /*延时*/
/*************************************************/
void delay(void)    
 {unsigned char i,j;
   for(i=32;i>0;i--)
    for(j=255;j>0;j--);
 }

 /*************************************************/
 /*延时*/
/*************************************************/
void delay1(void)    
 {unsigned char i,j;
   for(i=255;i>0;i--)
    {
	for(j=255;j>0;j--) 
	{nop();
	 nop();
	 nop();
	 nop();
	 nop();
	 nop();
	 nop();
	 nop();}
	}
 }
/*************************************************/
//初始化
/*************************************************/
void lcd_init(void)
{
  rst=0;
  delay();
  rst=1;
  delay();
  wcom(0xa3);       //LCD BIAS SET ( A2 1/8;A3 1/65DUTY)
  wcom(0xa0);       //ADC  select,NORMAL   0-->127
  wcom(0xaf);       // DISPLAY ON/OFF
  wcom(0x2f);        //power control(VB,VR,VF=1,1,1)
  wcom(0x23);        // VOLT REGULATOR RADIO SET 
  wcom(0x81);       //ELECTRONIC VOLUME mode setting 100B 对比度命令
  wcom(0x28);       //REFERENCE VOLT REG  set
  wcom(0xc0);        //SHL SELECT
  wcom(0xaf);        //DISPLAY ON/OFF
  wcom(0x40);        // DISPLAY START LINE SET
  


  nop();
  nop();
}

/*************************************************/
//检查按键是否有动作,有动作则显示下一屏内容
//没动作则延时1s继续显示下一屏内容
/*************************************************/


/*************************************************/
//写命令
/*************************************************/

void wcom(unsigned char com)
 { 
   cs1=0;
   nop();
   a0=0;
   nop();
   write(com);
   nop();
   nop(); 
   cs1=1;
}

/*************************************************/
//写数据
/*************************************************/

void wdata(unsigned char dat)
 {
   cs1=0;
   nop();
   a0=1;
   nop();
   write(dat);  
   nop();
   nop(); 
   cs1=1;
}
/*************************************************
//串口移位输出
/*************************************************/

void write(unsigned char dat)
 {  unsigned char s,temp;
    int i;
    sclk=0;
    s=dat;

    for(i=8;i>0;i--)
      {sclk=0;
       nop();
       nop();
       temp=s & 0x80;
       if(temp)
            {di=1;}
       else {di=0;}

       sclk=1;   
       s=s<<1;  
      }
 } 

 /********************************************/
/*  西文字符写入函数:CW_PR                */

void cwpr(unsigned char cod,unsigned char page,unsigned char seg)
{ unsigned char zmseg;
  unsigned char date1;
		wcom(0xB0+page);  
        delay();                                   
        wcom(0x10+0x0F&(seg>>4));   
        delay();  		
        wcom(0x0F&seg);   
     	delay();		
		for(zmseg=0;zmseg<=7;zmseg++)
        {   
			wdata(success[cod*8+zmseg]);
			delay();
}
}
/*16*16汉字写入子程序*/
void ccwpr(unsigned char cod,unsigned char page,unsigned char seg)
{ unsigned char zmseg;
  unsigned char date1;
		
        wcom(0xB0+page+1); 
        delay();                                    
        wcom(0x10+0x0F&(seg>>4));  
        delay();   		
        wcom(0x0F&seg); 
		delay();
       for(zmseg=16;zmseg<=31;zmseg++)
        {   
			wdata(CCTAB[cod*32+zmseg]);
			delay();
}
        wcom(0xB0+page);  
        delay();                                            
        wcom(0x10+0x0F&(seg>>4)); 
        delay();             		
        wcom(0x0F&seg); 
        delay();        			
		for(zmseg=0;zmseg<=15;zmseg++)
        {   
			wdata(CCTAB[cod*32+zmseg]);
			delay();
}
}

/*************************************************/
//写disdate_a数据
/*************************************************/
void disdate_a(unsigned char dat_a,unsigned char dat_b)
{
   int seg;
   unsigned char page;
   for(page=0xb0;page<0xb9;page++)                     //写页地址共9页  0xb8----0xb9
      { wcom(page);                                    //如下汉字可改
        wcom(0x10); 
        wcom(0x00); 
                   
        for(seg=0;seg<64;seg++)
           { wdata(dat_a);
             wdata(dat_b);
           }
      } 
   wcom(0xaf);           
}
/*************************************************/
//写disdate_b数据
/*************************************************/
void disdate_b(unsigned char *p)
{
   int seg;
   unsigned char page;
   wcom(0xaf);
   for(page=0xb0;page<0xb9;page++)                    //写页地址共8页  0xb0----0xb8
	 {
          wcom(page);                      
          wcom(0x10); 
          wcom(0x00); 
                     
          for(seg=0;seg<128;seg++)
             { 
              wdata(*p++);
             }              
         }           
 }

/*************************************************/
//写disdate_c数据
/*************************************************/
void disdate_c(unsigned char *q)
{  int seg;
   unsigned char page;
   wcom(0xaf);
   for(page=0xb0;page<0xb9;page++) //写页地址共8页  0xb0----0xb8
         {
          wcom(page);
          wcom(0x10);
          wcom(0x00);
          q=q+128;
          for(seg=128;seg>0;seg--)
             {
              wdata(*q--);
             }  
          q=q+128;        
         }
}           

/**************************************************/
//test user 
/**************************************************/
/*
void data_send(unsigned char dat)
 {
    SBUF=dat;
    while(TI==0);
    TI=0;
 } 
*/
/*************************************************/
/*主程序
/*************************************************/
void main(void)
{


     delay();
     delay();
     lcd_init();

 while(1)          //START
 {
//     disdate_b(&tab1);
//	 delay1();
    // delay_keycheck();

	
     disdate_a(0x00,0x00);
     ccwpr(0,1,32);//清
     ccwpr(1,1,48);//达 
	 ccwpr(2,1,64);//光
	 ccwpr(3,1,80);//电
	 cwpr(0x10,4,16);
     cwpr(0x11,4,24);
	 cwpr(0x10,4,32);
	 cwpr(0x0d,4,40);
	 cwpr(0x16,4,48);
	 cwpr(0x12,4,56);
	 cwpr(0x10,4,64);
	 cwpr(0x15,4,72);
	 cwpr(0x11,4,80);
	 cwpr(0x12,4,88);
	 cwpr(0x10,4,96);
	 cwpr(0x19,4,104);
	 delay1();
     disdate_a(0xaa,0xaa);
	 delay1();
    // delay_keycheck();

     disdate_a(0x55,0x55);
	 delay1();
    // delay_keycheck();

     disdate_a(0xff,0x00);
	 delay1();
    // delay_keycheck();

     disdate_a(0x00,0xff);
	 delay1();
   //  delay_keycheck();

     disdate_a(0xaa,0x55);
	 delay1();
   //  delay_keycheck();

     disdate_a(0xff,0xff);
	 delay1();
   //  delay_keycheck();

     disdate_a(0x00,0x00);
	 delay1();
   //  delay_keycheck();
   
//     disdate_b(&tab2);
//	 delay1();
   //  delay_keycheck();

//     disdate_c(&tab3);
//	 delay1();
   //  delay_keycheck();

  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -