鴻蒙南北向開發(fā)基礎(chǔ)及項(xiàng)目實(shí)戰(zhàn)教程 課件3.4綜合項(xiàng)目實(shí)踐:帶屏顯的溫濕度計(jì)_第1頁
鴻蒙南北向開發(fā)基礎(chǔ)及項(xiàng)目實(shí)戰(zhàn)教程 課件3.4綜合項(xiàng)目實(shí)踐:帶屏顯的溫濕度計(jì)_第2頁
鴻蒙南北向開發(fā)基礎(chǔ)及項(xiàng)目實(shí)戰(zhàn)教程 課件3.4綜合項(xiàng)目實(shí)踐:帶屏顯的溫濕度計(jì)_第3頁
鴻蒙南北向開發(fā)基礎(chǔ)及項(xiàng)目實(shí)戰(zhàn)教程 課件3.4綜合項(xiàng)目實(shí)踐:帶屏顯的溫濕度計(jì)_第4頁
鴻蒙南北向開發(fā)基礎(chǔ)及項(xiàng)目實(shí)戰(zhàn)教程 課件3.4綜合項(xiàng)目實(shí)踐:帶屏顯的溫濕度計(jì)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

3.4項(xiàng)目實(shí)踐:帶屏顯的溫濕度計(jì)本章主要項(xiàng)目實(shí)踐-帶屏顯的溫濕度計(jì)。通過學(xué)習(xí)本節(jié)將能夠了解屏顯溫濕度計(jì)的項(xiàng)目實(shí)踐過程。通過本節(jié)學(xué)習(xí)可以熟悉:OLED屏顯示數(shù)字OLED屏顯示中文項(xiàng)目程序?qū)崿F(xiàn)

OLED屏顯示數(shù)字OLED屏顯示中文項(xiàng)目程序?qū)崿F(xiàn)

OLED屏顯示數(shù)字(1/5)

在屏上顯示一個(gè)字符如同顯示一個(gè)小圖片一樣,字符的像素點(diǎn)陣數(shù)據(jù)記錄每個(gè)像素點(diǎn)是否要顯示出來,如‘W’字符的8x6像素點(diǎn)陣圖:點(diǎn)陣數(shù)據(jù)第0列的數(shù)據(jù)為0x00,第1列數(shù)據(jù)為0x3F,依次對應(yīng)。OLED屏顯示數(shù)字(2/5)打開PcToLCD工具后,在菜單“模式”中選中“字符模式”后配置選項(xiàng):OLED屏顯示數(shù)字(3/5)輸入框中輸入“0123456789.”,生成字模16x8的像素點(diǎn)陣數(shù)據(jù):OLED屏顯示數(shù)字(4/5)然后將字符的像素點(diǎn)陣數(shù)據(jù)復(fù)制到源文件中,并由一個(gè)二維數(shù)組存放起來:OLED屏顯示數(shù)字(5/5)在源文件中實(shí)現(xiàn)讓OLED屏顯示數(shù)字字符的功能函數(shù)關(guān)鍵代碼:voidoledShowFloat(u8x,u8y,floatn)//在oled屏上顯示浮點(diǎn)數(shù),

x、y表示屏顯始坐標(biāo),

n表示要顯示的浮點(diǎn)數(shù)

u8data[20];

sprintf(data,"%.1f",n);//轉(zhuǎn)換成一位小數(shù)的浮點(diǎn)數(shù)字符串

for(intk=0;k<strlen(data);k++)

for(intr=0;r<2;r++)//每個(gè)字符像素?cái)?shù)據(jù)是16x8,所以只算2行

oledSetPosition(x+k*8,r+y);

for(intc=0;c<8;c++)

//一行8個(gè)像素點(diǎn)

if('.'==data[k])

oledSendData(numberData[10][n++]);

else

oledSendData(numberData[data[k]-'0'][n++]);

OLED屏顯示數(shù)字OLED屏顯示中文項(xiàng)目程序?qū)崿F(xiàn)

OLED屏顯示中文(1/3)PcToLCD工具上生成中文字符的像素16x16點(diǎn)陣數(shù)據(jù):OLED屏顯示中文(2/3)將中文字符的點(diǎn)陣數(shù)據(jù)復(fù)制到源文件中,修改后由一個(gè)二維數(shù)組存放起來:OLED屏顯示中文(3/3)在源文件開發(fā)實(shí)現(xiàn)OLED屏顯示中文字符的功能函數(shù)://在ole屏上顯示中文字符,

x、y表示屏顯的始坐標(biāo),

index表示第幾個(gè)中文字符voidoledShowChinese(u8x,u8y,u8index){

intn=0;

for(intr=0;r<2;r++)//16列,oled屏2行

{

oledSetPosition(x,r+y);//設(shè)置屏顯的始坐標(biāo)

for(intc=0;c<16;c++)//每行有16列

{

oledSendData(charData[index][n++]);//每次發(fā)一列的8個(gè)像素?cái)?shù)據(jù)

}

}}OLED屏顯示數(shù)字OLED屏顯示中文項(xiàng)目程序?qū)崿F(xiàn)

