在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 32 x 8段液晶驅(qū)動HT1622 程序

        32 x 8段液晶驅(qū)動HT1622 程序

        作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
        軟件平臺IAR for STM8 V1.30

        #include

        本文引用地址:http://www.biyoush.com/article/201611/320299.htm

        #define uchar unsigned char
        #define uint unsigned int

        #define LCD_ON 0x03 //啟動偏壓發(fā)生器
        #define LCD_OFF 0x02 //關(guān)閉偏壓發(fā)生器
        #define SYS_DIS 0x00 //關(guān)閉振蕩器和LCD驅(qū)動
        #define SYS_EN 0x01 //啟動系統(tǒng)振蕩器
        #define RC32K 0x18 //啟動內(nèi)部32KRC
        #define TONE_OFF 0x08 //關(guān)閉蜂鳴器
        #define TONE_4K 0x40 //啟動4 khz蜂鳴信號
        #define TONE_2K 0x60 //啟動2 khz蜂鳴信號

        #define DATA PC_ODR_ODR4
        #define WR PC_ODR_ODR5
        #define CS PC_ODR_ODR7

        #define COM0 0
        #define COM1 1
        #define COM2 2
        #define COM3 3
        #define COM4 4
        #define COM5 5
        #define COM6 6
        #define COM7 7

        uchar dispram[32]; //預(yù)設(shè)顯示緩存,8x32


        void gpio(void)
        {
        PC_DDR = 0xb0;
        PC_CR1 = 0xb0;
        PC_ODR = 0xbf;
        }

        void delay_ms(uchar ms)
        {
        volatile uint i, j;
        for (i=ms; i>0; i--)
        for (j=400; j>0; j--)
        {
        ;
        }
        }

        void SendBit_HL(uchar dat,uchar cnt) //dat 的高cnt 位寫入HT1621,先發(fā)送高位
        {
        uchar i;
        for(i=0; i
        {
        if(dat&0x80)
        {
        DATA = 1;
        }
        else
        {
        DATA = 0;
        }
        WR = 0;
        asm("nop");
        asm("nop");
        WR = 1;
        dat <<= 1;
        }
        }

        void SendBit_LH(uchar dat,uchar cnt) //data的低cnt位寫入1621
        {
        uchar i;
        for(i=0; i
        {
        if(dat&0x01)
        {
        DATA = 1;
        }
        else
        {
        DATA = 0;
        }
        WR = 0;
        asm("nop");
        asm("nop");
        WR = 1;
        dat >>= 1;
        }
        }

        //指令模式
        void Sendcmd(uchar command)
        {
        CS = 0;
        SendBit_HL(0x80,3); //寫入標(biāo)志碼"100"
        SendBit_HL(command,9); //寫入 9 位數(shù)據(jù),其中前 8 位為 command 命令,最后 1 位任意
        CS = 1;
        }

        //寫半個字節(jié)
        void W1622_q(uchar addr,uchar dat)
        {
        CS = 0;
        SendBit_HL(0xa0,3); //寫入標(biāo)志碼"101"
        SendBit_HL(addr<<2,6); //寫入 6 位 addr
        SendBit_LH(dat,4);
        CS = 1;
        }

        //寫SEG腳上所有的位,SEG( 0~31 )
        void W1622_byte(uchar SEG,uchar dat)
        {
        uchar i,addr;
        addr = SEG * 2;
        for(i=0;i<2;i++)
        {
        W1622_q(addr,dat);
        addr += 1;
        dat >>= 4;
        }
        }

        //連續(xù)寫單元 SEG(0~31)
        void W1622_success(uchar SEG,uchar cnt,uchar *p)
        {
        uchar i,addr;
        addr = SEG * 2;
        CS = 0;
        SendBit_HL(0xa0,3); //寫入標(biāo)志碼"101"
        SendBit_HL(addr<<2,6); //寫入 6 位 addr
        for(i =0; i
        {
        SendBit_LH(*p,4);
        SendBit_LH(*p>>4,4);
        }
        CS = 1;
        }

        void disp_renew(void) //顯示更新,所有8x32段全部刷新
        {
        W1622_success(0,32,dispram);
        }

        //com(0-7) SEG(0-31)
        void dispON(uchar com,uchar SEG)
        {
        dispram[SEG] |= (1< //W1622_byte(SEG,dispram[SEG]); //去掉注釋后,寫完就馬上顯示
        }

        //com(0-7) SEG(0-31)
        void dispOFF(uchar com,uchar SEG)
        {
        dispram[SEG] &= ~(1< //W1622_byte(SEG,dispram[SEG]); //去掉注釋后,寫完就馬上顯示
        }

        void cleandisp(void)
        {
        uchar i;
        CS = 0; //清屏幕
        SendBit_HL(0xa0,3); //寫入標(biāo)志碼"101"
        SendBit_HL(0,6); //寫入 6 位 addr
        for(i =0; i <32; i ++) //連續(xù)寫入數(shù)據(jù)
        {
        SendBit_LH(0,4);
        SendBit_LH(0,4);
        }
        CS = 1;
        for(i=0; i<32; i++)
        {
        dispram[i] = 0x00; //清空顯存
        }
        }

        void disp_All(void)
        {
        uchar i;
        CS = 0; //全顯示屏幕
        SendBit_HL(0xa0,3); //寫入標(biāo)志碼"101"
        SendBit_HL(0,6); //寫入 6 位 addr
        for(i =0; i <32; i ++) //連續(xù)寫入數(shù)據(jù)
        {
        SendBit_LH(0xff,4);
        SendBit_LH(0xff,4);
        }
        CS = 1;
        for(i=0; i<32; i++)
        {
        dispram[i] = 0xff; //填充顯存
        }
        }

        void HT1622_Init(void)
        {
        uchar j = 0;
        for(j=0; j<32; j++)
        {
        dispram[j] = 0;
        }
        Sendcmd(RC32K); //RC32k
        Sendcmd(SYS_EN); //打開系統(tǒng)振蕩器
        Sendcmd(LCD_ON); //打開 LCD偏壓發(fā)生器
        }

        void main( void )
        {
        uchar i,j;
        gpio();
        HT1622_Init();
        /// disp_All(); //全部顯示
        // delay_ms(200);
        cleandisp(); //清屏

        // delay_ms(200);

        while(1)
        {
        for(i=0;i<32;i++)
        {
        for(j=0;j<8;j++)
        {
        dispON(j,i);
        disp_renew();
        delay_ms(80);
        }
        }
        delay_ms(200);
        cleandisp();
        for(i=0;i<8;i++)
        {
        for(j=0;j<32;j++)
        {
        dispON(i,j);
        disp_renew(); //刷新整個顯示
        delay_ms(80);
        }
        }
        delay_ms(200);
        cleandisp();

        }
        }



        關(guān)鍵詞: 32x8段液晶驅(qū)動HT162

        評論


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

        關(guān)閉