<form id="lpvjh"><nobr id="lpvjh"><th id="lpvjh"></th></nobr></form>

<form id="lpvjh"></form>
<form id="lpvjh"><th id="lpvjh"></th></form>

<form id="lpvjh"></form>

<address id="lpvjh"></address>

    <span id="lpvjh"><th id="lpvjh"></th></span>

      文章詳情

      低溫-40℃工作的OLED模塊HCS1624的應用實例

      日期:2021-12-05 03:13
      瀏覽次數:1034
      摘要: 低溫-40℃工作的OLED模塊HCS1624的應用實例 摘要:本文介紹了清達光電HCS1624這款低溫產品,并給出了其月8051單片機應用實例 1,OLED模塊HCS1624的主要規格參數: 外形尺寸:80.0(W)×36.0(H)×7.5MAX.(T)mm 顯示尺寸:58.22(W)×13.52(H) mm 有效視域:56.22(W)×11.52(H) mm 字符大小:2.97(W)×5.57 (H)mm 點大小:0.57(W)×0.67(H)mm 顯示屏顏色:黃色字體,黑色底色 工作溫度:-40 ℃~80℃ 2,顯示屏顯示效果圖 ...

      低溫-40℃工作的OLED模塊HCS1624的應用實例

      摘要:本文介紹了清達光電HCS1624這款低溫產品,并給出了其月8051單片機應用實例


      1,OLED模塊HCS1624的主要規格參數:

      外形尺寸:80.0(W)×36.0(H)×7.5MAX.(T)mm

      顯示尺寸:58.22(W)×13.52(H) mm

      有效視域:56.22(W)×11.52(H) mm

      字符大小:2.97(W)×5.57 (H)mm

      點大小:0.57(W)×0.67(H)mm

      顯示屏顏色:黃色字體,黑色底色

      工作溫度:-40 ℃~80℃


      2,顯示屏顯示效果圖


      3,低溫-40℃工作的OLED模塊HCS1624的應用實例——8051單片機應用實例

      應用程序如下:

      #include<reg51.h>
      #include <string.h>
      #include <intrins.h>
      #include <math.h>
      #define uchar unsigned char
      #define uint unsigned int
      #define DATA P1

      sbit CD     =    P3^3;  //并行接口;
      sbit WR1    =    P3^1;
      sbit RD1    =   P3^0;



      uchar code tab1[]={"Tsingtek-OLED"};
      uchar code tab2[]={"HCS1624-Y-EH-I2C"};
      uchar code CGR[]={
                         0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,//隔列1
                         0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,//隔行1
                         0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,//隔列2
                         0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,//隔行2
                         0xff};
      //此程序測試于 24M 晶震,51單片機;
      //注意,關與 IS RE SD這3位,起始時是000,我們每次用完命令之后也復位成000;


      /******************************************************************
            延時子程序   
      *****************************************************************/

      void delay(uint z)
      {
      uint x,y;
      for(x=z;x>0;x--)
         for(y=124;y>0;y--);
      }
      void delay_100us(uchar z)
      {
      z=z*16;
      while(z--);
      }



      /****************************寫指令程序*****************************************/

      void wait(void)       // 忙等待;
      {
      RD1=0;                      _nop_();
      CD=0;                    _nop_();                            
      WR1=1;                     _nop_();                          
      DATA=0xff;                   _nop_();                        
      RD1=1;                    _nop_();                           
      while(DATA&0x80);          _nop_();                                                        
      RD1=0;                    _nop_();_nop_();
      _nop_();_nop_();_nop_();
      _nop_();_nop_();_nop_();
              
      }
      void wr_data(uchar b)    //寫數據  ;
      {
      wait();                     _nop_();                        
      CD=1;                    _nop_();                        
      WR1=0;                    _nop_();                          
      DATA=b;                    _nop_();
      RD1=1;                    _nop_();                                                
      RD1=0;                  _nop_();_nop_();            

      _nop_();_nop_();_nop_();
      _nop_();_nop_();_nop_();
      }
      void wr_com(uchar b)    //寫命令;
      {
      wait();                     _nop_();                            
      CD=0;                    _nop_();                        
      WR1=0;                    _nop_();                        
      DATA=b;                _nop_();
      RD1=1;                    _nop_();                                                    
      RD1=0;                  _nop_();_nop_();                

      _nop_();_nop_();_nop_();
      _nop_();_nop_();_nop_();

      }
      uchar rd_data(void) //讀數據;
      {
      uchar temp;                                                    
      wait();                     _nop_();                                
      CD=1;                    _nop_();                                
      WR1=1;                    _nop_();                                
      DATA=0xff;                _nop_();                            
      RD1=1;                  _nop_();                            
      temp=DATA;                _nop_();                                                                                 
      RD1=0;                  _nop_();_nop_();                                                                    

      _nop_();_nop_();_nop_();
      _nop_();_nop_();_nop_();
      return temp;
      }


      /******************************************************************
         定位地址(一個地址對應5*8字符和)
         x--> 水平方向地址數(0~39)    ;y-->  垂直方向字符數(0~1);
      *****************************************************************/

      void  dot(uchar x,uchar y)
      {
      if(y) x|=0x40;
      x|=0x80;
      wr_com(x);
      }

      /******************************************************************
        清屏;
      *****************************************************************/

      void clear(void)
      {
      wr_com(0x01);delay(5);
      }

      /******************************************************************
        字符的輸入(5*8)
      x--> 水平方向地址數(0~39)    ;y-->  垂直方向字符數(0~1);s-->字符代碼首地址;
      *****************************************************************/
      void en_c_r(uchar x,uchar y,uchar code  * s)   
      {
        dot(x,y);
        while(*s>0&&x<20)
         {
         wr_data(*s);
         s++;
         x++;
         }
      }

      /******************************************************************
      自定義字符形成;
      *****************************************************************/
      void CGR_SET(uchar code *s)
      {
       uchar i=0;
       while(*s!=0xff)
        {
         wr_com(0x40+i);
         wr_data(*s);
         s++;
         i++;
        }
      }    
      /******************************************************************
        全屏;
      *****************************************************************/
       void  fill(uchar z)                                //全屏    
       {
       uchar x,y ;
       for(y=0;y<2;y++)
          for(x=0;x<16;x++)
          {
          dot(x,y);
          wr_data(z);
          }
       }
      /******************************************************************
        初始化設置;
      *****************************************************************/

      void init(void)
      {
          
            delay(50);
            
      //      RES=1;delay(5);
      //      RES=1;delay(5);
      //      RES=1;delay(5);      
                
                
      // 設置電源模式;
            wr_com(0x2a);
            wr_com(0x71);
            wr_data(0x00);          /* 設置為3.3V模式 */
            wr_com(0x28);

      // 顯示開關;
            wr_com(0x08);              /* 關顯示 */

      // 設置Fosc和DCLK;
            wr_com(0x2a);
            wr_com(0x79);
            wr_com(0xd5);
            wr_com(0x70);              /* Fosc=7 DCLK=1 */    
            wr_com(0x78);
            wr_com(0x28);
      // 設置顯示模式;
            wr_com(0x2a);
            wr_com(0x08);             /* 字寬=5   1/2行顯示 */
            wr_com(0x28);
      // 設置地圖模式;
            wr_com(0x2a);
            wr_com(0x06);                /* BDC=1(C0-->C31)   BDS=0(S99-->S0) (已規定,客戶不可自行修改) */
            wr_com(0x28);
                    
      // 選擇內部ROM和CGRAM;
            wr_com(0x2a);
            wr_com(0x72);            
            wr_data(0x00);         /* ROM=A  CGRAM=8 */
            wr_com(0x28);



      // 設置OLED特性;
            wr_com(0x2a);
            wr_com(0x79);             /* 進入OLED設置 */

            wr_com(0xda);
            wr_com(0x10);             /* SEG硬件結構  (已規定,客戶不可自行修改) */

            wr_com(0xdc);
            wr_com(0x00);              /* 內部VSL  GPIO輸出無效 */

            wr_com(0x81);
            wr_com(0x7f);             /* 共256級對比度,選一半 */

            wr_com(0xd9);
            wr_com(0xf1);             /* P2=15DCLK  P1=4DCLK */


            wr_com(0xdb);
            wr_com(0x30);             /* Vcom=0.83Vcc  */

            wr_com(0x78);
            wr_com(0x28);             /* 退出OLED設置 */


      //準備開顯示;
            wr_com(0x01);            /*  清屏 */
            delay(5);
            wr_com(0x80);            /*  設置DDRAM地址  */
            wr_com(0x0c);            /*  開顯示 */

                    
      }

      /******************************************************************
        主程序;
      *****************************************************************/
      int main(void)
      {
      CD=0;
      init();
      CGR_SET(CGR);
      while(1)
          {
          fill(0x00);delay(700);
          fill(0x01);delay(700);
          fill(0x02);delay(700);
          fill(0x03);delay(700);
          clear();
          en_c_r(0,0,tab1);
          en_c_r(0,1,tab2);delay(700);
          }
      }

      新博体育