<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          1602液晶顯示實驗

          作者: 時間:2012-06-21 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/165400.htm

          //讀狀態(tài)
          unsigned char ReadStatusLCM(void)
          {
          LCM_Data = 0xFF;
          LCM_RS = 0;
          LCM_RW = 1;
          LCM_E = 0;
          LCM_E = 0;
          LCM_E = 1;
          while (LCM_Data Busy); //檢測忙信號
          return(LCM_Data);
          }

          void LCMInit(void) //LCM初始化
          {
          LCM_Data = 0;
          WriteCommandLCM(0x38,0); //三次顯示模式設(shè)置,不檢測忙信號
          Delay5Ms();
          WriteCommandLCM(0x38,0);
          Delay5Ms();
          WriteCommandLCM(0x38,0);
          Delay5Ms();

          WriteCommandLCM(0x38,1); //顯示模式設(shè)置,開始要求每次檢測忙信號
          WriteCommandLCM(0x08,1); //關(guān)閉顯示
          WriteCommandLCM(0x01,1); //顯示清屏
          WriteCommandLCM(0x06,1); // 顯示光標(biāo)移動設(shè)置
          WriteCommandLCM(0x0C,1); // 顯示開及光標(biāo)設(shè)置
          }

          //按指定位置顯示一個字符
          void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
          {
          Y = 0x1;
          X = 0xF; //限制X不能大于15,Y不能大于1
          if (Y) X |= 0x40; //當(dāng)要顯示第二行時地址碼+0x40;
          X |= 0x80; //算出指令碼
          WriteCommandLCM(X, 0); //這里不檢測忙信號,發(fā)送地址碼
          WriteDataLCM(DData);
          }

          //按指定位置顯示一串字符
          void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
          {
          unsigned char ListLength;

          ListLength = 0;
          Y = 0x1;
          X = 0xF; //限制X不能大于15,Y不能大于1
          while (DData[ListLength]>0x20) //若到達(dá)字串尾則退出
          {
          if (X = 0xF) //X坐標(biāo)應(yīng)小于0xF
          {
          DisplayOneChar(X, Y, DData[ListLength]); //顯示單個字符
          ListLength++;
          X++;
          }
          }
          }

          //5ms延時
          void Delay5Ms(void)
          {
          unsigned int TempCyc = 5552;
          while(TempCyc--);
          }

          //400ms延時
          void Delay400Ms(void)
          {
          unsigned char TempCycA = 5;
          unsigned int TempCycB;
          while(TempCycA--)
          {
          TempCycB=7269;
          while(TempCycB--);
          };
          }

          [注:AT89S51使用12M晶振]

          #define LCM_RW P2_0 //定義引腳
          #define LCM_RS P2_1
          #define LCM_E P2_2
          #define LCM_Data P1
          #define Busy 0x80 //用于檢測LCM狀態(tài)字中的Busy標(biāo)識

          #include at89x51.h>

          void WriteDataLCM(unsigned char WDLCM);
          void WriteCommandLCM(unsigned char WCLCM,BuysC);
          unsigned char ReadDataLCM(void);
          unsigned char ReadStatusLCM(void);
          void LCMInit(void);
          void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
          void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
          void Delay5Ms(void);
          void Delay400Ms(void);

          unsigned char code cdle_net[] = {www.cdle.net};
          unsigned char code email[] = {pnzwzw@cdle.net};

          void main(void)
          {
          Delay400Ms(); //啟動等待,等LCM講入工作狀態(tài)
          LCMInit(); //LCM初始化
          Delay5Ms(); //延時片刻(可不要)

          DisplayListChar(0, 0, cdle_net);
          DisplayListChar(0, 1, email);
          ReadDataLCM();//測試用句無意義
          while(1);
          }

          //寫數(shù)據(jù)
          void WriteDataLCM(unsigned char WDLCM)
          {
          ReadStatusLCM(); //檢測忙
          LCM_Data = WDLCM;
          LCM_RS = 1;
          LCM_RW = 0;
          LCM_E = 0; //若晶振速度太高可以在這后加小的延時
          LCM_E = 0; //延時
          LCM_E = 1;
          }

          //寫指令
          void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC為0時忽略忙檢測
          {
          if (BuysC) ReadStatusLCM(); //根據(jù)需要檢測忙
          LCM_Data = WCLCM;
          LCM_RS = 0;
          LCM_RW = 0;
          LCM_E = 0;
          LCM_E = 0;
          LCM_E = 1;
          }

          //讀數(shù)據(jù)
          unsigned char ReadDataLCM(void)
          {
          LCM_RS = 1;
          LCM_RW = 1;
          LCM_E = 0;
          LCM_E = 0;
          LCM_E = 1;
          return(LCM_Data);
          }


          上一頁 1 2 下一頁

          關(guān)鍵詞: 實驗 液晶顯示

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();