用keil写一个让OLED 屏幕亮的代码
时间: 2024-05-14 15:19:29 浏览: 96
好的,下面是一份基于Keil的OLED屏幕点亮的代码:
```c
#include <reg52.h>
// 定义OLED引脚
sbit OLED_SCL=P1^0; // OLED时钟线
sbit OLED_SDA=P1^1; // OLED数据线
void OLED_WriteCmd(unsigned char cmd);
void OLED_WriteData(unsigned char dat);
void OLED_Init(void);
int main()
{
OLED_Init(); // 初始化OLED屏幕
while(1)
{
OLED_WriteCmd(0xAF); // 指令0xAF表示开启OLED显示
}
}
// 向OLED芯片写命令
void OLED_WriteCmd(unsigned char cmd)
{
unsigned char i;
OLED_SCL = 0; // 拉低时钟线
for(i=0;i<8;i++)
{
OLED_SDA = (cmd & 0x80); // 发送最高位到数据线
cmd <<= 1; // 左移1位,准备发送下一位
OLED_SCL = 1; // 拉高时钟线,触发OLED芯片接收数据
OLED_SCL = 0; // 再次拉低时钟线,为下一位数据的发送做准备
}
OLED_SDA = 1; // 发送结束,拉高数据线
}
// 向OLED芯片写数据
void OLED_WriteData(unsigned char dat)
{
unsigned char i;
OLED_SCL = 0; // 拉低时钟线
for(i=0;i<8;i++)
{
OLED_SDA = (dat & 0x80); // 发送最高位到数据线
dat <<= 1; // 左移1位,准备发送下一位
OLED_SCL = 1; // 拉高时钟线,触发OLED芯片接收数据
OLED_SCL = 0; // 再次拉低时钟线,为下一位数据的发送做准备
}
OLED_SDA = 1; // 发送结束,拉高数据线
}
// 初始化OLED屏幕
void OLED_Init(void)
{
// 数据手册上给出的初始化代码
OLED_WriteCmd(0xae); // 关闭显示
OLED_WriteCmd(0x00); // 设置列地址低位
OLED_WriteCmd(0x10); // 设置列地址高位
OLED_WriteCmd(0x40); // 设置行地址(内部映射)低位
OLED_WriteCmd(0xb0); // 设置行地址(内部映射)高位
OLED_WriteCmd(0x81); // 设置对比度
OLED_WriteCmd(0xff); // 对比度设置为最大
OLED_WriteCmd(0xa1); // 段的重新映射
OLED_WriteCmd(0xa6); // 设置普通显示模式
OLED_WriteCmd(0xa8); // 设置多路复用源
OLED_WriteCmd(0x3f); // 多路复用设置为63
OLED_WriteCmd(0xc8); // 显示扫描方向(向下)
OLED_WriteCmd(0xd3); // 设置显示偏移(水平)
OLED_WriteCmd(0x00); // 设置显示偏移量为0
OLED_WriteCmd(0xd5); // 设置时钟分频因子/振荡器频率
OLED_WriteCmd(0x80); // OLED时钟分频因子设置为1,振荡器频率设置为最大
OLED_WriteCmd(0xd9); // 设置预充电周期
OLED_WriteCmd(0xf1); // 预充电周期设置为15
OLED_WriteCmd(0xda); // 设置硬件接口映射
OLED_WriteCmd(0x12); // 硬件接口映射设置为COM左右互换
OLED_WriteCmd(0xdb); // 设置VCOMH
OLED_WriteCmd(0x40); // VCOMH设置0.77倍VCC
OLED_WriteCmd(0xad); // 设置外部VCC电源引脚的状态
OLED_WriteCmd(0x30); // VCC电源引脚状态设置为开启
OLED_WriteCmd(0xa4); // 全部点亮显示(显示RAM是否输出)
OLED_WriteCmd(0xa7); // 反转显示
OLED_WriteCmd(0xaf); // 开启显示
}
```
这份代码可以通过OLED_SCL和OLED_SDA引脚来控制OLED屏幕的显示。当执行main函数时,会执行在while循环中的函数OLED_WriteCmd(0xAF),这个函数会向OLED屏幕发送一个指令0xAF,指令0xAF表示开启OLED显示。因此,运行代码后,OLED屏幕应该能够点亮并显示出默认的内容。
阅读全文