專注電子技術(shù)學(xué)習(xí)與研究
當前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

四位數(shù)據(jù)口1602液晶顯示

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2011年08月12日   【字體:
//*****************************************************************
  /*
    程序功能:顯示兩行字符并且整屏左移 (程序使用在接口為4位的1602液晶)
  涉及芯片:1602液晶顯示器
  */
//*****************************************************************

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit rs=P2^0;//數(shù)據(jù)/命令選擇端(H/L)
sbit rw=P2^1;//讀/寫選擇端(H/L)
sbit en=P2^2; //使能選擇端
uchar code mingzi[]="Gui fa zhi !_!  "; //定義數(shù)據(jù)mingzi【】 
uchar code num[]="tel:18778434282 "; //定義數(shù)組num【】
void delay(uint time)//延時函數(shù)(運行的時間與晶振有關(guān)系)
 {
  uint i,j;
  for(i=time;i>0;i--)
    for(j=110;j>0;j--);
 }
void write_com(uchar mingling)//命令輸入函數(shù)
 {
   uchar gao,di; //定義高、低四位
   gao=mingling&0xf0;//分出高四位
   di=(mingling<<4)&0xf0;//分出低四位
  //==========================================讀走高四位
   P2=gao;//讓數(shù)據(jù)(mingling)高四位有效
   rs=0;//rs端為低電平時,為接收命令 
   delay(5);
   en=1; //en一個高脈沖讀走高四位數(shù)據(jù)(mingling)
   delay(5);
   en=0;//把使能端拉回低電平
 //============================================讀走低四位
   delay(5); 
   P2=di;//讓數(shù)據(jù)(mingling)低四位有效
   rs=0;//rs端為低電平時,為接收命令
   delay(5);
   en=1 ;//en一個高電平讀走低四位命令(mingling)
   delay(5);
   en=0;//把使能端拉回低電平
 }
void write_date(uchar shuju)//數(shù)據(jù)輸入函數(shù)
 {
  uchar gao,di;
  gao=shuju&0xf0;//分出高四位
  di=(shuju<<4)&0xf0;//分出低四位
//=======================================讀走高四位
  P2=gao;//讓數(shù)據(jù)(shuju)高四位有效
  rs=1;//rs端為高電平時,為接收數(shù)據(jù)
  delay(5);
  en=1;//en一個高電平讀走低四位數(shù)據(jù) (shuju)
  delay(5);
  en=0;//把使能端拉回低電平
//============================================讀走低四位
  delay(5);
  P2=di;//讓數(shù)據(jù)(shuju)低四位有效
  rs=1;//rs端為高電平時,為接收數(shù)據(jù)
  delay(5);
  en=1;//en一個高電平讀走低四位數(shù)據(jù)(shuju)
  delay(5);
  en=0;//把使能端拉回低電平
 }
void chushihua()
 {
  rw=0;//把數(shù)據(jù)/命令選擇端先置為零
  en=0;//把使能端先置為零
  write_com(0x28);//設(shè)置16*12顯示,5*7點陣,4位數(shù)據(jù)接口
  write_com(0x01);//清屏
  write_com(0x0c);//顯示開啟,不顯示光標
  write_com(0x06);//整屏不移動
 }
void main()//主函數(shù)
 {
   uint i,j; 
   chushihua();//對液晶初始化
   while(1)//死循環(huán)
    {
      write_com(0x80);
     for(i=0;i<16;i++)
      {
          write_date(mingzi[i]);
      }
  write_com(0x80+0x40);
     for(j=0;j<16;j++)
      {
          write_date(num[j]);
      }
  write_com(0x18);//寫控制字,在英文文檔里介紹。0x18為左移,0x1c為右移
  }
  }
關(guān)閉窗口

相關(guān)文章