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

📄 parallelst7920.txt

📁 ST7920的12864液晶显示器程序,刚开始使用C语言,试着改了个ST7920的12864程序,采用并口通信和51单片机。
💻 TXT
📖 第 1 页 / 共 2 页
字号:
      s++; 
      delay(50); 
   } 
} 
/*------------------首屏显示--------------------------*/ 
void ceshi() 
{write_com(0x01);//清除显示,并且设定地址指针为00H 
delay(5); 

write_com(0x80);//第一行(如果是地址是:80H,即LCD的第一行的第一个位置显示) 
hzkdis("czhaii@yahoo.cn"); 

write_com(0x90);//第二行(如果是地址是:90H,即LCD的第二行的第一个位置显示) 
hzkdis("常州单片机开发"); 

write_com(0x88);//第三行(如果是地址是:88H,即LCD的第二行的第一个位置显示) 
hzkdis("TEL13775061792"); 

write_com(0x98);//第四行(如果是地址是:98H,即LCD的第二行的第一个位置显示) 
hzkdis("测试程序: 蔡沁钰"); 


} 
/*------------------显示图片------------------------*/ 
void Disp_Img(unsigned char code *img) 
{  unsigned int j=0; 
   unsigned char x,y,i; 
       for(i=0;i<9;i+=8) 
       for(y=0;y<32;y++)/*原来 为 y<26 ,上下两个半屏不能正常对接显示,导致显示的图片中间有空隙*/ 
         for(x=0;x<8;x++) 
         {  write_com(0x36);//功能设置---8BIT控制界面,扩充指令集 
            write_com(y+0x80);        //行地址 
            write_com(x+0x80+i);     //列地址 
            write_com(0x30); 
            write_data(img[j++]); 
            write_data(img[j++]); 
         }   
           
} 
/*------------------清整个GDRAM空间----------------------------*/ 
void clrgdram() 
{ unsigned char x,y; 
        for(y=0;y<64;y++) 
         for(x=0;x<16;x++) 
         {  write_com(0x34); 
            write_com(y+0x80);        //行地址 
            write_com(x+0x80);     //列地址 
            write_com(0x30); 
            write_data(0x00); 
            write_data(0x00); 
                               } 
   } 
/*------------------整屏写入数据:全亮,或者竖条-----------------------------*/ 
void lcdfill(unsigned char disdata) 
{ unsigned char x,y; 
        for(y=0;y<32;y++) 
         for(x=0;x<16;x++) 
         {  write_com(0x36); 
            write_com(y+0x80);        //行地址 
            write_com(x+0x80);     //列地址 
            write_com(0x30); 
            write_data(disdata); 
            write_data(disdata); 
            } 
   write_com(0x34);                             
   write_com(0x36); 
   } 
/*------------------显示横-----------------------------*/ 
void Disp_H_Line() 
{  unsigned char x,y; 
   unsigned char k=0x00;   
       for(y=0;y<32;y++) 
         { k=~k; 
           for(x=0;x<16;x++) 
         {  write_com(0x36); 
            write_com(y+0x80);      //行地址 
            write_com(x+0x80);     //列地址 
            write_com(0x30); 
            write_data(k); 
            write_data(k); 
           }; 
         } 
     write_com(0x34);                           
   write_com(0x36); 
} 
/*------------------显示边框-------------------------------*/ 
void Frame() 
{unsigned char x,y; 
          lcdfill(0x00); 
        for(x=0;x<9;x+=8) 
          for(y=0;y<32;y++) 
           { write_com(0x36); 
            write_com(y+0x80);      //行地址 
            write_com(x+0x80);        //列地址 
            write_com(0x30); 
            write_data(0x80); 
            write_data(0x00); 
           
            write_com(0x36); 
            write_com(y+0x80);      //行地址 
            write_com(x+0x87);        //列地址 
            write_com(0x30); 
            write_data(0x00); 
            write_data(0x01); 
             
            } 
      for(y=0;y<2;y++) 
         for(x=0;x<8;x++) 
           {write_com(0x36); 
            write_com(y*31+0x80);      //行地址 
            write_com(x+0x80+8*y);        //列地址 
            write_com(0x30); 
            write_data(0xff); 
            write_data(0xff); 
           } 
         write_com(0x34); 
         write_com(0x36); 
                    } 

/*------------------在第7列的位置加入两条竖线--------------------------*/ 
void shuxian() 
{ unsigned char x,y; 
     
    for(x=0;x<9;x+=8) 
       for(y=0;y<32;y++) 
          { write_com(0x36); 
            write_com(y+0x80);    //行地址 
            write_com(x+0x86);     //列地址 
            write_com(0x30); 
            write_data(0x00); 
            write_data(0x14); 
          }; 
}     
           
/*------------------清屏命令--------------------------*/   
void clrscreen() 
{ 
   write_com(0x01); 
   delay(10); 
   } 
   
/*------------------唐诗《静夜思》--------------------------*/ 
void gushi_display() 
{  write_com(0x30); 
   clrscreen();   
   write_com(0x80+FIRST_ADDR); 
   hzkdis("白日依山尽,"); 
   write_com(0x90+FIRST_ADDR); 
   hzkdis("黄河入海流。"); 
   write_com(0x88+FIRST_ADDR); 
   hzkdis("欲穷千里目,"); 
   write_com(0x98+FIRST_ADDR); 
   hzkdis("更上一层楼。"); 
   write_com(0xb3+FIRST_ADDR); 
   hzkdis("登鹳雀楼"); 
   write_com(0xaa+FIRST_ADDR); 
   hzkdis("( 唐 )王之焕"); 
} 

main() 
{  unsigned char i; 
   while(1) 
   { 
    PSB=0;
 delay(300);
 PSB=1;        
     RW=0; 
      lcdreset();                    //初始化LCD屏 
      CGRAM();                         
      ceshi();                      //显示测试字样 
     delay(2000); 
     
      clrgdram(); 
     clrscreen();                  //清屏 
     Disp_Img(BMP);               //调入一幅图画 
      delay(30000); 

     Disp_Img(BMP1);               //调入一幅图画 
      delay(20000); 
                   
     lcdfill(0xff);               //显示全开 
      delay(2000);             
     
     Disp_H_Line();                //显示横条 
       delay(2000); 

       lcdfill(0xaa);               //显示竖条 
      delay(2000); 
     
      Frame();                     //显示边框 
      delay(2000); 
       
     gushi_display();             //显示唐诗 
      clrgdram(); 
           
     write_com(0x87);          //调用自定义的CGRAM的代码 
     write_data(0x00); 
     write_data(0x00); 
     delay(400); 
       
      shuxian();              //加入两条竖线 
      delay(8000); 
      write_com(0x30); 
       delay(2000); 
             
      gushi_display(); 
      delay(6000); 
      for(i=0;i<8;i++)        //字符循环左移 
     {write_com(0x18);   
        delay(2000);} 
           
       gushi_display(); 
      delay(6000);   
     write_com(0x36);         
      write_com(0x04);          //第一行反白显示 
      delay(6000); 
      write_com(0x04);          //第一行恢复正常 
      delay(6000); 
       write_com(0x05);          //第二行反白显示 
      delay(6000); 
      write_com(0x05);          //第二行恢复正常 
      delay(6000); 
           
      write_com(0x03);         //垂直滚动屏幕的内容 
      write_com(0x60); 
      delay(6000); 
   } 
} 
 


⌨️ 快捷键说明

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