欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: SSD1309 2.42寸OLED驅(qū)動(dòng)程序 [打印本頁(yè)]

作者: lphl3060    時(shí)間: 2021-5-8 12:54
標(biāo)題: SSD1309 2.42寸OLED驅(qū)動(dòng)程序
SSD1309 2.42寸OLED驅(qū)動(dòng)程序
可顯示變化,框架式編程。
有需要用的著拿去。不謝!
全部工程在附件里就不貼出來(lái)了。有字庫(kù)頭文件的。
#include "all.h"

u8 xdata OLED_Write_Buffer[8][8][16];//漢字?jǐn)?shù)組
sbit reset=P2^6;
//sbit scl=P2^4;
//sbit sda=P2^5;


void OLED_Write_com(u8 com)//寫(xiě)指令
{
        IIC_start();
        IIC_Write_Byte(0x78);         //DC=0; RW=0  選擇SLAVE ADDRESS
        IIC_Read_Ack();
        IIC_Write_Byte(0x00);
        IIC_Read_Ack();
        IIC_Write_Byte(com);
        IIC_Read_Ack();
  delay(1);
        IIC_stop();
}
//寫(xiě)數(shù)據(jù)到OLED顯示模塊
void transfer_data(u8 dat)
{
        IIC_start();
        IIC_Write_Byte(0x78);        //DC=0; RW=0   選擇SLAVE ADDRESS
        IIC_Read_Ack();
        IIC_Write_Byte(0x40);
        IIC_Read_Ack();
        IIC_Write_Byte(dat);
        IIC_Read_Ack();
        IIC_stop();
}
void lcd_address(u8 page,u8 column)
{
        column=column-1; //我們平常所說(shuō)的第1列,在LCD驅(qū)動(dòng)IC里是第0列。所以在這里減去1.
        page=page-1;
        OLED_Write_com(0xb0+page); //設(shè)置頁(yè)地址。每頁(yè)是8 行。一個(gè)畫(huà)面的64 行被分成8 個(gè)頁(yè)。我們平常所說(shuō)的第1 頁(yè),在LCD 驅(qū)動(dòng)IC 里是第0 頁(yè),所以在這里減去1
        OLED_Write_com(((column>>4)&0x0f)+0x10); //設(shè)置列地址的高4 位
        OLED_Write_com(column&0x0f); //設(shè)置列地址的低4 位
}

//=========================================================

//全屏清屏
void clear_screen()
{
        unsigned char i,j;
        for(j=0;j<8;j++)
                {
                lcd_address(1+j,1);
                for(i=0;i<128;i++)   //1305:132     1309:128
                        {
                        transfer_data(0x00);
                        }
                }
}


void display_string_8x16(u8 page,u8 column,u8 dat)
{
        u8 k,val,pag1,pag2;
        pag1=(page*2)-1;
        pag2=page*2;
        val=dat-' ';
                               
                                        lcd_address(pag1,column*8);
                                        for(k=0;k<8;k++)
                                                {
                                                       
                                                transfer_data(F8X16[val*16+k]); //寫(xiě)數(shù)據(jù)到LCD,每寫(xiě)完1 字節(jié)的數(shù)據(jù)后列地址自動(dòng)加1
                                                       
                                          }
                                                lcd_address(pag2,column*8);
                                                for(k=0;k<8;k++)
                                                {
                                                       
                                                transfer_data(F8X16[val*16+8+k]); //寫(xiě)數(shù)據(jù)到LCD,每寫(xiě)完1 字節(jié)的數(shù)據(jù)后列地址自動(dòng)加1
                                                       
                                          }
                                       
               
                       
}
void OLED_Display_buffer(u8 page,u8 seg,u16 buffer)//顯示一個(gè)5位數(shù)的變量
{
   display_string_8x16(page,seg,(buffer/10000)+'0');
         display_string_8x16(page,seg+1,(buffer%10000)/1000+'0');
         display_string_8x16(page,seg+2,(buffer%1000)/100+'0');
         display_string_8x16(page,seg+3,(buffer%100)/10+'0');
         display_string_8x16(page,seg+4,(buffer%10)+'0');
}

void display_string_16x16(u8 page,u8 column,u8 data1 )  //顯示16x16 點(diǎn)陣圖像、漢字、生僻字或16x16 點(diǎn)陣的其他圖標(biāo)
{
        u8 i,pag1,pag2;
        pag1=(page*2)-1;
        pag2=page*2;
       
                lcd_address(pag1,(column*16)+1);
                for (i=0;i<16;i++)
                        {
                        transfer_data(Hzk[data1][i]); //寫(xiě)數(shù)據(jù)到LCD,每寫(xiě)完一個(gè)8 位的數(shù)據(jù)后列地址自動(dòng)加1
                       
                        }
                        lcd_address(pag2,(column*16)+1);
                for (i=0;i<16;i++)
                        {
                        transfer_data(Hzk[data1+1][i]); //寫(xiě)數(shù)據(jù)到LCD,每寫(xiě)完一個(gè)8 位的數(shù)據(jù)后列地址自動(dòng)加1
                       
                        }
               
}
void OLED_Write_fixed_Buffer()//寫(xiě)固定漢字16X16
{
                        display_string_16x16(2,0,0);                       
            display_string_16x16(2,1,2);                               
            display_string_16x16(2,2,4);               
      display_string_16x16(2,3,6);       
                  
                       
}

void OLED_Init()
{

        reset=0;
        delay(1);
  reset=1;
        delay(3);
       
        OLED_Write_com(0xfd);
        OLED_Write_com(0x12);
       
        OLED_Write_com(0xAE);        // Set Display Off

        OLED_Write_com(0xD5);         //Set Display Clock Divide Ratio/Oscillator Frequency
        OLED_Write_com(0x90);        //         1305:0x60~0x90(324~396KHz)           1309: 0x70~0xd0(360~540KHz)

        OLED_Write_com(0xA8);        //Set Multiplex Ratio
        OLED_Write_com(0x3F);        //

        OLED_Write_com(0xD3);        //Set Display Offset
        OLED_Write_com(0x00);        //

        OLED_Write_com(0x40);        // Set Display Start Line

  OLED_Write_com(0xA1);        // Set SEG/Column Mapping (0xA0/0xA1)
        OLED_Write_com(0xC8);        // Set COM/Row Scan Direction (0xC0/0xC8)

        OLED_Write_com(0xDA);        //Set COM Pins Hardware Configuration
        OLED_Write_com(0x12);        // Set Alternative Configuration (0x02/0x12)
       
        OLED_Write_com(0x81);        //Set Current Control
  OLED_Write_com(0xDF);  //
       
        OLED_Write_com(0xD9);        //Set Pre-Charge Period
        OLED_Write_com(0x82);        //

        OLED_Write_com(0xDB);        //Set VCOMH Deselect Level
        OLED_Write_com(0x34);        //

//        OLED_Write_com(0x20);
//        OLED_Write_com(0x02);        // Set Page Addressing Mode (0x00/0x01/0x02)

        OLED_Write_com(0xA4);        // Set Entire Display On/Off (0xA4/0xA5)
        OLED_Write_com(0xA6);        // Set Normal/Inverse Display (0xA6/0xA7)
        clear_screen(); //清屏
        delay(10);
       
        OLED_Write_com(0xAF); //開(kāi)顯示
       
       
        delay(30);
         //OLED_Write_fixed_Buffer();
}


ssd1309_2.42OLED顯示驅(qū)動(dòng).rar

84.81 KB, 下載次數(shù): 65, 下載積分: 黑幣 -5






歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1