标题:
基于MSP430F5529的OLED驱动程序
[打印本页]
作者:
afeffaef
时间:
2020-7-15 17:25
标题:
基于MSP430F5529的OLED驱动程序
压缩包中代码
单片机源程序如下:
/*
* OLED_IIC.c
*
* Created on: 2020年7月15日
* Author: 13293
*/
#include "OLED_IIC.h"
#include "stdlib.h"
#include "OLED_FONT.h"
#include <msp430.h>
//OLED延时功能
void delayms(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
//IIC开始
void oled_IIC_Start()
{
oled_SCL_1;
oled_SDA_1;
oled_SDA_0;
oled_SCL_0;
}
//IIC停止
void oled_IIC_Stop()
{
oled_SCL_0;
oled_SDA_0;
oled_SCL_1;
oled_SDA_1;
}
//IIC写字节
void oled_Write_IIC_Byte(uchar IIC_Byte)
{
uchar i;
for(i=0;i<8;i++)
{
if(IIC_Byte & 0x80)
oled_SDA_1;
else
oled_SDA_0;
oled_SCL_1;
oled_SCL_0;
IIC_Byte<<=1;
}
oled_SDA_1;
oled_SCL_1;
oled_SCL_0;
}
//IIC写入数据
void OLED_12864_Write_data(uint dat)
{
oled_IIC_Start();
oled_Write_IIC_Byte(0x78);
oled_Write_IIC_Byte(0x40);
oled_Write_IIC_Byte(dat);
oled_IIC_Stop();
}
//IIC写入命令
void OLED_12864_Write_commomand(uint dat)
{
oled_IIC_Start();
oled_Write_IIC_Byte(0x78);
oled_Write_IIC_Byte(0x00);
oled_Write_IIC_Byte(dat);
oled_IIC_Stop();
}
//OLED设置起始坐标
void OLED_SetPos(uchar x, uchar y)
{
OLED_12864_Write_commomand(0xb0+y);
OLED_12864_Write_commomand(((x&0xf0)>>4)|0x10);
OLED_12864_Write_commomand((x&0x0f)|0x01);
}
//IIC OLED屏幕填充
void OLED_Fill(uchar bmp_dat)
{
uchar y,x;
for(y=0;y<8;y++)
{
OLED_12864_Write_commomand(0xb0+y);
OLED_12864_Write_commomand(0x01);
OLED_12864_Write_commomand(0x10);
for(x=0;x<128;x++)
OLED_12864_Write_data(bmp_dat);
}
}
//OLED12864初始化
void OLED_12864_Init()
{
oled_IO_init;
delayms(500); //初始化之前的延时很重要!
OLED_12864_Write_commomand(0xae);
OLED_12864_Write_commomand(0x00);
OLED_12864_Write_commomand(0x10);
OLED_12864_Write_commomand(0x40);
OLED_12864_Write_commomand(0x81);
OLED_12864_Write_commomand(0xFF);//设置OLED亮度
OLED_12864_Write_commomand(0xa1);
OLED_12864_Write_commomand(0xc8);
OLED_12864_Write_commomand(0xa6);
OLED_12864_Write_commomand(0xa8);
OLED_12864_Write_commomand(0x3f);
OLED_12864_Write_commomand(0xd3);
OLED_12864_Write_commomand(0x00);
OLED_12864_Write_commomand(0xd5);
OLED_12864_Write_commomand(0x80);
OLED_12864_Write_commomand(0xd9);
OLED_12864_Write_commomand(0xf1);
OLED_12864_Write_commomand(0xda);
OLED_12864_Write_commomand(0x12);
OLED_12864_Write_commomand(0xdb);
OLED_12864_Write_commomand(0x40);
OLED_12864_Write_commomand(0x20);
OLED_12864_Write_commomand(0x02);
OLED_12864_Write_commomand(0x8d);
OLED_12864_Write_commomand(0x14);
OLED_12864_Write_commomand(0xa4);
OLED_12864_Write_commomand(0xa6);
OLED_12864_Write_commomand(0xaf);
OLED_Fill(0x00); //清屏
OLED_SetPos(0,0);
}
//IIC OLED显示单个字符
void OLED_8x16Str(uchar x, uchar y, uchar ch)
{
uchar i=0;
if(x>120)
{
x=0;y++;
}
OLED_SetPos(x,y);
for(i=0;i<8;i++)
{
OLED_12864_Write_data(F8X16[ch*16+i]);
}
OLED_SetPos(x,y+1);
for(i=0;i<8;i++)
{
OLED_12864_Write_data(F8X16[ch*16+i+8]);
}
}
//IIC OLED显示字符串
void OLED_ShowStr(uchar x, uchar y, uchar ch[])
{
uchar c = 0,i = 0,j = 0;
//'\0'位字符串结束标志
while(ch[j] != '\0')
{
c = ch[j] - 32;
if(x > 120)
{
x = 0;
y++;
}
OLED_SetPos(x,y);
for(i=0;i<8;i++)
OLED_12864_Write_data(F8X16[c*16+i]);
OLED_SetPos(x,y+1);
for(i=0;i<8;i++)
OLED_12864_Write_data(F8X16[c*16+i+8]);
x += 8;
j++;
}
}
//显示16*32的坐标(x,y),y为页范围0~7---分四部分
void OLED_16x32(uchar x, uchar y, uchar ch)
{
uchar i=0;
if(x>120)
{
x=0;y++;
}
OLED_SetPos(x,y);
for(i=0;i<16;i++)
{
OLED_12864_Write_data(F16X32[ch*64+i]);
}
OLED_SetPos(x,y+1);
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
OLED.rar
(4.3 KB, 下载次数: 126)
2020-7-15 17:24 上传
点击文件名下载附件
源、头文件
下载积分: 黑币 -5
作者:
Burannn
时间:
2020-9-24 14:37
这个oled是所有oled都适用嘛
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1