之前写过一篇树莓派使用12864接口的2.3寸显示屏的文章,当时用的是并口,占用了太多的gpio资源,于是考虑使用spi接口的显示屏,最近的项目正好用到了spi接口的oled的显示屏,于是考虑把它用到树莓派上,先介绍下这款屏幕:0.96寸的oled屏,spi接口ssd1306主控芯片,在很多单片机上也可以用,它的优点是低功耗,以及它的分辨率很高,很难想象0.96寸上面有128*64的分辨率,而且0.96寸正好就是智能手表的尺寸啊,哈哈。本文使用python和c语言来完成功能。
个人原创,版权所有,转载请注明出处,并保留原文链接:
http://www.embbnux.com/2014/08/10/raspberry_use_spi_oled_screen_python_c/
一 首先介绍使用python来驱动这个spi接口的oled
(1) oled与树莓派连线
之前也介绍过使用python来操作树莓派的gpio口了,这回也一样不过是这次操作的是spi接口。
树莓派自带的26个排针接口里面就有一组spi接口:GPIO9(MISO) GPIO10(MOSI) GPIO11(SCL)
然后看一下我使用的oled的接口:
![](/qrcode.jpg)
分别是GND VCC D0 D1 RST DC CS
各个口的功能与树莓派的io口连线分别如下:
GND接树莓派的GND, VCC接树莓派的3v3 POWER口,就是电源口,不要接到5V
CS是spi的片选口,可以多组spi同时使用,这里接树莓派的GPIO8(CE0)口,第24个管脚
DC口是数据与命令选择口,这里接到第13管脚,对于R1版本的树莓派就是GPIO21,我的是R2版本的,对应的是GPIO27
RST是复位口,这里接到GPIO17也就是11管脚
D1(MOSI)口,接到树莓派的GPIO10(MOSI)口,也就是21管脚
D0(SCLK)口,接到树莓派的GPIO11(SCLK)口,也就是23管脚
(2) 打开树莓派的spi口
树莓派默认的spi和i2c口都是被禁用的,使用之前必须先打开
首先是ssh登陆到树莓派上:
vi /etc/modprobe.d/raspi-blacklist.conf
<code class="spaces"> </code><code class="comments">#blacklist spi-bcm2708 #使用井号注释掉这行</code>
保存后重启树莓派,sudo reboot,这样就会打开树莓派的spi口,具体你可以在/dev目录下看到两个文件:spidev0.0 spidev0.1,对应于gpio口上的spi口,0和1表示片选管脚ce0和ce1
(3) 使用python开始驱动spi口的oled
还是用ssh登陆到树莓派上:
sudo apt-get update
sudo apt-get install build-essential python-dev python-pip
sudo pip install RPi.GPIO
sudo apt-get install python-imaging python-smbus
sudo apt-get install git
sudo mkdir embbnux,com
cd embbnux.com
#clone 下国外友人提供的python库
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
cd Adafruit_Python_SSD1306
sudo python setup.py install
下面就可以使用python来驱动这个oled了:
新建个python文件:spioled.py,具体请见原文博客:
http://www.embbnux.com/2014/08/10/raspberry_use_spi_oled_screen_python_c/
二 用C语言操作SPI口
和python比较像,如果有兴趣的话,见原文博客。