標題: 7針腳OLED用spi通訊的單片機源碼與資料 [打印本頁]
作者: xiaowuya07 時間: 2018-7-25 00:13
標題: 7針腳OLED用spi通訊的單片機源碼與資料
OLED使用經歷
手里有7針腳的OLED屏幕,也是閑來無聊,就研究了一下如何使用。
大概翻了一下廠家的手冊,默認是SPI通訊,啊,他為什么不能是IIC通訊呢,不過也好,正好學習一下SPI。
先說SPI通訊,百度了一下SPI是同步串行全雙工通訊總線。現在想想,DS18B20的單總線,eeprom的半雙工IIC,OLED的全雙工SPI就都玩過一把了。優缺點就不說了,現在的水平還是體會不到的,直接說怎么用。SPI可以接四根線(發數據與讀數據)或者是接三線(只發數據)。
四根線分別是:SDI(數據輸入),SDO(數據輸出)SCLK(時鐘)CS(片選)
1. SDO/MOSI:主設備發送數據,從設備接受數據
2. SDI/MISO:主設備接受數據,從設備發送數據
3. SCLK:時鐘信號,由主設備產生
4. CS:當從設備有很多時,每個設備都有一個CS引腳連接到主設備,當主設備想要連接到A從設備但是又不想連接到B的從設備時,就可以通過拉低A設備的CS引腳而不拉低B設備的CS引腳來控制不同的從設備是否工作
盜一張圖SPI通訊的開始與結束比IIC簡單多了,CS為低就開始,CS為高就結束
然后就是時鐘極性(CPOL)與時鐘相位(CPHA)了,感覺是不是聽上去就高大上
主機和從機的時鐘極性時鐘相位必須一樣,時鐘極性與時鐘相位通過不通過01組合,一共有四種模式
1. mode0:CPOL = 0,CPHA = 0
CPOL=0,CPHA=0:此時空閑態時,SCLK處于低電平,數據采樣是在第1個邊沿,也就是SCLK由低電平到高電平的跳變,所以數據采樣是在上升沿,數據發送是在下降沿。
2.Mode1:CPOL= 0,CPHA = 1
CPOL=0,CPHA=1:此時空閑態時,SCLK處于低電平,數據發送是在第1個邊沿,也就是SCLK由低電平到高電平的跳變,所以數據采樣是在下降沿,數據發送是在上升沿。
3.mode2:CPOL= 1,CPHA = 0
CPOL=1,CPHA=0:此時空閑態時,SCLK處于高電平,數據采集是在第1個邊沿,也就是SCLK由高電平到低電平的跳變,所以數據采集是在下降沿,數據發送是在上升沿。
4.mode3:CPOL = 1,CPHA = 1
CPOL=1,CPHA=1:此時空閑態時,SCLK處于高電平,數據發送是在第1個邊沿,也就是 SCLK由高電平到低電平的跳變,所以數據采集是在上升沿,數據發送是在下降沿。
SPI的時鐘極性和時鐘相位一般都是是從機出場時就設定好的,主機根據從機去配
嗯,以上差不多就是我對SPI使用的理解了,下面說一說OLED
OLED的7個引腳分別為GND,VCC(3.3-5V)D0(時鐘線)D1(數據線)RES(復位線)DC(數據命令選擇線)和CS(SPI片選線)手上的OLED用的驅動芯片是SSD1306,那么就先從最基礎的SPI與SSD1306通訊開始主要就是這么一個函數OLED_CS_Clr();首先傳來兩個數據,一個dat,一個cmd,如果cmd是1的話說明發送的是指令,要將DC拉高。DC確定完后拉低CS確定從機。之后開始傳輸數據。數據從高到低發送,數據手冊上有說明按照次序將數據線至高至低,每次循環完一次后將時鐘拉高,數據左移一位。這是SPI的時鐘極性和時鐘相位的所規定,總之SPI通訊是這么一回事,具體還得看手冊。其中還是有一點小問題,圖上的sclk(d0)在空閑情況下可高可低,但是在改動過程序后如果不將空閑時時鐘線拉高的話是顯示不出圖像的,也就是sclk在空閑情況下只能是高。但是為什么數據手冊上可高可低,我也確實不得而知,要是有大神懂的話就告訴我唄。
還有一個問題,SPI是有4根線的,現在只有三根,還有一根數據接收線。在我找遍了百度都找不到后,不得不翻開了數據手
串行模式下只允許寫入操作,那剩下的讀取線自然是沒有了,好奇怪4線和3線有什么區別。。。哎英語還是得好好學啊。
好了,基本的通訊寫完了,那剩下就是一些零散的寄存器配置了,要是可以搞懂SSD1306的寄存器配置還得讀完59頁的數據手冊。。。。。。。還是偷個懶用原廠代碼吧,里面有一些基本函數和字庫,做簡單的顯示用還是應付的過來的。漢字用取模軟件可以出,模式是列行式,圖片的話吧圖片轉成bmp格式大小轉換成128X64就能顯示。
最后上幾張測試圖如果要用IIC的話圖中的R3電阻要放到R4的
程序是根據廠家的程序一個一個函數調過來的,自己做了一個OLED的代碼庫,這里還是給出原廠代碼吧。圖片轉換器和取模軟件都在文件夾中。
-
1532447930169.jpg
(1.6 MB, 下載次數: 132)
下載附件
2018-7-25 00:09 上傳
-
t01b6660b12621e7f16.jpg
(5.7 KB, 下載次數: 117)
下載附件
2018-7-25 00:09 上傳
-
TIM圖片20180724233052.jpg
(2.66 MB, 下載次數: 107)
下載附件
2018-7-25 00:09 上傳
-
TIM圖片20180724233101.jpg
(1.74 MB, 下載次數: 108)
下載附件
2018-7-25 00:09 上傳
-
TIM圖片20180724233112.jpg
(2.28 MB, 下載次數: 129)
下載附件
2018-7-25 00:09 上傳
-
Snipaste_2018-07-24_21-46-14.png
(60.46 KB, 下載次數: 119)
下載附件
2018-7-25 00:09 上傳
-
Snipaste_2018-07-24_22-39-32.png
(45.17 KB, 下載次數: 106)
下載附件
2018-7-25 00:09 上傳
-
Snipaste_2018-07-24_22-47-33.png
(46.55 KB, 下載次數: 98)
下載附件
2018-7-25 00:09 上傳
-
Snipaste_2018-07-24_23-40-19.png
(79.73 KB, 下載次數: 113)
下載附件
2018-7-25 00:09 上傳
-
Snipaste_2018-07-25_00-09-06.png
(103.93 KB, 下載次數: 124)
下載附件
2018-7-25 00:09 上傳
-
0.png
(49.26 KB, 下載次數: 120)
下載附件
2018-7-25 01:35 上傳
-
-
OLED使用經歷.zip
2018-7-25 00:12 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
12.04 MB, 下載次數: 318, 下載積分: 黑幣 -5
作者: xiaowuya07 時間: 2018-7-25 00:23
時鐘極性和時鐘相位通過不同組合
作者: xiaowuya07 時間: 2018-7-25 00:24
主要就是這么一個函數OLED_WR_Byte(),這兩處寫錯了,才看見
作者: 發燒人生 時間: 2018-10-3 20:25
謝謝樓主分享,很有用
作者: animation 時間: 2018-12-30 13:29
怎么改呢
作者: Smartaotao 時間: 2019-7-7 18:43
I2C的話電阻要更改嗎
作者: 由我們主宰 時間: 2019-8-28 08:23
要啊,你買的OLED背后一般有寫IIC電阻有哪些,spi3線和spi四線有哪些電阻要焊上
作者: 10494771 時間: 2019-11-27 09:06
主要就是這么一個函數OLED_WR_Byte(),這兩處寫錯了,才看見
作者: nnlynn 時間: 2023-7-22 17:14
可以寫一下oled顯示數字的程序嗎
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
日韩一区中文字幕
|
午夜99
|
免费观看av网站
|
国产在线精品一区二区三区
|
羞羞视频在线观看
|
成人精品一区二区三区中文字幕
|
久草网在线视频
|
国产欧美日韩一区
|
日韩一区中文字幕
|
99re国产|
亚洲视频在线免费观看
|
亚洲精品久久久久久一区二区
|
欧美精品一区二区免费
|
欧美日韩高清
|
精品在线一区
|
亚洲欧洲国产视频
|
蜜臀久久99精品久久久久久宅男
|
日韩电影a
|
婷婷五月色综合
|
a级毛片免费高清视频
|
av影音资源
|
欧美亚洲一区二区三区
|
少妇午夜一级艳片欧美精品
|
99久久国产
|
91免费小视频
|
91免费版在线观看
|
精久久久|
日韩中文字幕免费在线
|
免费久久网|
精品一区在线看
|
91资源在线
|
97caoporn国产免费人人
|
一级毛片视频免费观看
|
九九看片
|
精品国产乱码久久久久久蜜柚
|
国产高清一区二区三区
|
亚洲成人精选
|
亚洲最大的成人网
|
国产日韩欧美一区二区在线播放
|
中文字幕 视频一区
|
999久久久久久久久
国产欧美在线观看
|