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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 串行1602的四位數(shù)據(jù)線程序-avr單片機(jī)

          串行1602的四位數(shù)據(jù)線程序-avr單片機(jī)

          作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
          1602的四位數(shù)據(jù)線程序,節(jié)省了IO。單片機(jī)用的是Atmega16,編譯環(huán)境ICC6.31A,1602驅(qū)動頭文件。


          1602Driver.h
          /*********************LCD模塊1602底層驅(qū)動庫***********************
          * LCD模塊與單片機(jī)的硬件連接:
          * /端口名稱 /端口符號 /MCU端口 / LCD引腳號/
          *
          * RS數(shù)據(jù)/指令選擇線
          * RS PD3 4
          * R/W讀寫選擇線
          * R/W GND 5
          * EN寫使能線
          * EN PD2 6
          * 三態(tài)雙向數(shù)據(jù)總線
          * D0-D3 NC 7-10
          * D4 PD4 11
          * D5 PD5 12
          * D6 PD6 13
          * D7 PD7 14
          *
          * 其他端口連接:
          * 電源負(fù) VSS 1
          * 電源正+4.5--+5.5V VDD 2
          * 對比度調(diào)節(jié) VL GND 3
          * 背光負(fù) BLK NC 15
          * 背光正 BLA NC 16
          * 說明:采用節(jié)省端口的4線線連接方式,即將8位的數(shù)據(jù)分兩次傳輸;同
          * 時將R/W接地RW(只用W不需要R,所以可以省一根線)
          * 日期:2006/02/03

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


          *****************************************************************/

          /*****************定義MCU與LCD的接口******************/
          #define LCD_EN_PORT PORTC //寫使能。高有效,下降沿時鎖定數(shù)據(jù)
          #define LCD_RS_PORT PORTC //指令/數(shù)據(jù)選擇
          #define LCD_DATA_PORT PORTC //數(shù)據(jù)總線

          #define LCD_EN 0x04 //PORTD2 out
          #define LCD_RS 0x08 //PORTD3 out
          #define LCD_DATA 0xf0 //PORTD4/5/6/7 out


          #define Data_Write LCD_RS_PORT |= LCD_RS //寫數(shù)據(jù)模式
          #define Command_Write LCD_RS_PORT &= ~LCD_RS //寫指令模式


          #define Write_En LCD_EN_PORT |= LCD_EN //寫使能
          #define Write_Lock LCD_EN_PORT &= ~LCD_EN //鎖定數(shù)據(jù)


          //#define Graph_Right_Run LCD_Write_Char(0x02,0) //畫面右移



          const char CHR[16] = {0,1,2,3,4,5,6,7,8
          ,9,a,b,c,d,e,f};
          unsigned char LCD_Buff[] = {0,0,0,0,0,0,0,0};


          /*******************N us延時函數(shù)**********************/
          void Delay_nus(unsigned int j)
          {
          unsigned int i="0";
          for(i=j;i>0;i--)
          {
          asm("nop");
          }
          }


          /********************N ms延時函數(shù)*********************/
          void Delay_nms(unsigned int n)
          {
          unsigned int m = 0;
          unsigned int k = 0;
          for (m=n;m>0;m--)
          {
          for (k=1140;k>0;k--)
          {
          Delay_nus(1);
          }
          }
          }

          /******讀寫使能(高電平有效,下降沿鎖定數(shù)據(jù) )********/
          void Write_Enable(void)
          {
          Write_En;
          Delay_nus(1);
          Write_Lock;
          }

          /*---------------------------------------------------------------------
          * LCD_Write_Char :英文單字符顯示函數(shù)
          *
          * 向LCD發(fā)送數(shù)據(jù)/指令。 Command="1" 發(fā)送顯示數(shù)據(jù)
          * Command=0 發(fā)送指令數(shù)據(jù)
          *
          * 輸入?yún)?shù) :Command 數(shù)據(jù)/指令寄存器選擇
          * Data 顯示內(nèi)容
          *
          -----------------------------------------------------------------------*/
          void LCD_Write_Char(char Command,char Data)
          {
          unsigned Command_Temp,Data_Temp;
          Command_Temp = Command;
          Data_Temp = Data;
          Delay_nms(1); //延時1ms,以避開"寫繁忙"時期


          if (Command == 0) //數(shù)據(jù)輸入模式
          {
          Data_Write;
          LCD_DATA_PORT &= 0x0f; //數(shù)據(jù)口清零
          LCD_DATA_PORT |= Data_Temp&0xf0; //先送高4位
          }
          else //指令輸入模式
          {
          Command_Write;
          LCD_DATA_PORT &= 0x0f;
          LCD_DATA_PORT |= Command_Temp&0xf0;
          }
          Write_Enable();


          上一頁 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); })();