標題: lcd12864顯示程序 [打印本頁]

作者: 18329736079    時間: 2018-4-16 20:00
標題: lcd12864顯示程序
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int

sbit LCD_RS=P3^4;       //數(shù)據(jù)/命令選擇端
sbit LCD_RW=P3^6;       //讀/寫選擇端
sbit LCD_EN=P3^5;       //液晶使能控制

uchar code dis_l1[]={"白日依山盡"};   //定義所要被顯示的數(shù)據(jù)
uchar code dis_l2[]={"黃河入海流"};
uchar code dis_l3[]={"欲窮千里目"};
uchar code dis_l4[]={"更上一層樓"};

void delayms(uint ms)
{
   uint i,j;
   for(i=ms;i>0;i++)
      for(j=110;j>0;j--);
}

/*寫指令到LCD中,指令通過單片機的P0口輸入,
  寫指令操作順序按照RS=0;RW=0;EN=0;延時;EN=1;寫指令;延時;EN=0的順序*/
void write_comd(uchar cmd)
{
   LCD_RS=0;
   LCD_RW=0;
   LCD_EN=0;
   delayms(5);
   LCD_EN=1;
   P0=cmd;
   delayms(5);
   LCD_EN=0;
}
/*寫數(shù)據(jù)到LCD中,數(shù)據(jù)通過單片機的P0口輸入,
  寫數(shù)據(jù)操作順序按照RS=1;RW=0;EN=0;延時;EN=1;寫數(shù)據(jù);延時;EN=0的順序*/
void write_dat(uchar dat)
{
   LCD_RS=1;
   LCD_RW=0;
   LCD_EN=0;
   delayms(5);
   LCD_EN=1;
   P0=dat;
   delayms(5);
   LCD_EN=0;
}

/*設定LCD的顯示位置 X表示所要顯示的行數(shù),Y表示所要顯示的列數(shù)*/
void lcd_posi(uchar X,uchar Y)
{
   uchar posi;
   if(X==1)
      X=0x80;
   else if(X==2)
           X=0x90;
           else if(X==3)
                   X=0x88;
                   else if(X==4)
                        X=0x98;
    posi=X+Y;
    write_comd(posi);
}

/*LCD初始化*/
void lcd_init()
{
   write_comd(0x30);     //LCD功能設定指令,采用八位數(shù)據(jù),基本指令集
   delayms(5);
   write_comd(0x0c);     //LCD顯示狀態(tài)開關指令,顯示開,游標開,不允許反白顯示
   delayms(5);
   write_comd(0x01);    //LCD清除顯示指令,清除LCD顯示內(nèi)容,為后面顯示做準備
   delayms(5);
}


void main()
{
   uchar i;
   lcd_init();    //初始化

   lcd_posi(1,0);//設定顯示位置為第一行第一個字符
   i=0;
   while(dis_l1[i]!='\0')
      {
         write_dat(dis_l1[i]);//顯示字符
         i++;
      }

   lcd_posi(2,0);//設定顯示位置為第二行第一個字符
   i=0;
   while(dis_l2[i]!='\0')
      {
         write_dat(dis_l2[i]);
         i++;
      }

   lcd_posi(3,0);//設定顯示位置為第三行第一個字符
   i=0;
   while(dis_l3[i]!='\0')
      {
         write_dat(dis_l3[i]);
         i++;
      }

   lcd_posi(4,0);//設定顯示位置為第四行第一個字符
   i=0;
   while(dis_l4[i]!='\0')
      {
         write_dat(dis_l4[i]);
         i++;
      }

}






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1