用keil使OLED 屏幕亮
时间: 2024-02-15 20:43:14 浏览: 311
起来该怎么做?
首先,你需要使用Keil来打开你的程序。然后,你需要将相关头文件和库文件添加到你的项目中,以便Keil知道如何与OLED屏幕交互。
接下来,你需要初始化OLED屏幕。这可以通过向OLED屏幕发送特定的初始化命令来完成。在程序中,你需要发送这些命令并等待OLED屏幕的响应。
最后,你需要编写代码来控制OLED屏幕的亮度。这可以通过向OLED屏幕发送控制命令来完成。
总的来说,使OLED屏幕亮起来需要在程序中添加正确的库文件、初始化OLED屏幕并编写代码来控制它的亮度。
相关问题
用keil写一个使OLED 屏幕亮的代码
好的,以下是用Keil写使OLED屏幕亮的代码:
首先,需要在代码中定义OLED的引脚:
```c
#define OLED_SDA P1_1 // 数据引脚
#define OLED_SCL P1_0 // 时钟引脚
```
然后,需要初始化OLED屏幕,即向OLED发送一些命令,使其进入正常工作状态:
```c
void OLED_Init() {
Write_Command(0xAE);//display off
Write_Command(0x20);//Set Memory Addressing Mode
Write_Command(0x10);//00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
Write_Command(0xB0);//Set Page Start Address for Page Addressing Mode,0-7
Write_Command(0xC8);//Set COM Output Scan Direction
Write_Command(0x00);//---set low column address
Write_Command(0x10);//---set high column address
Write_Command(0x40);//--set start line address
Write_Command(0x81);//--set contrast control register
Write_Command(0xFF);
Write_Command(0xA1);//--set segment re-map 0 to 127
Write_Command(0xA6);//--set normal display
Write_Command(0xA8);//--set multiplex ratio(1 to 64)
Write_Command(0x3F);//--1/64 duty
Write_Command(0xA4);//0xa4,Output follows RAM content;0xa5,Output ignores RAM content
Write_Command(0xD3);//-set display offset
Write_Command(0x00);//-not offset
Write_Command(0xD5);//--set display clock divide ratio/oscillator frequency
Write_Command(0xF0);//--set divide ratio
Write_Command(0xD9);//--set pre-charge period
Write_Command(0x22); //
Write_Command(0xDA);//--set com pins hardware configuration
Write_Command(0x12);
Write_Command(0xDB);//--set vcomh
Write_Command(0x20);//0x20,0.77xVcc
Write_Command(0x8D);//--set DC-DC enable
Write_Command(0x14):// bit2,1 enabled both supplies ,0 disabled both supplies
Write_Command(0xAF);//--turn on oled panel
}
```
接下来,需要写一个函数来向OLED屏幕发送数据或命令:
```c
void Write_Command(unsigned char dat) {
unsigned char i;
OLED_SCL = 0;
for(i=0;i<8;i++) {
OLED_SDA = 0;
OLED_SCL = 1;
OLED_SCL = 0;
OLED_SDA = dat&0x80;
dat <<= 1;
}
OLED_SCL=0;
OLED_SCL=1;
OLED_SCL=0;
}
```
最后,在主函数中调用OLED_Init函数来初始化OLED屏幕,并调用Write_Command函数发送让OLED屏幕亮起的命令:
```c
int main(void) {
OLED_Init();
Write_Command(0xAF); // turn on OLED panel
while(1);
}
```
以上代码是基于8051单片机的Keil开发环境编写的,需要按照具体硬件配置进行修改才能在实际应用中使用。
用keil写一个让OLED 屏幕亮的代码
好的,下面是一份基于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屏幕应该能够点亮并显示出默认的内容。
阅读全文