i2c驱动参考前一篇文章荔枝派Lichee Pi/planckpi/f1c100s添加i2c并驱动oled(sh1107/ssd1306)_山间朝暮-C的博客-CSDN博客
由于gcc交叉编译有问题,所以暂时只能用shell命令点亮屏幕了
演示视频Linux下手敲OLED屏幕显示,终于点亮啦_哔哩哔哩_bilibili
首先是屏幕初始化init.sh(屏幕地址参考上一篇)
i2cset -y 0 0x3c 0x00 0xae关闭屏幕
i2cset -y 0 0x3c 0x00 0x00
i2cset -y 0 0x3c 0x00 0x10
i2cset -y 0 0x3c 0x00 0x20
i2cset -y 0 0x3c 0x00 0x81
i2cset -y 0 0x3c 0x00 0x6f
i2cset -y 0 0x3c 0x00 0xa0
i2cset -y 0 0x3c 0x00 0xc0
i2cset -y 0 0x3c 0x00 0xa4
i2cset -y 0 0x3c 0x00 0xa6//正常显示a7是反色
i2cset -y 0 0x3c 0x00 0xd5
i2cset -y 0 0x3c 0x00 0x91
i2cset -y 0 0x3c 0x00 0xd9
i2cset -y 0 0x3c 0x00 0x22
i2cset -y 0 0x3c 0x00 0xdb
i2cset -y 0 0x3c 0x00 0x3f
i2cset -y 0 0x3c 0x00 0xa8
i2cset -y 0 0x3c 0x00 0x4f
i2cset -y 0 0x3c 0x00 0xd3
i2cset -y 0 0x3c 0x00 0x68
i2cset -y 0 0x3c 0x00 0xdc
i2cset -y 0 0x3c 0x00 0x00
i2cset -y 0 0x3c 0x00 0xad
i2cset -y 0 0x3c 0x00 0x8a
i2cset -y 0 0x3c 0x00 0xaf
i2cset -y 0 0x3c 0x00 0xaf//开启屏幕
给执行权限
chmod +x init.sh
然后运行,屏幕就亮了
然后是横条纹显示
for loop_1 in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
do
base=176;
line=`expr $base + $loop_1`;
echo "第$loop_1行";
i2cset -y 0 0x3c 00 $line
i2cset -y 0 0x3c 00 0x00
i2cset -y 0 0x3c 00 0x10
for loop0 in 1 2 3 4 5 6 7 8
do
for loop in 1 2 3 4 5
do
i2cset -y 0 0x3c 40 00
done
for loop in 1 2 3 4 5
do
i2cset -y 0 0x3c 40 0xff
done
done
done
然后是竖条纹显示
for loop_1 in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
do
base=176;
line=`expr $base + $loop_1`;
echo "第$loop_1行";
i2cset -y 0 0x3c 00 $line
i2cset -y 0 0x3c 00 0x00
i2cset -y 0 0x3c 00 0x10
for loop0 in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
do
if [ `expr $loop_1 % 2` == 0 ]
then #echo "0"
for loop in 1 2 3 4 5
do
i2cset -y 0 0x3c 40 00
done
else #echo "1"
for loop in 1 2 3 4 5
do
i2cset -y 0 0x3c 40 0xff
done
fi
done
done
虽然只能简单的显示,不过用来测试一下屏幕还是可以的
后面搞好交叉编译器就可以直接C语言驱动了