OLED驱动 (51单片机)

#include "REG51.h"
sbit LCD_SCL=P1^0; //时钟 D0(SCLK)
sbit LCD_SDA=P1^1; //D1(MOSI) 数据
sbit LCD_RST=P1^2; //复位 
sbit LCD_DC =P1^3; //数据/命令控制
#define XLevelL		0x00
#define XLevelH		0x10
#define XLevel	    ((XLevelH&0x0F)*16+XLevelL)
#define Max_Column	128
#define Max_Row		64
#define	Brightness	0xCF 
#define X_WIDTH 128
#define Y_WIDTH 64

void LCD_DLY_ms(unsigned int ms)  //LCD 延时1ms
{                         
   unsigned int a;
   while(ms)
   {
     a=1800;
     while(a--);
     ms--;
}
return;
}

void LCD_WrDat(unsigned char dat)   //**LCD写数据  
{
   unsigned char i=8;					   	
   LCD_DC=1;  
   for(i=0;i<8;i++) //发送一个八位数据 
   {
     LCD_SCL=0;  						  
     LCD_SDA=dat&0x80;
     LCD_SCL=1;             
     dat<<=1;    
   }
}
void LCD_WrCmd(unsigned char cmd) 	 //****LCD写命令
{
  unsigned char i=8;						   
  LCD_DC=0;
  for(i=0;i<8;i++) //发送一个八位数据 
  { 
    LCD_SCL=0; 
    LCD_SDA=cmd&0x80;
    LCD_SCL=1;
    cmd<<=1;;   
  } 	
}

void LCD_Setxy(unsigned char x, unsigned char y) 	//LCD 设置坐标
{ 
  LCD_WrCmd(0xb0+y);
  LCD_WrCmd(((x&0xf0)>>4)|0x10);
  LCD_WrCmd((x&0x0f)|0x01); 
} 
void LCD_Fill(unsigned char bmp_dat)   //bmp_dat=0x00全屏灭,bmp_dat=0xff全屏亮
{
   unsigned char y,x;
   for(y=0;y<8;y++)
   {
     LCD_WrCmd(0xb0+y);
     LCD_WrCmd(0x01);
     LCD_WrCmd(0x10);
     for(x=0;x<X_WIDTH;x++)
        LCD_WrDat(bmp_dat);
}
}
/*void LCD_CLS(void) //LCD复位
{
   unsigned char y,x;	
   for(y=0;y<8;y++)
   {
     LCD_WrCmd(0xb0+y);
     LCD_WrCmd(0x01);
     LCD_WrCmd(0x10); 
     for(x=0;x<X_WIDTH;x++)
         LCD_WrDat(0);
   }
}*/
void LCD_Init(void) //LCD初始化  
{  
   LCD_SCL=1;
   LCD_RST=0;
   LCD_DLY_ms(50);
   LCD_RST=1;       //从上电到下面开始初始化要有足够的时间,即等待RC复位完毕   
   LCD_WrCmd(0xae);//--关闭显示						                    turn off oled panel
   LCD_WrCmd(0x00);//---设置低列地址                                    set low column address
   LCD_WrCmd(0x10);//---高列地址                                        set high column address	
   LCD_WrCmd(0x40);//--设置起始地址映射内存显示开始行(0x 00 ~ 0x3f)   set start line ad
  • 12
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值