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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > pic單片機(jī)兩個(gè)IO口四線驅(qū)動LCD1602

          pic單片機(jī)兩個(gè)IO口四線驅(qū)動LCD1602

          作者: 時(shí)間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
          經(jīng)過多天調(diào)式,優(yōu)化程序。只用兩個(gè)IO端口驅(qū)動74LS164擴(kuò)展成并口驅(qū)動LCD1602(四線模式),這是個(gè)完整簡單的例子,可實(shí)現(xiàn)字符串左移200次,右移200次,不停的循環(huán)?,F(xiàn)上傳與大家共享成果!//引入頭文件*********************************************************

          #include
          #include
          #include "delay.h"
          #include "delay.c"

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

          //熔絲配置***********************************************************
          __CONFIG(PROTECT & CPD & BOREN & MCLRDIS & PWRTEN & WDTDIS & INTIO);

          //端口定義***********************************************************
          #define Port GPIO //端口址址
          #define Tris TRISIO //方向設(shè)置

          //腳位定義***********************************************************
          #define Dat GPIO4 //數(shù)據(jù)引腳
          #define Clk GPIO5 //時(shí)鐘引腳

          //顯示字符***********************************************************
          unsigned char TopChar[] = {"www.pic16.com "}; //
          unsigned char BotChar[] = {"ivws "}; //

          //*******************************************************************
          //函數(shù)名稱:PortInit();
          //輸入?yún)?shù):無
          //輸出參數(shù):無
          //功能描述:端口設(shè)置
          //建造日期:2008.12.08
          //********************************************************************
          void PortInit(void)
          {
          Port = 0x00; //端口設(shè)置
          Tris = 0x00;
          }

          //*******************************************************************
          //函數(shù)名稱:ConInit();
          //輸入?yún)?shù):無
          //輸出參數(shù):無
          //功能描述:定時(shí)器設(shè)置
          //建造日期:2008.12.08
          //*******************************************************************
          void ConInit(void)
          {
          OPTION = 0x00; //允許上拉
          CMCON = 0x07; //關(guān)比較器
          }

          //*******************************************************************
          //函數(shù)名稱: TxLs164(data);
          //輸入?yún)?shù):串行數(shù)據(jù)
          //輸出參數(shù):無
          //功能描述:串行發(fā)送數(shù)據(jù)
          //建造日期:2008.12.08
          //*******************************************************************
          void TxLs164(unsigned chardata)
          {
          unsigned char i;

          i = 6; //送出六位

          do
          {
          Dat = 0; //數(shù)據(jù)清零
          Clk = 1; //時(shí)鐘置位
          Clk = 0; //時(shí)鐘清零
          }
          while (--i); //循環(huán)發(fā)送

          i = 6; //送出六位

          do
          {
          Dat = 0; //先高后低

          if (data & 0x20) Dat = 1;

          Clk = 1; //時(shí)鐘置位
          data<<= 1; //數(shù)據(jù)左移
          Clk = 0; //時(shí)鐘清零
          }
          while (--i); //循環(huán)發(fā)送
          }

          //*******************************************************************
          //函數(shù)名稱: WriteData(data, rs);
          //輸入?yún)?shù):待寫數(shù)據(jù), 0 = 指令,1 = 數(shù)據(jù)
          //輸出參數(shù):無
          //功能描述:數(shù)據(jù)寫入LCD
          //建造日期:2008.12.08
          //*******************************************************************
          void WriteData(unsigned char data, unsigned char rs)
          {
          unsigned char temp;

          temp =data>> 4; //取高四位
          temp |= 1 << 5; //使用置位

          if (rs & 0x01) temp |= 1 << 4; //數(shù)據(jù)選擇

          TxLs164(temp); //寫高四位
          Dat = 1; //使能下沿
          Dat = 0;
          DelayUs(50); //延時(shí)等待

          temp =data& 0x0f; //取低四位
          temp |= 1 << 5; //使用置位

          if (rs & 0x01) temp |= 1 << 4; //數(shù)據(jù)選擇

          TxLs164(temp); //寫高四位
          Dat = 1; //使能下沿
          Dat = 0;
          DelayUs(50); //延時(shí)等待
          }

          //*******************************************************************
          //函數(shù)名稱:AddrSite(x, y);
          //輸入?yún)?shù):坐標(biāo)參數(shù)
          //輸出參數(shù):無
          //功能描述:設(shè)置顯示地址
          //建造日期:2008.12.08
          //*******************************************************************
          void AddrSite(unsigned char x, unsigned char y)
          {
          x &= 0x3f; //截取地址

          if (y == 0)
          {
          WriteData((0x80 | x), 0); //首行地址
          }

          else
          {
          WriteData((0xc0 | x), 0); //次行地址
          }
          }

          //*******************************************************************
          //函數(shù)名稱:PrintChar(*s);
          //輸入?yún)?shù):緩沖區(qū)首址
          //輸出參數(shù):無
          //功能描述:字符串輸出顯示
          //建造日期:2008.12.08
          //*******************************************************************
          void PrintChar(unsigned char *s)
          {
          while(*s)
          {
          WriteData(*s, 1); //字符數(shù)據(jù)
          s++; //下個(gè)字符
          }
          }


          上一頁 1 2 下一頁

          評論


          技術(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); })();