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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 1602自定義字符顯示攝氏度符號

          1602自定義字符顯示攝氏度符號

          作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
          LCD1602的數(shù)據(jù)寫入及CGRAM的使用
          1.當(dāng)使能端E由1變?yōu)?時,執(zhí)行寫指令,數(shù)據(jù)被寫入。
          例如,欲寫入數(shù)據(jù)i到DDRAM:
          void WDR(uchar i)
          {
          CheckBusy();//檢忙
          LCD_RS=1;
          LCD_RW=0;
          LCD_EN=0;
          Delay();
          LCD_DATA=i;//數(shù)據(jù)輸出到定義端口
          Delay();
          LCD_EN=1;
          Delay();
          LCD_EN=0;//這一步才開始寫入到LCD
          Delay();
          }
          2.CGRAM
          1602能存儲8個自定義字符,這8個自定義字符存儲空間的首地址分別是:0X40,0X48,0X50,0X58,0X60,0X68,0X70,0X78。
          以0x40來說,它的存儲空間如圖所示:

          如果使用5*7字符的話,那么最左3位和最后一行的數(shù)據(jù)實際上是沒用的,通常置0。如果要自定義一個℃符號,那么先填框,如圖(紅1白0):
          這樣我們就得到每個地址需要寫入的數(shù)據(jù):
          地址:數(shù)據(jù)
          0x40:0x16
          0x41:0x09
          0x42:0x08
          其他類推。將這8個數(shù)據(jù)寫入到對應(yīng)地址即可。
          使用時,先確定顯示的位置,例如0X80,然后向DDRAM寫入自定義字符的使用代碼。0X40-0X78對應(yīng)為0X00-0X07。
          本例中,先寫入指令寄存器0X80確定顯示位置為第一行第一個,然后寫入數(shù)據(jù)寄存器0X00,這樣就會在第一行第一個位置顯示出℃符號。


          以下是源程序如果網(wǎng)頁格式導(dǎo)致部分字符丟失請下載c程序源文件:http://www.51hei.com/f/avr1602c.rar
          #include
          #include
          #define u8 uchar unsigned char
          #define u16 uchar unsigned int
          #define uchar unsigned char
          #define uint unsigned int
          uchar zi[]={0x16,0x09,0x08,0x08,0x08,0x09,0x06,0x00}; //自定義字符攝氏度

          #include"1602.h"
          #include"18b20.h"

          void port_init()
          {
          PORTA=0xff;
          DDRA=0xff;
          PORTB=0xff;
          DDRB=0xff;
          PORTC=0xff;
          DDRC=0xff;
          PORTD=0xff;
          DDRD=0x00;
          }
          void setzi() //把設(shè)定字存入CGRAM
          {
          uchar i;
          writecmd(0x40); //設(shè)置第一個字的起始地址
          for(i=0;i<8;i++)
          {
          writedata(zi[i]);
          }
          }

          void show_temp(uint k)
          {
          displayonechar(1,1,(k/100)+48);
          displayonechar(2,1,(k%100/10)+48);
          displayonechar(3,1,.);
          displayonechar(4,1,(k%10)+48);
          }
          void main()
          {
          uint TT; //顯示的溫度值
          port_init();
          delay(1000);
          init1602();
          displaychar(0,0,"Set zi Test");
          setzi();
          displayonechar(5,1,0x00); //0x00表示 0x40地址的值
          while(1)
          {
          TT=read_temper();
          show_temp(TT);
          }
          }
          //---------------1602.h----------------
          #define RS PORTB_Bit0
          #define RW PORTB_Bit1
          #define EN PORTB_Bit2
          #define DATA PORTA
          #define busy 0x80
          void delay(uint k)
          {
          uint i,j;
          for(i=0;ifor(j=0;j<1140;j++);

          }

          void wait()
          {
          uchar val;
          DATA=0xff;
          RS=0;
          RW=1;
          __no_operation();
          __no_operation();
          EN=1;
          __no_operation();
          __no_operation();
          DDRA=0x00;
          val=PINA;
          while(val&busy)
          {
          val=PINA;
          }
          EN=0;
          DDRA=0xff;
          }

          上一頁 1 2 下一頁

          關(guān)鍵詞: 1602自定義字符攝氏度符

          評論


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