新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機ST7565C語言驅動程序

        51單片機ST7565C語言驅動程序

        作者: 時間:2016-11-28 來源:網絡 收藏
        #include
        #include
        #defineuchar unsigned char
        #defineuint unsigned int
        /////////////////////////////////Serial///////////////////////////////////////////////////


        sbitR_S=P3^5;//指令/數據選擇信號
        sbitRES=P3^4;//復位信號
        sbitSCK=P1^6;
        sbitSDA=P1^7;
        sbitC_S=P3^7;//片選

        //////////////////////////////////////////////////////////////////////////////////////////////


        uchar Page = 0xb0;
        ///12345678910111213141516///
        unsigned char code Number[][16]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0
        0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1
        0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2
        0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3
        0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4
        0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5
        0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6
        0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7
        0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8
        0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9
        0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 1
        0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 2
        0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 3
        0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 4
        0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 5
        0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 6
        0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 27
        0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 28
        0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 29
        0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 30
        0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 31
        0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00//f 32
        };

        void delay(uint ms)
        {
        uchar j;
        while(ms--)
        for(j=0;j=20;j++); //20us=0.02ms//

        }

        /////////////////////////Serial///////////////////////////

        void WrateC(uchar com)

        {
        unsigned char data i,j;
        C_S=0;
        R_S=0;
        SCK=0;
        for(i=0;i<8;i++)
        {
        j=com;
        SCK=0;
        SDA=com&0x80;
        SCK=1;
        com=j<<1;
        }
        C_S=1;
        R_S=1;
        }

        void WrateD(uchar dat)
        {
        unsigned char data i,j;
        C_S=0;
        R_S=1;
        SCK=0;
        for(i=0;i<8;i++)
        {
        j=dat;
        SCK=0;
        SDA=dat&0x80;
        SCK=1;
        dat=j<<1;
        }
        C_S=1;
        R_S=0;
        }

        void ClearDisplay()
        {
        unsigned chari,j;
        for(i=0;i<8;i++)
        {
        WrateC(Page+i);// (Page = 0xB0)//設置位置
        WrateC(0x10);
        WrateC(0x00);
        for(j=0;j<132;j++)//發送數據
        {
        WrateD(0);
        }
        }
        }
        void LcdInit()
        {
        RES=0;
        delay(50);//最少2um
        RES=1;
        delay(20);

        WrateC(0xe2);//軟件復位
        WrateC(0xA3);//Bais set顯示偏壓
        WrateC(0xA1);//ADC seg鏡像選擇 0xa0正常,0xA1左右鏡像
        WrateC(0xc0);//com output scan direction,com鏡像選擇 0xc0正常,0xC8上下鏡像
        /////////Select internal resistor ratio/////////
        WrateC(0x2c);//內部電源管理
        WrateC(0x2e);//三條指令間隔時間2um
        WrateC(0x2F);//
        //////////////////////////////////////////////////////////////////////////////

        WrateC(0x81);//電壓模式選擇
        WrateC(0x16);//電壓調整寄存器低位 范圍:0x00-0x3f
        WrateC(0x24);//電壓調整寄存器高位 范圍:0x21-0x27 ,值越大,顯示效果越濃(底影越濃)

        WrateC(0xAF);//顯示開
        WrateC(0x40);//從首行開始顯示

        ClearDisplay();
        }

        void Setadd(uchar xl,uchar yl)
        {uchar i;
        i=xl&0x0f;
        xl=(xl>>4)+0x10;

        WrateC(0xb0+yl);
        WrateC(xl);
        WrateC(i);
        }

        void ShowOneDig(uchar col,uchar pag,uchar d)
        {
        uchar i = 0 ;
        uchar j;
        if(col>0x7f)
        {
        col=0;
        pag+=2;
        }
        Setadd(col,pag);
        for(j=0;j<8;j++)
        {
        WrateD(Number[d][i++]);
        }
        pag++;
        Setadd(col,pag);
        for(j=0;j<8;j++)
        {
        WrateD(Number[d][i++]);
        }
        pag++;
        }

        void main()
        {
        unsigned char a = 0 ;
        LcdInit();
        ClearDisplay();
        ShowOneDig(80,3,10);
        ShowOneDig(88,3,9);
        ShowOneDig(72,3,5);
        while(1);
        }


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 遂平县| 平武县| 洞口县| 太仆寺旗| 东至县| 新田县| 浦江县| 德江县| 新巴尔虎左旗| 东方市| 宾川县| 两当县| 天水市| 巴彦淖尔市| 晋宁县| 四川省| 永福县| 微山县| 临颍县| 芒康县| 深圳市| 于都县| 洪洞县| 太保市| 武宣县| 卢湾区| 江孜县| 克东县| 江达县| 南通市| 凌云县| 安西县| 宁阳县| 龙山县| 苍溪县| 镇原县| 卓尼县| 东城区| 新河县| 闵行区| 茌平县|