找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1722|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

lcd12864顯示程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:309532 發(fā)表于 2018-4-16 20:00 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
#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中,指令通過單片機(jī)的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ù)通過單片機(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;
}

/*設(shè)定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è)定指令,采用八位數(shù)據(jù),基本指令集
   delayms(5);
   write_comd(0x0c);     //LCD顯示狀態(tài)開關(guān)指令,顯示開,游標(biāo)開,不允許反白顯示
   delayms(5);
   write_comd(0x01);    //LCD清除顯示指令,清除LCD顯示內(nèi)容,為后面顯示做準(zhǔn)備
   delayms(5);
}


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

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

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

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

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

}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表