1. 程式人生 > >樹莓派raspberry使用spi介面oled顯示屏:基於python和c

樹莓派raspberry使用spi介面oled顯示屏:基於python和c

  之前寫過一篇樹莓派使用12864介面的2.3寸顯示屏的文章,當時用的是並口,佔用了太多的gpio資源,於是考慮使用spi介面的顯示屏,最近的專案正好用到了spi介面的oled的顯示屏,於是考慮把它用到樹莓派上,先介紹下這款螢幕:0.96寸的oled屏,spi介面ssd1306主控晶片,在很多微控制器上也可以用,它的優點是低功耗,以及它的解析度很高,很難想象0.96寸上面有128*64的解析度,而且0.96寸正好就是智慧手錶的尺寸啊,哈哈。本文使用python和c語言來完成功能。

個人原創,版權所有,轉載請註明出處,並保留原文連結:

一 首先介紹使用python來驅動這個spi介面的oled

(1) oled與樹莓派連線

之前也介紹過使用python來操作樹莓派的gpio口了,這回也一樣不過是這次操作的是spi介面。

樹莓派自帶的26個排針接口裡面就有一組spi介面:GPIO9(MISO) GPIO10(MOSI) GPIO11(SCL)

  

然後看一下我使用的oled的介面:

分別是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,具體請見原文部落格:

二 用C語言操作SPI口

  和python比較像,如果有興趣的話,見原文部落格。