600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > OLED液晶显示屏显示汉字

OLED液晶显示屏显示汉字

时间:2022-05-04 21:53:22

相关推荐

OLED液晶显示屏显示汉字

main.c

void main(void)

{

OLED_Init();

OLED_Clear();

OLED_ShowCHinese(14,0,1);OLED_ShowString(28,0,"nRF24L01",16);while(1) {//OLED_ShowNum(32,4,12,3,16);delay_ms(8000);}

}

oled.c

#include “oled.h”

#include “oledfont.h”

void delay_ms(unsigned int ms)

{

unsigned int a;

while(ms)

{

a=1800;

while(a–);

ms–;

}

return;

}

/**********************************************

//IIC Start

/

void IIC_Start()

{

OLED_SCLK_Set() ;

OLED_SDIN_Set();

OLED_SDIN_Clr();

OLED_SCLK_Clr();

}

/

//IIC Stop

/

void IIC_Stop()

{

OLED_SCLK_Set() ;

OLED_SDIN_Clr();

OLED_SDIN_Set();

}

void IIC_Wait_Ack()

{

OLED_SCLK_Set() ;

OLED_SCLK_Clr();

}

/

// IIC Write byte

/

void Write_IIC_Byte(unsigned char IIC_Byte)

{

unsigned char i;

unsigned char m,da;

da=IIC_Byte;

OLED_SCLK_Clr();

for(i=0;i<8;i++)

{

m=da;

m=m&0x80;

if(m==0x80)

OLED_SDIN_Set();

else OLED_SDIN_Clr();

da=da<<1;

OLED_SCLK_Set();

OLED_SCLK_Clr();

}

}

/

// IIC Write Command

/

void Write_IIC_Command(unsigned char IIC_Command)

{

IIC_Start();

Write_IIC_Byte(0x78); //Slave address,SA0=0

IIC_Wait_Ack();

Write_IIC_Byte(0x00); //write command

IIC_Wait_Ack();

Write_IIC_Byte(IIC_Command);

IIC_Wait_Ack();

IIC_Stop();

}

/

// IIC Write Data

*******************************************/

void Write_IIC_Data(unsigned char IIC_Data)

{

IIC_Start();

Write_IIC_Byte(0x78); //D/C#=0; R/W#=0

IIC_Wait_Ack();

Write_IIC_Byte(0x40); //write data

IIC_Wait_Ack();

Write_IIC_Byte(IIC_Data);

IIC_Wait_Ack();

IIC_Stop();

}

void OLED_WR_Byte(unsigned dat,unsigned cmd)

{

if(cmd)

Write_IIC_Data(dat);

else

Write_IIC_Command(dat);

}

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_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);

}

}

void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 Char_Size)

{

unsigned char c=0,i=0;

c=chr-’ ';//µÃµ½Æ«ÒƺóµÄÖµ

if(x>Max_Column-1){x=0;y=y+2;}

if(Char_Size ==16)

{

OLED_Set_Pos(x,y);

for(i=0;i<8;i++)

OLED_WR_Byte(F8X16[c16+i],OLED_DATA);

OLED_Set_Pos(x,y+1);

for(i=0;i<8;i++)

OLED_WR_Byte(F8X16[c16+i+8],OLED_DATA);

}

else

{

OLED_Set_Pos(x,y);

for(i=0;i<6;i++)

OLED_WR_Byte(F6x8[c][i],OLED_DATA);

}

}

u32 oled_pow(u8 m,u8 n)

{

u32 result=1;

while(n–)result=m;

return result;

}

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(enshow0&&t<(len-1))

{

if(temp0)

{

OLED_ShowChar(x+(size2/2)*t,y,’ ',size2);

continue;

}

else

enshow=1;

}

OLED_ShowChar(x+(size2/2)t,y,temp+‘0’,size2);

}

}

void OLED_ShowString(u8 x,u8 y,u8chr,u8 Char_Size)

{

unsigned char j=0;

while (chr[j]!=’\0’)

{ OLED_ShowChar(x,y,chr[j],Char_Size);

x+=8;

if(x>120){x=0;y+=2;}

j++;

}

}

void OLED_ShowCHinese(u8 x,u8 y,u8 no)

