無線傳感網(wǎng)技術(shù)及應(yīng)用 課件 項(xiàng)目24 SSD1306液晶顯示_第1頁(yè)
無線傳感網(wǎng)技術(shù)及應(yīng)用 課件 項(xiàng)目24 SSD1306液晶顯示_第2頁(yè)
無線傳感網(wǎng)技術(shù)及應(yīng)用 課件 項(xiàng)目24 SSD1306液晶顯示_第3頁(yè)
無線傳感網(wǎng)技術(shù)及應(yīng)用 課件 項(xiàng)目24 SSD1306液晶顯示_第4頁(yè)
無線傳感網(wǎng)技術(shù)及應(yīng)用 課件 項(xiàng)目24 SSD1306液晶顯示_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論