树莓派中使用wiringpi和gcc驱动oeld显示字符串以及数字的函数
时间: 2024-05-07 13:18:41 浏览: 89
可以使用以下代码来在树莓派中使用wiringPi和gcc驱动oled显示字符串和数字。
首先,确保你已经安装了wiringPi库和gcc编译器。然后,连接好你的oled屏幕并打开树莓派。
下面是一个示例代码,可以在oled屏幕上显示一个字符串和一个数字:
```c
#include <wiringPi.h>
#include <wiringPiI2C.h>
#include <stdio.h>
#define OLED_Address 0x3c // OLED屏幕的地址
// OLED屏幕的初始化函数
void OLED_Init(int fd)
{
wiringPiI2CWriteReg8(fd, 0x00, 0xAE); // 关闭OLED屏幕
wiringPiI2CWriteReg8(fd, 0x00, 0x20); // 水平寻址模式
wiringPiI2CWriteReg8(fd, 0x00, 0x10); // 垂直寻址模式
wiringPiI2CWriteReg8(fd, 0x00, 0xb0); // 显示开始行
wiringPiI2CWriteReg8(fd, 0x00, 0xc8); // 垂直翻转
wiringPiI2CWriteReg8(fd, 0x00, 0x00); // 低位列地址
wiringPiI2CWriteReg8(fd, 0x00, 0x10); // 高位列地址
wiringPiI2CWriteReg8(fd, 0x00, 0x40); // 显示开始行
wiringPiI2CWriteReg8(fd, 0x00, 0x81); // 对比度设置
wiringPiI2CWriteReg8(fd, 0x00, 0xff); // 对比度值
wiringPiI2CWriteReg8(fd, 0x00, 0xa1); // 垂直翻转
wiringPiI2CWriteReg8(fd, 0x00, 0xa6); // 正常显示
wiringPiI2CWriteReg8(fd, 0x00, 0xa8); // 多路复用比率设置
wiringPiI2CWriteReg8(fd, 0x00, 0x1f); // 多路复用比率值
wiringPiI2CWriteReg8(fd, 0x00, 0xd3); // 设置显示偏移
wiringPiI2CWriteReg8(fd, 0x00, 0x00); // 显示偏移值
wiringPiI2CWriteReg8(fd, 0x00, 0xd5); // 显示时钟分频设置
wiringPiI2CWriteReg8(fd, 0x00, 0xf0); // 显示时钟分频值
wiringPiI2CWriteReg8(fd, 0x00, 0xd9); // 设置预充电周期
wiringPiI2CWriteReg8(fd, 0x00, 0x22); // 预充电周期值
wiringPiI2CWriteReg8(fd, 0x00, 0xda); // 设置COM硬件引脚配置
wiringPiI2CWriteReg8(fd, 0x00, 0x12); // COM硬件引脚配置值
wiringPiI2CWriteReg8(fd, 0x00, 0xdb); // VCOMH电压倍率设置
wiringPiI2CWriteReg8(fd, 0x00, 0x20); // VCOMH电压倍率值
wiringPiI2CWriteReg8(fd, 0x00, 0x8d); // 电荷泵设置
wiringPiI2CWriteReg8(fd, 0x00, 0x14); // 电荷泵值
wiringPiI2CWriteReg8(fd, 0x00, 0xaf); // 打开OLED屏幕
wiringPiI2CWriteReg8(fd, 0x00, 0x00); // 清屏
}
// 在OLED屏幕上显示字符串
void OLED_ShowString(int fd, int x, int y, const char *str)
{
int i;
wiringPiI2CWriteReg8(fd, 0x00, 0xb0 + y); // 显示开始行
wiringPiI2CWriteReg8(fd, 0x00, ((x & 0xf0) >> 4) | 0x10); // 高位列地址
wiringPiI2CWriteReg8(fd, 0x00, (x & 0x0f) | 0x00); // 低位列地址
for (i = 0; str[i] != '\0'; i++) {
wiringPiI2CWriteReg8(fd, 0x40, str[i]);
}
}
// 在OLED屏幕上显示数字
void OLED_ShowNumber(int fd, int x, int y, int num)
{
char str[16];
sprintf(str, "%d", num);
OLED_ShowString(fd, x, y, str);
}
int main()
{
int fd;
fd = wiringPiI2CSetup(OLED_Address);
OLED_Init(fd);
OLED_ShowString(fd, 0, 0, "Hello, world!");
OLED_ShowNumber(fd, 0, 2, 12345);
return 0;
}
```
在上面的代码中,我们定义了`OLED_Init()`函数来初始化OLED屏幕。然后,我们定义了`OLED_ShowString()`函数和`OLED_ShowNumber()`函数,用于在OLED屏幕上显示字符串和数字。
在`main()`函数中,我们首先调用`wiringPiI2CSetup()`函数来初始化I2C总线,并将结果存储在`fd`变量中。然后,我们调用`OLED_Init()`函数来初始化OLED屏幕,并使用`OLED_ShowString()`函数和`OLED_ShowNumber()`函数来在屏幕上显示字符串和数字。
编译并运行上面的代码,你应该可以在OLED屏幕上看到"Hello, world!"和"12345"。
阅读全文