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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

oled清屏不起效果,附單片機程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:880458 發表于 2021-3-8 23:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>
#define OLED_CMD  0        //寫命令
#define OLED_DATA 1        //寫數據
#define OLED_MODE

sbit  IIC_CLK = P4^3;
sbit  IIC_DATA = P4^0;

void OLED_Clear (void);
        void OLED_Set_Pos(unsigned char x, unsigned char y);
void OLED_WR_Byte(unsigned char dat, unsigned char cmd);
void OLED_WritrDate(unsigned char dat);
void OLED_WriteCommand(unsigned char dat);
void IIC_Start(void);
void IIC_Stop(void);
unsigned char IIC_Wait_Ack(void);
void Write_IIC_Byte(unsigned char IIC_Byte);

void main (void)
{
        while(1)
        {
                OLED_Clear ();
        }
}

void OLED_Clear (void)
{
        unsigned char i, n;
        for (i = 0; i <8; i++)
        {
                OLED_Set_Pos(0, i);
                for (n =0; n<128; n++)OLED_WR_Byte(0x00, OLED_DATA);
        }
}
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),OLED_CMD); //低地址
}
void OLED_WR_Byte(unsigned char dat, unsigned char cmd)
{
        
        if (cmd == OLED_DATA)
                OLED_WritrDate(dat);
        else
                OLED_WriteCommand(dat);
}
void OLED_WritrDate(unsigned char dat)
{
        IIC_Start();
        Write_IIC_Byte (0x78);
        IIC_Wait_Ack();
        Write_IIC_Byte(0x40);//數字寄存器
        IIC_Wait_Ack();
        Write_IIC_Byte(dat);
        IIC_Wait_Ack();
  IIC_Stop();
}
void OLED_WriteCommand(unsigned char dat)
{
        IIC_Start();
        Write_IIC_Byte (0x78);
        IIC_Wait_Ack();
        Write_IIC_Byte(0x00);//命令寄存器
        IIC_Wait_Ack();
        Write_IIC_Byte(dat);
        IIC_Wait_Ack();
  IIC_Stop();

}
void IIC_Start(void)
{
        IIC_CLK = 1;
        IIC_DATA = 1;
        //delay();
        IIC_DATA = 0;
        //delay();
        IIC_CLK = 0;
        //delay();
}
void IIC_Stop(void)
{
        IIC_DATA = 0;
        //delay();
        IIC_CLK = 1;
        //delay();
        IIC_DATA = 0;
        //delay();
        
}
unsigned char IIC_Wait_Ack(void)
{
        unsigned char ucErrTime=0;
        
        IIC_DATA=1; //準備、待拉低
        //_nop_();_nop_();
        IIC_CLK=1;  
        //_nop_();_nop_();
        
        while(IIC_DATA)
        {
                ucErrTime++;
                if(ucErrTime>250)
                {
                        IIC_Stop();
                        //SendString("ERORR\n");
                        return 1;
                }
        }
        
        IIC_CLK=0;
        //delay();
        return 0;
        
        
        
}

void Write_IIC_Byte(unsigned char IIC_Byte)
{
        unsigned char i;
        unsigned char m,da;
        da=IIC_Byte;
        //IIC_CLK = 0;
        for(i=0;i<8;i++)               
        {
                //delay();
                m=da&0x80;
                if(m==0x80)   
                {
                        IIC_DATA = 1;
                }
                else IIC_DATA = 0;
                        da=da<<1;                //移往下一位
                //delay();               
                IIC_CLK = 1; //開始傳輸
                //delay();
                IIC_CLK = 0; //傳輸完畢
        }

}

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

使用道具 舉報

沙發
ID:88256 發表于 2021-3-9 00:03 | 只看該作者
是什么情況也要說一下啊,當我們是神仙什么都知道?
回復

使用道具 舉報

板凳
ID:748788 發表于 2021-3-9 08:19 | 只看該作者
和不同廠家不同驅動有很大關系
回復

使用道具 舉報

地板
ID:258995 發表于 2021-3-9 08:53 | 只看該作者
有些oled,需要refresh一下,刷新緩存,才能顯示
回復

使用道具 舉報

5#
ID:654028 發表于 2021-3-9 13:26 | 只看該作者
不知道你的有沒有片選信號,看程序應該沒啥問題,你查一下iic是不是時序不對之類的。清屏最好不要放while(1)里面,不停的刷屏幕也可能有問題。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表