久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5385|回復: 0
打印 上一主題 下一主題
收起左側

OLED顯示代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:201303 發表于 2017-5-16 12:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
void OLED_WR_Byte(u8 dat,u8 cmd)
{
        DATAOUT(dat);            
        if(cmd)
          OLED_DC_Set();
        else
          OLED_DC_Clr();                  
        OLED_CS_Clr();
        OLED_WR_Clr();         
        OLED_WR_Set();
        OLED_CS_Set();          
        OLED_DC_Set();         
}                         
#else
//向SSD1306寫入一個字節。
//dat:要寫入的數據/命令
//cmd:數據/命令標志 0,表示命令;1,表示數據;
void OLED_WR_Byte(u8 dat,u8 cmd)
{       
        u8 i;                          
        if(cmd)
          OLED_DC_Set();
        else
          OLED_DC_Clr();                  
        OLED_CS_Clr();
        for(i=0;i<8;i++)
        {                          
                OLED_SCLK_Clr();
                if(dat&0x80)
                        {
                   OLED_SDIN_Set();
                        }
else
                   OLED_SDIN_Clr();
                                OLED_SCLK_Set();
                dat<<=1;   
        }                                                   
        OLED_CS_Set();
        OLED_DC_Set();             
}
#endif
        void OLED_Set_Pos(unsigned char x, unsigned char y)
{
        OLED_WR_Byte(0xb0+y,OLED_CMD);
        OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD);
        OLED_WR_Byte((x&0x0f)|0x01,OLED_CMD);
}             
//開啟OLED顯示   
void OLED_Display_On(void)
{
        OLED_WR_Byte(0X8D,OLED_CMD);  //SET DCDC命令
        OLED_WR_Byte(0X14,OLED_CMD);  //DCDC ON
        OLED_WR_Byte(0XAF,OLED_CMD);  //DISPLAY ON
}
//關閉OLED顯示     
void OLED_Display_Off(void)
{
        OLED_WR_Byte(0X8D,OLED_CMD);  //SET DCDC命令
        OLED_WR_Byte(0X10,OLED_CMD);  //DCDC OFF
        OLED_WR_Byte(0XAE,OLED_CMD);  //DISPLAY OFF
}                                            
//清屏函數,清完屏,整個屏幕是黑色的!和沒點亮一樣!!!          
void OLED_Clear(void)  
{  
        u8 i,n;                    
        for(i=0;i<8;i++)  
        {  
                OLED_WR_Byte (0xb0+i,OLED_CMD);    //設置頁地址(0~7)
                OLED_WR_Byte (0x00,OLED_CMD);      //設置顯示位置—列低地址
                OLED_WR_Byte (0x10,OLED_CMD);      //設置顯示位置—列高地址   
                for(n=0;n<128;n++)OLED_WR_Byte(0,OLED_DATA);
        } //更新顯示
}


//在指定位置顯示一個字符,包括部分字符
//x:0~127
//y:0~63
//mode:0,反白顯示;1,正常顯示                                 
//size:選擇字體 16/12
void OLED_ShowChar(u8 x,u8 y,u8 chr)
{             
        unsigned char c=0,i=0;       
                c=chr-' ';//得到偏移后的值                       
                if(x>Max_Column-1){x=0;y=y+2;}
                if(SIZE ==16)
                        {
                        OLED_Set_Pos(x,y);       
                        for(i=0;i<8;i++)
                        OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);
                        OLED_Set_Pos(x,y+1);
                        for(i=0;i<8;i++)
                        OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
                        }
                        else {       
                                OLED_Set_Pos(x,y+1);
                                for(i=0;i<6;i++)
                                OLED_WR_Byte(F6x8[c][i],OLED_DATA);
                               
                        }
}
//m^n函數
u32 oled_pow(u8 m,u8 n)
{
        u32 result=1;         
        while(n--)result*=m;   
        return result;
}                                  
//顯示2個數字
//x,y :起點坐標         
//len :數字的位數
//size:字體大小
//mode:模式        0,填充模式;1,疊加模式
//num:數值(0~4294967295);                           
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size2)
{                
        u8 t,temp;
        u8 enshow=0;                                                  
        for(t=0;t<len;t++)
        {
                temp=(num/oled_pow(10,len-t-1))%10;
                if(enshow==0&&t<(len-1))
                {
                        if(temp==0)
                        {
                                OLED_ShowChar(x+(size2/2)*t,y,' ');
                                continue;
                        }else enshow=1;
                          
                }
                 OLED_ShowChar(x+(size2/2)*t,y,temp+'0');
        }
}
//顯示一個字符號串
void OLED_ShowString(u8 x,u8 y,u8 *chr)
{
        unsigned char j=0;
        while (chr[j]!='\0')
        {                OLED_ShowChar(x,y,chr[j]);
                        x+=8;
                if(x>120){x=0;y+=2;}
                        j++;
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产高清免费在线 | 精品久久久久久 | 日韩在线中文字幕 | 欧美视频一区二区三区 | 国产视频三区 | 日中文字幕在线 | 国产一区二区三区在线 | 亚洲精品在线观看网站 | 久久99这里只有精品 | 狠狠爱视频 | 一级免费a | 久草视频在线播放 | 免费欧美视频 | 国产成人在线播放 | 黄色在线免费观看 | 国产日韩欧美一区二区 | 一区二区三区精品在线视频 | 国产精品一区一区三区 | 一区二区中文字幕 | 久久精品视频在线观看 | 久久久久久久久久久成人 | 欧美日韩久久久 | 91高清视频在线观看 | 日韩三级 | 日日拍夜夜 | 国产在线小视频 | 亚洲激情在线观看 | 欧美福利在线 | 日韩欧美福利视频 | 久久久久成人精品 | 91精品www | 色就干 | 欧美美女爱爱视频 | 国产成年人小视频 | 青草青草久热精品视频在线观看 | 国产日韩一区二区 | 免费一区 | 日韩免费视频 | 伊人超碰| 天天操天天拍 | 国产精品伦理一区 |