{

u8 t,adder=0;

OLED_Set_Pos(x,y);

for(t=0;t<16;t++)

{

OLED_WR_Byte(Hzk[2no][t],OLED_DATA);

adder+=1;

}

OLED_Set_Pos(x,y+1);

for(t=0;t<16;t++)

{

OLED_WR_Byte(Hzk[2no+1][t],OLED_DATA);

adder+=1;

}

}

void OLED_Init(void)

{

OLED_WR_Byte(0xAE,OLED_CMD);//–display off

OLED_WR_Byte(0x00,OLED_CMD);//—set low column address

OLED_WR_Byte(0x10,OLED_CMD);//—set high column address

OLED_WR_Byte(0x40,OLED_CMD);//–set start line address

OLED_WR_Byte(0xB0,OLED_CMD);//–set page address

OLED_WR_Byte(0x81,OLED_CMD); // contract control

OLED_WR_Byte(0xFF,OLED_CMD);//–128

OLED_WR_Byte(0xA1,OLED_CMD);//set segment remap

OLED_WR_Byte(0xA6,OLED_CMD);//–normal / reverse

OLED_WR_Byte(0xA8,OLED_CMD);//–set multiplex ratio(1 to 64)

OLED_WR_Byte(0x3F,OLED_CMD);//–1/32 duty

OLED_WR_Byte(0xC8,OLED_CMD);//Com scan direction

OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset

OLED_WR_Byte(0x00,OLED_CMD);//

OLED_WR_Byte(0xD5,OLED_CMD);//set osc divisionOLED_WR_Byte(0x80,OLED_CMD);//OLED_WR_Byte(0xD8,OLED_CMD);//set area color mode offOLED_WR_Byte(0x05,OLED_CMD);//OLED_WR_Byte(0xD9,OLED_CMD);//Set Pre-Charge PeriodOLED_WR_Byte(0xF1,OLED_CMD);//OLED_WR_Byte(0xDA,OLED_CMD);//set com pin configuartionOLED_WR_Byte(0x12,OLED_CMD);//OLED_WR_Byte(0xDB,OLED_CMD);//set VcomhOLED_WR_Byte(0x30,OLED_CMD);//OLED_WR_Byte(0x8D,OLED_CMD);//set charge pump enableOLED_WR_Byte(0x14,OLED_CMD);//OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel

}

oled.h

// SCL P1^0

// SDA P1^1

#include “REG52.h”

#ifndef __OLED_H

#define __OLED_H

#define u8 unsigned char

#define u32 unsigned int

#define OLED_CMD 0 //дÃüÁî

#define OLED_DATA 1 //дÊý¾Ý

#define OLED_MODE 0

sbit OLED_SCL=P1^0;//ʱÖÓ D0£¨SCLK£©

sbit OLED_SDIN=P1^1;//Êý¾Ý D1£¨MOSI£©

#define OLED_CS_Clr() OLED_CS=0

#define OLED_CS_Set() OLED_CS=1

#define OLED_RST_Clr() OLED_RST=0

#define OLED_RST_Set() OLED_RST=1

#define OLED_DC_Clr() OLED_DC=0

#define OLED_DC_Set() OLED_DC=1

#define OLED_SCLK_Clr() OLED_SCL=0

#define OLED_SCLK_Set() OLED_SCL=1

#define OLED_SDIN_Clr() OLED_SDIN=0

#define OLED_SDIN_Set() OLED_SDIN=1

#define SIZE 16

#define XLevelL 0x02

#define XLevelH 0x10

#define Max_Column 128

#define Max_Row 64

#define Brightness 0xFF

#define X_WIDTH 128

#define Y_WIDTH 64

void delay_ms(unsigned int ms);

void OLED_WR_Byte(unsigned dat,unsigned cmd);

void OLED_Init(void);

void OLED_Clear(void);

void OLED_DrawPoint(u8 x,u8 y,u8 t);

void OLED_Fill(u8 x1,u8 y1,u8 x2,u8 y2,u8 dot);

void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 Char_Size);

//void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size);

void OLED_ShowString(u8 x,u8 y, u8 *p,u8 Char_Size);

void OLED_Set_Pos(unsigned char x, unsigned char y);

void OLED_ShowCHinese(u8 x,u8 y,u8 no);

void IIC_Start();

void IIC_Stop();

void Write_IIC_Command(unsigned char IIC_Command);

void Write_IIC_Data(unsigned char IIC_Data);

void Write_IIC_Byte(unsigned char IIC_Byte);

void IIC_Wait_Ack();

#endif

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。