項(xiàng)目程序?qū)崿F(xiàn)

實(shí)現(xiàn)在OLED屏上顯示DHT11傳感器所獲取的溫度與濕度數(shù)據(jù),主要步驟:1.基于原DHT11驅(qū)動源文件上修改2.在DHT11源文件中的采集線程函數(shù)中在屏上刷出“溫度”、“濕度”3.溫濕度數(shù)據(jù)采集完成后,I2C通信原理鴻蒙系統(tǒng)I2C操作函數(shù)OLED屏工作原理OLED屏驅(qū)動OLED屏工作原理(1/3)

OLED,全稱是OrganicLight-EmittingDiode,即有機(jī)發(fā)光二極管。OLED屏也就是使用一個(gè)發(fā)光二極管的亮與熄分別表示圖像每個(gè)像素點(diǎn)的白與黑。由于存在能發(fā)出不同顏色光的二極管,OLED屏因此既有白、藍(lán)、黃等單色屏,也有由紅、綠、藍(lán)三個(gè)不同的發(fā)光二極管共同構(gòu)成每個(gè)像素顏色的OLED彩屏。OLED屏工作原理(2/3)OLED屏物理上一行有128個(gè)像素點(diǎn),共有64行,因此稱12864屏。屏幕上的每個(gè)像素點(diǎn),通過控制其對應(yīng)的發(fā)光二極管來顯示黑色或藍(lán)色,而圖像與字符的呈現(xiàn),則依賴于由多個(gè)像素點(diǎn)構(gòu)成的點(diǎn)陣來實(shí)現(xiàn)。如K字符16x8點(diǎn)陣的像素?cái)?shù)據(jù)分成兩行,每行8字節(jié)數(shù)據(jù),每字節(jié)表示從低位到高位上下8行一列的像素點(diǎn)數(shù)據(jù)OLED屏工作原理(3/3)

本次OLED屏模塊采用了SSD1306驅(qū)動IC,該驅(qū)動IC內(nèi)部集成了128x64像素點(diǎn)的顯存以及眾多配置寄存器,并支持I2C通信接口。OLED屏的驅(qū)動流程:I2C通信原理鴻蒙系統(tǒng)I2C操作函數(shù)OLED屏工作原理OLED屏驅(qū)動OLED屏驅(qū)動(1/8)

根據(jù)芯片手冊,SSD1306芯片在作為I2C設(shè)備時(shí),其設(shè)備地址為0x3C。根據(jù)屏商家提供的例程源碼,雖然在物理上OLED屏像素分成64行,每行128個(gè)像素點(diǎn),但在代碼邏輯中僅僅分成8行,每行由物理上的8行組成:OLED屏驅(qū)動(2/8)開發(fā)板與OLED屏模塊引腳連接如下:OLED屏模塊

開發(fā)板

VCC

-------

3.3V

GND

-------

GND

SDA

-------

IO13//I2C0_SDA

SCL

-------

IO14//I2C0_SCLOLED屏驅(qū)動(3/8)驅(qū)動流程:1.OLED屏所接的I2C控制器初始化2.通過I2C控制器向OLED屏發(fā)送命令進(jìn)行屏的初始化3.屏初始化完成后,顯示花屏。OLED屏驅(qū)動(4/8)屏上顯示圖像流程:1.使用PcToLCD工具將圖像轉(zhuǎn)換為二進(jìn)制像素?cái)?shù)據(jù)。工具的配置選項(xiàng):OLED屏驅(qū)動(5/8)2.生成字模數(shù)據(jù)后,圖像的二進(jìn)制數(shù)據(jù)由十六進(jìn)制數(shù)據(jù)表示。將圖像數(shù)據(jù)復(fù)制到源文件中,并由一個(gè)數(shù)組存放起來:OLED屏驅(qū)動(6/8)3.實(shí)現(xiàn)設(shè)置OLED屏刷出像素點(diǎn)的開始坐標(biāo)函數(shù):voidoledSetPosition(u8x,u8y){//x表示一行的第幾個(gè)像素點(diǎn),y表示OLED屏的第幾行(注意此行為物理上的8行像素) oledSendCmd(0xb0+y); oledSendCmd(((x&0xf0)>>4)|0x10); oledSendCmd(x&0x0f);}OLED屏驅(qū)動(7/8)4.實(shí)現(xiàn)將圖像數(shù)據(jù)傳輸至SSD1306驅(qū)動IC,讓之在OLED屏上顯示圖像的功能函數(shù):voidoledShowBmp(u8x,u8y,u8bmpW,u8bmpH,u8*bmpData){//oled每行8列,也是oled屏的一行相當(dāng)于8行像素

intn=0;

for(intr=0;r<bmpH/8;r++)

{

oledSetPosition(x,r+y);//設(shè)置屏顯的始坐標(biāo)

for(intc=0;c<bmpW;c++)

{

oledSendData(bmpData[n++]);//每次發(fā)一列的8個(gè)像素?cái)?shù)據(jù)

}

}}OLED屏驅(qū)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論