版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目二十四
SSD1306液晶顯示項(xiàng)目導(dǎo)入01項(xiàng)目導(dǎo)入
物聯(lián)網(wǎng)設(shè)備通常都具有通過傳感器采集數(shù)據(jù)的功能,人們想獲取這些數(shù)據(jù)往往采用的方法有2種。一種方法是采用串口通信的方式,通過MCU的串口將數(shù)據(jù)發(fā)送到PC機(jī),再在PC機(jī)上顯示出來;另一種方法就是把數(shù)據(jù)直接通過液晶顯示出來。而液晶顯示的方法具有簡(jiǎn)單快捷、攜帶方便、成本低廉等特點(diǎn),在物聯(lián)網(wǎng)產(chǎn)品上得到了廣泛的應(yīng)用。項(xiàng)目分析02項(xiàng)目分析
本項(xiàng)目需要1個(gè)ZigBee模塊和1個(gè)SSD1306液晶模塊。由CC2530通過SHT10傳感器采集溫濕度數(shù)據(jù),再通過SSD1306液晶模塊把數(shù)據(jù)直接顯示出來。SSD1306是一款128*64像素的OLED(OrganicLight-EmittingDiode,有機(jī)發(fā)光二極管)的液晶顯示器,具有自發(fā)光、無需背光源、厚度薄、視角廣、反應(yīng)速度快、使用溫度范圍廣、構(gòu)造及制程較簡(jiǎn)單、成本低廉等特點(diǎn),在許多電子產(chǎn)品和電子實(shí)驗(yàn)中被采用?!卷?xiàng)目要求】1.用SHT10傳感器采集溫濕度數(shù)據(jù)。2.用SSD1306液晶模塊顯示溫濕度數(shù)據(jù)。3.用SSD1306液晶模塊顯示圖形。項(xiàng)目目標(biāo)03項(xiàng)目目標(biāo)ADBC掌握SSD1306液晶模塊工作原理。學(xué)會(huì)使用SSD1306液晶模塊顯示數(shù)據(jù)。學(xué)會(huì)使用SSD1306液晶模塊顯示圖形。熟悉SHT10傳感器的工作原理。知識(shí)儲(chǔ)備04知識(shí)儲(chǔ)備
要完成這個(gè)項(xiàng)目的設(shè)計(jì),我們首先要了解SHT10和SSD1306液晶模塊的工作原理,其次要學(xué)會(huì)使用SSD1306液晶模塊顯示數(shù)據(jù)和顯示圖形的方法。其中SHT10溫濕度傳感器的工作原理前面項(xiàng)目已有介紹,本節(jié)主要介紹SSD1306液晶模塊的原理及顯示方法。SSD1306液晶模塊工作原理054.1SSD1306簡(jiǎn)介
SSD1306是一款帶控制器的用于OLED點(diǎn)陣圖形顯示系統(tǒng)的驅(qū)動(dòng)器。由128個(gè)SEG(列輸出)和64個(gè)COM(行輸出)組成。該芯片專為共陰極OLED面板設(shè)計(jì)。SSD1306內(nèi)置對(duì)比度控制器、顯示RAM(GDDRAM)和振蕩器,以此減少了外部元件的數(shù)量和功耗。該芯片有256級(jí)亮度控制。數(shù)據(jù)或命令由MCU通過I2C接口或SPI接口發(fā)送。該芯片適用于許多小型便攜式應(yīng)用,如電子設(shè)備顯示屏、MP3播放器和計(jì)算器等。SSD1306簡(jiǎn)介
OLED具備自發(fā)光無需背光源的特點(diǎn),因此不顯示數(shù)據(jù)時(shí)是黑屏的。而LCD顯示器都需要背光,因此無顯示數(shù)據(jù)時(shí)屏幕也會(huì)發(fā)光。同樣的顯示OLED效果更好一些,因此OLED被認(rèn)為是下一代的平面顯示器應(yīng)用技術(shù)。以目前的技術(shù)來說,OLED的尺寸還難以做到大型化。常用的OLED顯示模塊有以下特點(diǎn):模塊有單色和雙色兩種可選:?jiǎn)紊珵榧兯{(lán)色,而雙色則為黃藍(lán)雙色。屏幕尺寸?。猴@示尺寸常用有0.91"、0.96"、1.3",本項(xiàng)目采用0.96"模塊。高分辨率:常用模塊的分辨率為128*64。多種接口方式:常用IIC接口(4腳)、3線(6腳)或4線(7腳)的SPI接口方式。供電電壓:3.3V。4.2
SSD1306液晶初始化SSD1306液晶使用前需要調(diào)用初始化函數(shù)LCD_Init(void),其代碼如下:voidLCD_Init(void){LCD_WrCmd(0xae);//顯示面板關(guān)(睡眠模式)LCD_WrCmd(0x00);//設(shè)置顯示時(shí)的起始列地址低四位LCD_WrCmd(0x10);//設(shè)置顯示時(shí)的起始列地址高四位。LCD_WrCmd(0x40);//設(shè)置起始行,0-63LCD_WrCmd(0x81);//設(shè)置對(duì)比度LCD_WrCmd(0xcf);//數(shù)值越大對(duì)比度越大,0-255LCD_WrCmd(0xa1);//列掃描方向從左到右,0xa0左右翻轉(zhuǎn)LCD_WrCmd(0xc8);//行掃描方向從上到下,0xc0從下到上LCD_WrCmd(0xa6);//A6正常顯示,A7命令反相顯示LCD_WrCmd(0xaf);//開啟oled面板顯示
}SSD1306基本命令表1.基本命令表16進(jìn)制D7D6D5D4D3D2D1D0功能描述81A[7:0]1A70A60A50A40A30A20A11A0設(shè)置對(duì)比度雙字節(jié)命令,設(shè)置對(duì)比度為0~256,對(duì)比度隨著值的增加而增加,(RESET=7Fh)A4/A51010010X0開啟整體顯示A4命令(X0=0),顯示GDDRAM內(nèi)容;A5命令(X0=1),忽略GDDRAM數(shù)據(jù)點(diǎn)亮全屏A6/A71010011X0正常/反相顯示A6命令(X0=0),正常顯示A7命令(X0=1),反相顯示AE/AF1010111X0設(shè)置顯示開或關(guān)閉AE命令(X0=0),顯示關(guān)(睡眠模式);AF命令(X0=1),顯示開,正常模式SSD1306硬件設(shè)置命令3.硬件設(shè)置命令表HexD7D6D5D4D3D2D1D0命令描述40~7F01X5X4X3X2X1X0設(shè)置起始行X5-X0表示起始行0-63,RESET=000000A0/A11010000X0列掃描方向X0=1,列掃描方向從左到右,X0=0,方向從右到左A8A[5:0]1*0*1A50A41A30A20A10A0設(shè)置復(fù)用率雙字節(jié)指令,設(shè)置復(fù)用率為N+1C0/C81100X3000行掃描方向行掃描方向,0xC8從上到下,0xC0從下到上D3A[5:0]1*1*0A51A40A30A21A11A0設(shè)置顯示位移設(shè)置顯示位移,0x00~0x3F,RESET=00HSSD1306簡(jiǎn)介從上表可以看出,當(dāng)初始化命令為0xa0時(shí)畫面左右翻轉(zhuǎn);當(dāng)初始化命令為0xA5時(shí)點(diǎn)亮全屏。SSD1306簡(jiǎn)介當(dāng)初始化命令為0xA7時(shí)畫面反白顯示;當(dāng)初始化命令為0xd3時(shí)畫面位移。4.2SSD1306液晶顯示英文字符函數(shù)voidOLED_P8x16Str(unsignedcharx,y,unsignedcharch[]){ unsignedcharc=0,i=0,j=0; while(ch[j]!='\0') {
c=ch[j]-32;//ascii碼表中前32個(gè)字符無法顯示
if(x>120){x=0;y++;}//調(diào)用8*16點(diǎn)陣字庫(kù),最大顯示128列,超過則需另起一行
OLED_Set_Pos(x,y);//設(shè)置顯示位置為第pagey(字符的上半部分)
for(i=0;i<8;i++)
OLED_WrDat(F8X16[c*16+i]);//顯示的8*16點(diǎn)陣字符
OLED_Set_Pos(x,y+1);//設(shè)置顯示位置為第pagey+1(字符的下半部分)
for(i=0;i<8;i++)
OLED_WrDat(F8X16[c*16+i+8]);
x+=8;
j++; }4.3顯示位置設(shè)置voidOLED_Set_Pos(unsignedcharx,unsignedchary){ OLED_WrCmd(0xb0+y);//設(shè)置目標(biāo)顯示位置頁(yè)起始地址 OLED_WrCmd(((x&0xf0)>>4)|0x10);//設(shè)置列起始地址低4位 OLED_WrCmd((x&0x0f)|0x01);//設(shè)置列起始地址高4位}
GDDRAM的地址模式分為頁(yè)地址模式、水平地址模式、垂直地址模式三種。初始化函數(shù)中用0x20、0x02雙字節(jié)指令設(shè)置為頁(yè)地址模式。
通常在頁(yè)地址模式下訪問GDDRAM,需要如下步驟來定義起始RAM訪問指針指向:通過命令(B0h-B7h)設(shè)置目標(biāo)顯示位置頁(yè)起始地址。通過命令(00h-0Fh)設(shè)置列起始地址低位。通過命令(10h-1Fh)設(shè)置列起始地址高位。4.3頁(yè)地址模式
在GDDRAM訪問后(讀/寫),列地址指針將自動(dòng)增加1。如果列地址指針到達(dá)列終止地址,列地址指針將復(fù)位到列起始地址,但頁(yè)地址指針不會(huì)改變。頁(yè)地址模式下頁(yè)以及列地址指針的變化如圖所示。頁(yè)地址模式
例如頁(yè)地址是B2h,列地址低位是03h,列地址高位是10h,起始列將為PAGE2的SEG3,GDDRAM訪問指針的指向如下圖所示。如果寫入一個(gè)字節(jié)數(shù)據(jù),則按地位在上高位在下的方式寫入GDDRAM。水平地址模式
初始化函數(shù)中用0x20、0x00雙字節(jié)指令設(shè)置為水平地址模式。當(dāng)處于此模式時(shí),在GDDRAM訪問后(讀/寫),列地址指針將自動(dòng)增加1。如果列地址指針到達(dá)列終止地址,列地址指針將復(fù)位到列起始地址,且頁(yè)地址指針將自動(dòng)增加1。
水平地址模式下頁(yè)以及列地址指針的行為如圖所示,如果列地址指針和頁(yè)地址指針都到達(dá)各自的終止地址時(shí),他們都將復(fù)位到各自的起始地址。垂直地址模式
初始化函數(shù)中用0x20、0x01雙字節(jié)指令設(shè)置為垂直地址模式。當(dāng)處于此模式時(shí),在GDDRAM訪問后(讀/寫),頁(yè)地址指針將自動(dòng)增加1。如果頁(yè)地址指針到達(dá)頁(yè)終止地址,頁(yè)地址指針將復(fù)位到頁(yè)起始地址,且列地址指針將自動(dòng)增加1。SSD1306液晶寫入數(shù)據(jù)
SSD1306通常采用的是SPI接口以及IIC接口。4線SPI接口包括:串行時(shí)鐘(SCLK)、串行數(shù)據(jù)(SDIN)、數(shù)據(jù)/命令控制(D/C#)、片選(CS#)。在4線SPI模式下,D0用作SCLK,D1用作SDIN。E和R/w#的引腳連接到外部地。
IIC總線包含數(shù)據(jù)信號(hào)線SDA和時(shí)鐘信號(hào)線SCL組成。SDA和SCL線都必須接上拉電阻。主機(jī)先發(fā)起開始(START)信號(hào),然后發(fā)送1byte首字節(jié),包括從機(jī)地址(7位)和讀寫數(shù)據(jù)位(1位,最低位,0為寫模式),驅(qū)動(dòng)器識(shí)別從機(jī)地址為本機(jī)地址之后,將會(huì)發(fā)出應(yīng)答信號(hào)(ACK)。SSD1306液晶寫入數(shù)據(jù)函數(shù)Write_IIC_Command()實(shí)現(xiàn)了IIC方式下的命令寫入,其代碼如下:voidWrite_IIC_Command(unsignedcharIIC_Command){IIC_Start();//IIC啟動(dòng)信號(hào)Write_IIC_Byte(0x78);//IIC從機(jī)地址SA0=0 IIC_Wait_Ack(); //等待1個(gè)時(shí)鐘的ACK響應(yīng)信號(hào)Write_IIC_Byte(0x00); //準(zhǔn)備寫入命令 IIC_Wait_Ack(); //等待1個(gè)時(shí)鐘的ACK響應(yīng)信號(hào)Write_IIC_Byte(IIC_Command);//寫入SSD1306命令 IIC_Wait_Ack(); //等待1個(gè)時(shí)鐘的ACK響應(yīng)信號(hào)IIC_Stop();//IIC結(jié)束信號(hào)}SSD1306等待確認(rèn)信號(hào)voidIIC_Wait_Ack(){
OLED_SCLK_Set();
OLED_SCLK_Clr();}
IIC寫入1個(gè)bit時(shí),先從SDA數(shù)據(jù)線輸出數(shù)據(jù),待SCL發(fā)出一個(gè)脈沖信號(hào)后。再輸出下一個(gè)bit數(shù)據(jù)。SSD1306簡(jiǎn)介
IIC寫入1個(gè)bit數(shù)據(jù)時(shí)序圖。voidWrite_IIC_Byte(unsignedcharIIC_Byte){unsignedchari;IIC寫入1個(gè)字節(jié)voidWrite_IIC_Byte(unsignedcharIIC_Byte){
unsignedchari;
unsignedcharm,da;
da=IIC_Byte;
OLED_SCLK_Clr();
for(i=0;i<8;i++)
{
m=da;
m=m&0x80;
if(m==0x80)//輸出高位在前
{OLED_SDIN_Set();}
elseOLED_SDIN_Clr();
da=da<<1;
OLED_SCLK_Set();//發(fā)出一個(gè)時(shí)鐘脈沖信號(hào)
OLED_SCLK_Clr();
}}SSD1306文件移植05SSD1306文件移植
SSD1306文件由SSD1306.h和SSD1306.c文件組成,主要包含了初始化、寫入字節(jié)、寫入字符串、寫入圖像等函數(shù)。資料中提供的一般都是針對(duì)51或STM32等MCU編寫的函數(shù),因CC2530是采用51內(nèi)核,因此直接使用資料提供的SSD1306的51代碼即可。1.將基礎(chǔ)實(shí)驗(yàn)里面的SHT10.c、SHT10.h、oled.h、oled.c、oledfont.h文件復(fù)制到項(xiàng)目文檔的...\Projects\Z-Stack\Samples\SampleApp\Source文件夾或其他文件夾下面。SSD1306文件移植2.為了方便查看,在協(xié)議棧的APP目錄樹下鼠標(biāo)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 彩盒購(gòu)買合同范例
- 買房帶車位合同范例
- 廢品店門面轉(zhuǎn)讓合同范例
- 水溝勞務(wù)分包合同范例
- 2024年秋九年級(jí)化學(xué)上冊(cè) 第三單元 分子和原子教學(xué)實(shí)錄 (新版)新人教版
- 唐山幼兒師范高等??茖W(xué)?!稒C(jī)器人專業(yè)英語(yǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 影院承包經(jīng)營(yíng)合同范例
- 唐山學(xué)院《數(shù)學(xué)課堂教學(xué)技能訓(xùn)練與評(píng)價(jià)》2023-2024學(xué)年第一學(xué)期期末試卷
- 工程 代付款 合同范例
- 唐山師范學(xué)院《商業(yè)品牌整體策劃》2023-2024學(xué)年第一學(xué)期期末試卷
- 紀(jì)檢委員工作職責(zé)
- 2024年辦公室檔案管理工作總結(jié)模版(3篇)
- 2025年小學(xué)五年級(jí)數(shù)學(xué)(北京版)-分?jǐn)?shù)的意義(三)-3學(xué)習(xí)任務(wù)單
- 網(wǎng)絡(luò)信息安全工程師招聘面試題及回答建議(某大型央企)2025年
- 2024年煤礦個(gè)人工作總結(jié)例文(4篇)
- 江蘇省南通市多校2024-2025學(xué)年二年級(jí)上學(xué)期期中數(shù)學(xué)試卷
- 數(shù)字化轉(zhuǎn)型成熟度模型與評(píng)估(DTMM)國(guó)家標(biāo)準(zhǔn)解讀 2024
- 河南省名校八校聯(lián)考2024-2025學(xué)年高二上學(xué)期期中模擬考試語(yǔ)文試題(含答案解析)
- 聘請(qǐng)專家的協(xié)議書(2篇)
- 2024年國(guó)家危險(xiǎn)化學(xué)品生產(chǎn)單位安全管理人員考試題庫(kù)(含答案)
- 《新的實(shí)驗(yàn)》教學(xué)課件1
評(píng)論
0/150
提交評(píng)論