嵌入式系統(tǒng)設(shè)計(jì)與項(xiàng)目實(shí)施 課件 第1、2章 流水燈設(shè)計(jì)與制作、紅外測(cè)溫儀設(shè)計(jì)與制作_第1頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)與項(xiàng)目實(shí)施 課件 第1、2章 流水燈設(shè)計(jì)與制作、紅外測(cè)溫儀設(shè)計(jì)與制作_第2頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)與項(xiàng)目實(shí)施 課件 第1、2章 流水燈設(shè)計(jì)與制作、紅外測(cè)溫儀設(shè)計(jì)與制作_第3頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)與項(xiàng)目實(shí)施 課件 第1、2章 流水燈設(shè)計(jì)與制作、紅外測(cè)溫儀設(shè)計(jì)與制作_第4頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)與項(xiàng)目實(shí)施 課件 第1、2章 流水燈設(shè)計(jì)與制作、紅外測(cè)溫儀設(shè)計(jì)與制作_第5頁(yè)
已閱讀5頁(yè),還剩192頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

流水燈設(shè)計(jì)與制作適用平臺(tái):STM32F1xx任課老師:xxx1掌握STM32GPIO端口的內(nèi)部結(jié)構(gòu)掌握STM32GPIO端口工作模式掌握MDK5編程環(huán)境和使用方法掌握模塊化編程和工程模板添加的方法掌握MDK5軟件功能仿真0102030405本章要點(diǎn)2掌握程序下載方法06Part.01STM32通用GPIO簡(jiǎn)介31.1GPIO端口基本結(jié)構(gòu)STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題4STM32F103ZET6實(shí)物圖STM32F103ZET6引腳圖1.1GPIO端口基本結(jié)構(gòu)STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題5圖1-13.3VGPIO端口引腳的基本結(jié)構(gòu)圖1-25VGPIO端口引腳的基本結(jié)構(gòu)1.1GPIO端口基本結(jié)構(gòu)STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題6部分GPIO引腳圖:表1-1部分GPIO端口引腳描述1.2GPIO端口工作模式STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題71.2GPIO端口工作模式STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題8浮空輸入:1.2GPIO端口工作模式STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題9上拉輸入:1.2GPIO端口工作模式STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題10下拉輸入:1.2GPIO端口工作模式STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題11模擬輸入:1.2GPIO端口工作模式STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題12漏極開(kāi)路輸出:1.2GPIO端口工作模式STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題13漏極開(kāi)路復(fù)用輸出:1.2GPIO端口工作模式STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題14推挽式輸出:1.2GPIO端口工作模式STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題15推挽復(fù)用輸出:1.2GPIO端口工作模式(1)輸出緩沖器被禁止(2)施密特觸發(fā)輸入被激活(3)根據(jù)輸入配置(上拉、下拉或浮動(dòng))的不同,上拉和下拉電阻被連接(4)出現(xiàn)在I/O引腳上的數(shù)據(jù)在每個(gè)APB2時(shí)鐘被采樣到輸入數(shù)據(jù)寄存器STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題16(5)對(duì)輸入數(shù)據(jù)寄存器的讀操作可得到GPIO引腳的電平狀態(tài)當(dāng)GPIO端口配置為輸入:圖1-3I/O端口引腳輸入配置原理圖1.2GPIO端口工作模式(1)輸出緩沖器被激活,包括兩種激活方式:Ⅰ.漏極開(kāi)路模式Ⅱ.推挽模式(2)施密特觸發(fā)輸入被激活(3)上拉和下拉電阻被禁止(4)出現(xiàn)在I/O引腳上的數(shù)據(jù)在每個(gè)APB2時(shí)鐘被采樣到輸入數(shù)據(jù)寄存器STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題17(5)在漏極開(kāi)路模式時(shí),對(duì)輸入數(shù)據(jù)寄存器的讀操作可得到I/O狀態(tài)當(dāng)GPIO端口配置為輸出:圖1-4I/O端口引腳輸出配置原理圖(6)在推挽模式時(shí),對(duì)輸出數(shù)據(jù)寄存器的讀操作可得到最后一次寫的值1.2GPIO端口工作模式STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題18表1-2端口位配置表表1-3輸出模式位1.3配置寄存器STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題19每個(gè)GPIO端口包含:

GPIOX_CRLGPIOX_CRHGPIOX_IDRGPIOX_ODRGPIOX_BSRRGPIOX_BRRGPIOX_LCKR數(shù)據(jù)寄存器端口配置寄存器1.3配置寄存器STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題201.端口配置寄存器CRL表1-4端口低配置寄存器CRL各位描述1.3配置寄存器STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題21GPIO初始化函數(shù):voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);實(shí)例:GPIO_InitDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOD,&GPIO_InitStructure);typedefenum{GPIO_Mode_AIN=0x0;GPIO_Mode_IN_FLOATING=0x04;GPIO_Mode_IPD=0x28;GPIO_Mode_IPU=0x48;GPIO_Mode_Out_OD=0x14;GPIO_Mode_Out_PP=0x10;GPIO_Mode_AF_OD=0x1C;GPIO_Mode_AF_PP=0x18;}GPIOMode_TypeDef;1.3配置寄存器STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題222.輸入寄存器IDR表1-5端口輸入數(shù)據(jù)寄存器IDR各位描述1.3配置寄存器STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題23IDR寄存器相關(guān)函數(shù):unit8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,unit16_tGPIO_Pin);實(shí)例:GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5);作用:固件庫(kù)中操作IDR寄存器讀取GPIO端口引腳數(shù)據(jù),以獲得GPIO端口引腳的電平狀態(tài),返回值是1(Bit_SET)或者是0(Bit_RESET)1.3配置寄存器STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題243.輸出寄存器ODR表1-6端口輸出數(shù)據(jù)寄存器ODR各位描述相關(guān)函數(shù):

voidGPIO_Write(GPIO_TypeDef*GPIOx,unit16_tPortVal);1.3配置寄存器STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題254.置位/復(fù)位寄存器BSRR表1-7引腳置位/復(fù)位寄存器BSRR各位描述1.3配置寄存器STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題26BSRR寄存器用法:(1)如果要設(shè)置GPIO第1個(gè)端口引腳值為1,只需要給寄存器BSRR低16位的對(duì)應(yīng)位寫1:GPIOA->BSRR=1<<1;(2)如果要設(shè)置GPIO第1個(gè)端口引腳值為0,只需要給寄存器BSRR高16位的對(duì)應(yīng)位寫1:GPIOA->BSRR=1<<(16+1);1.3配置寄存器STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題275.復(fù)位寄存器BRRBRR的作用與BSRR的高16位相同,在STM32固件庫(kù)中,通過(guò)BSRR和BRR寄存器設(shè)置GPIO端口引腳輸出是通過(guò)GPIO_SetBits()函數(shù)和GPIO_ResetBits()函數(shù)實(shí)現(xiàn)的:

voidGPIO_SetBits(GPIO_TypeDef*GPIOx,unit16_tGPIO_Pin);

voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,unit16_tGPIO_Pin);實(shí)例:GPIO_SetBits(GPIOB,GPIO_Pin_5);GPIO_ResetBits(GPIOB,GPIO_Pin_5);1.3配置寄存器STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題28GPIO端口操作步驟總結(jié):(1)使能GPIO端口時(shí)鐘,調(diào)用函數(shù)為RCC_APB2PeriphClockCmd;(2)初始化GPIO端口參數(shù),調(diào)用函數(shù)為GPIO_Init();(3)操作GPIO端口。1.4GPIO端口特性GPIO端口特性通用輸入/輸出特性最大額定值輸入電壓STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題29輸出驅(qū)動(dòng)電流輸出電壓1.4GPIO端口特性STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題301.絕對(duì)最大額定值表1-8電壓特性1.4GPIO端口特性STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題31表1-9電流特性1.絕對(duì)最大額定值表1-10溫度特性1.4GPIO端口特性STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題322.通用輸入/輸出特性表1-11GPIO端口靜態(tài)特性1.4GPIO端口特性STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題333.輸出驅(qū)動(dòng)電流

GPIO(通用輸入/輸出端口)可以吸收或輸出多達(dá)+/-8mA電流,并且吸收+20mA電流(不嚴(yán)格的VOL)。在用戶應(yīng)用中,GPIO端口引腳須保證驅(qū)動(dòng)電流不能超過(guò)表1-9給出的絕對(duì)最大額定值:

(1)所有GPIO端口引腳從VDD上獲取的電流總和,加上MCU在VDD上獲取的最大運(yùn)行電流,不能超過(guò)絕對(duì)最大額定值IVDD(表1-9)。

(2)所有GPIO端口引腳吸收并從VSS上流出的電流總和,加上MCU在VSS上流出的最大運(yùn)行電流,不能超過(guò)絕對(duì)最大額定值IvSS(表1-9)。1.4GPIO端口特性STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題344.輸出電壓表1-12輸出電壓特性1.4GPIO端口特性STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題355.輸入/輸出電壓特性1.4GPIO端口特性STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題365.輸入/輸出電壓特性圖1-5輸入/輸出交流特性定義tf(IO)out—輸出電平由高到低下降時(shí)間

tr(IO)out—輸出電平由低到高上升時(shí)間

T—周期

Part.02流水燈硬件設(shè)計(jì)37知識(shí)目標(biāo):

1.STM32I/O端口作為輸出的使用方法2.LED燈和電阻的參數(shù)性能3.LED燈硬件連接方法2.1硬件電路設(shè)計(jì)STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題38能力目標(biāo):

1.會(huì)使用STM32I/O端口作為輸出控制流水燈2.會(huì)根據(jù)選定的LED燈計(jì)算限流電阻3.會(huì)用EDA軟件設(shè)計(jì)硬件電路圖2.1硬件電路設(shè)計(jì)STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題39任務(wù)要求:(1)設(shè)計(jì)I/O輸出灌電流時(shí)的流水燈驅(qū)動(dòng)軟件設(shè)計(jì)電路,要求電源電壓為3.3V,每個(gè)發(fā)光二極管工作電流為10mA;(2)發(fā)光二極管選用直徑為5mm的紅色發(fā)光二極管;(3)制作硬件電路測(cè)試板。圖1-6流水燈驅(qū)動(dòng)軟件設(shè)計(jì)硬件電路2.2器件選型STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題401.發(fā)光二極管選型表1-13紅色發(fā)光二極管的極限參數(shù)(Ta=25℃)表1-14紅色發(fā)光二極管的光電參數(shù)(Ta=25℃)2.2器件選型STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題41圖1-7紅色發(fā)光二極管的外形尺寸2.限流電阻選型

選用金屬膜電阻即可圖1-8金屬膜電阻實(shí)物圖2.3參數(shù)計(jì)算STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題42以D1為例,計(jì)算其限流電阻的阻值。設(shè)計(jì)要求IF=10mA,VCC=3.3V。由表1-15,取VF的中間值VF=2.3。限流電阻R1的阻值為:R1消耗的功率為:P=R1×I1×I1=100Ω×0.01A×0.01A=0.01W為了留有一定的余裕,選取0.25W電阻即可。2.3參數(shù)計(jì)算STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題43驗(yàn)證:IF=10mA<25mAIF和=8×10mA=80mA<150mA表1-92.4硬件電路制作STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題44圖1-9流水燈驅(qū)動(dòng)軟件設(shè)計(jì)電路板實(shí)物圖Part.03流水燈驅(qū)動(dòng)軟件設(shè)計(jì)453.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題46資料準(zhǔn)備1)、V3.5固件包STM32F10x_StdPeriph_Lib_V3.5.0固件包是ST官網(wǎng)下載的完整版。

獲取方法:1)下發(fā)資料包中查找;

2)到ST官網(wǎng)下載;(要注冊(cè),才可下載)

3)opendev論壇下載。http:///posts/list/6054.htm2)、MDK5開(kāi)發(fā)環(huán)境

如未安裝,請(qǐng)參考MDK5安裝步驟章節(jié)進(jìn)行安裝。安裝包在下發(fā)資料中。如已經(jīng)安裝,本步驟可忽略。3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題471)在電腦的某個(gè)目錄下,新建一個(gè)名稱為MyTemplate的文件夾。然后再在這個(gè)文件夾下新建四個(gè)文件夾,名稱分別為:OBJ,UESER,CORE,STM32F10x_FWLib。如圖所示:3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題482)、Project->newuvisionproject然后將目錄定位到剛才新建的目錄MyTemplate下的USER目錄下,工程取名Template,點(diǎn)擊保存。3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題49點(diǎn)擊保存之后,彈出器件選擇對(duì)畫框,如下圖所示。選中STM32F103ZE后點(diǎn)擊OK。3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題503)、點(diǎn)擊OK之后,MDK會(huì)彈出ManageRun-TimeEnveronment對(duì)話框,這是MDK5的一個(gè)新功能,點(diǎn)CANCLE即可。3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題51點(diǎn)擊CANCLE之后,即可得到下圖所示的界面。到此為止,我們還只是建立一個(gè)工程框架,還學(xué)要添加啟動(dòng)代碼和.c文件等。3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題524)下面我們看看USER目錄下包含2個(gè)文件夾和2個(gè)文件。

Template.uvprojx是工程文件,不能輕易刪除。

Listings和Objects文件夾是MDK5自動(dòng)生成的文件夾,用于存放編譯過(guò)程生成的中間文件。為保持項(xiàng)目兼容性,可以刪除。3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題535)在MyTemplate文件夾下再新建三個(gè)文件夾,這一步我們?cè)诘谝徊綍r(shí)已經(jīng)做了,下面說(shuō)明一下OBJ,CORE,STM32F10x_FWLib三個(gè)文件夾的作用。STM32F10x_FWLib用于存放ST官方提供的庫(kù)文件;CORE用于存放核心文件和啟動(dòng)文件;OBJ用于存放編譯過(guò)程生成的中間文件和HEX文件;USER除了存放工程文件,還存放main.c及其它文件。3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題546)下面我們將官方庫(kù)包里的源文件復(fù)制到我們的工程目錄文件夾下面。打開(kāi)官方固件包,定為到..\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下面,把inc和src兩個(gè)文件夾拷貝到工程目錄下TM32F10x_FWLib文件夾中;OBJ,CORE,S固件庫(kù)文件夾工程文件夾3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題557)下面我們將官方庫(kù)包里的核心文件和啟動(dòng)文件復(fù)制到CORE文件夾下。首先定位到..\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport文件夾下把core_cm3.c和core_cm3.h兩個(gè)文件拷貝到工程文件夾CORE文件夾中;再定位到..\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm把startup_stm32f103x_hd.s復(fù)制的工程文件夾CORE文件夾中。工程文件夾3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題568)定位目錄首先定位到..\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x把stm32f10x.h、system_stm32f10x.c和system_stm32f10x.h拷貝到工程文件夾USER目錄;再定位到..\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template把main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h四個(gè)文件拷貝到工程文件夾USER目錄;工程文件夾3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題57操作完成后,USER目錄如下圖所示:3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題589)、前面8個(gè)步驟,我們將庫(kù)文件復(fù)制到了工程目錄下面。后面我們將庫(kù)文件添加到工程中去。右鍵點(diǎn)擊Target1,選擇ManageProjectItems.3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題5910)、前面8個(gè)步驟,我們將庫(kù)文件復(fù)制到了工程目錄下面。后面我們將庫(kù)文件添加到工程中去。右鍵點(diǎn)擊Target1,選擇ManageProjectItems.修改成Template刪除SourceGroup1并新建3個(gè)Group。分別是USER、CORE、FWLIB3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題60更改后如圖所示。然后點(diǎn)OK鍵。3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題61點(diǎn)OK鍵后,得到如下界面。3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題6211)下面我們Group里添加需要的文件。按照步驟10)的方法,右鍵點(diǎn)擊Template,選擇ManageProjectItems,然后選擇需要添加文件的Group。我們首先選擇FWLIB,然后點(diǎn)擊右邊的AddFiles,定位到我們剛才建立的文件夾STM32F10x_FWLib/src下,按“CTRL+A”,然后點(diǎn)擊Add??梢钥吹紽iles列表下面包含我們添加的文件。3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題6312)用同樣的方法,將Group定位到CORE和USER,添加需要的文件。CORE下面需要添加的文件為:core_cm3.c和startup_stm32f103x_hd.s;USER下面添加的文件為:main.c、stm32f10x_it.c和system_stm32f10x.c三個(gè)文件。至此,我們就把需要的文件添加到工程中去了。最后點(diǎn)OK回到主工程界面。3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題64點(diǎn)OK回到主工程界面??梢钥吹?,需要的文件已經(jīng)都添加到了工程中。3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題65

13)接下來(lái)我們要編譯工程,編譯之前,我們要選擇編譯生產(chǎn)的中間文件和HEX文件的保存路徑。方法是點(diǎn)魔術(shù)棒,在

“Output”選項(xiàng)下面的“Selectfolderforproject…….”1、點(diǎn)擊魔法棒2、點(diǎn)擊Output3、點(diǎn)擊Selectfolderforproject4、指定保存路徑3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題66

14)接下來(lái)我們要編譯工程,可以看到有很多報(bào)錯(cuò)。這是因?yàn)镸DK5編譯器找不到頭文件造成的。編譯按鈕#5報(bào)錯(cuò),找不到相應(yīng)頭文件3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題67

15)下面我們要告訴編譯器,在哪些目錄下搜索頭文件。這里要注意,工程中所有引用的頭文件路徑都要包含進(jìn)來(lái)。最后按OK按鈕。1、點(diǎn)擊魔法棒2、選擇C/C++選項(xiàng)卡3、選擇添加路徑按鈕4、添加并指定頭文件路徑3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題6816)接下來(lái)繼續(xù)編譯工程,看看還有什么錯(cuò)誤。編譯后還是有很多錯(cuò)誤和警告。這是因?yàn)?.5版本的庫(kù)在配置和選擇外設(shè)的時(shí)候是通過(guò)宏定義來(lái)選擇的。所以,我們要配置一個(gè)宏定義變量。按15)方法。最后點(diǎn)OK.1、點(diǎn)擊魔法棒2、選擇C/C++選項(xiàng)卡3、輸入STM32F103X,USE_STDPERIPH_DRIVER3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題6917)接下來(lái)繼續(xù)編譯工程,在編譯之前,記得用下面的代碼覆蓋工程main.c中的代碼。#include"stm32f10x.h”voidmain(void){while(1);}再編譯發(fā)現(xiàn)已經(jīng)沒(méi)有錯(cuò)誤和警告了。3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題7018)到此,一個(gè)工程模板建立完畢。下面還需要配置,讓編譯之后能力夠生成HEX文件。設(shè)置方法參考下圖。1、點(diǎn)擊魔法棒2、選擇Output3、全部勾選輸出編譯信息輸出HEX文件查看變量和函數(shù)定義3.1MDK5新建固件庫(kù)工程模板步驟STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題7119)重新編譯,HEX文件已經(jīng)生成并保存在OBJ文件夾下了。到此,一個(gè)基于V3.5固件庫(kù)的工程模板就建立完成了。20)實(shí)際上,一個(gè)基于V3.5固件庫(kù)的工程模板已經(jīng)建立完成了。但是,為了以后編程的方便,我們將一個(gè)SYSTEM的文件夾和對(duì)應(yīng)源文件加入工程,方便以后使用。完成后的工程如圖所示。具體步驟請(qǐng)參考文件添加部分講解。至此,工程模板建立完成。新增SYSTEM共用文件3.2驅(qū)動(dòng)軟件設(shè)計(jì)STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題72能力目標(biāo)一會(huì)使用STM32I/O端口作為輸出控制流水燈能力目標(biāo)二會(huì)使用模塊化編程方法編寫控制程序能力目標(biāo)三能將流水燈驅(qū)動(dòng)軟件設(shè)計(jì)程序模塊

添加到MDK5工程中STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題73具體要求:(1)在基于庫(kù)文件的MDK工程模板文件夾中新建流水燈程序模塊文件夾;(2)新建流水燈驅(qū)動(dòng)軟件設(shè)計(jì)程序頭文件和源程序文件;(3)按項(xiàng)目要求編寫流水燈驅(qū)動(dòng)軟件設(shè)計(jì)程序。任務(wù):

在已有工程模板的基礎(chǔ)上添加流水燈驅(qū)動(dòng)軟件設(shè)計(jì)模塊,編寫控制8個(gè)LED燈從左到右依次點(diǎn)亮并循環(huán)往復(fù)的流水燈驅(qū)動(dòng)軟件設(shè)計(jì)程序。3.2驅(qū)動(dòng)軟件設(shè)計(jì)STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題743.2驅(qū)動(dòng)軟件設(shè)計(jì)圖1-10流水燈驅(qū)動(dòng)軟件設(shè)計(jì)程序架構(gòu)STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題753.2驅(qū)動(dòng)軟件設(shè)計(jì)#include"led.h"http://LEDI/O初始化voidLED_Init(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOD,&GPIO_InitStructure);

//PD端口初始化 GPIO_Write(GPIOD,0XFF);

//PD0~PD7輸出高電平}led.c文件程序STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題763.2驅(qū)動(dòng)軟件設(shè)計(jì)#ifndef_LED_H#define_LED_H#include"sys.h"http://LED端口定義voidLED_Init(void);#endifled.h文件程序STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題773.2驅(qū)動(dòng)軟件設(shè)計(jì)圖1-11為工程新增HARDWARE組圖1-12LED新增HARDWARE組后的效果圖1-13將led.h頭文件的路徑加入工程STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題783.2驅(qū)動(dòng)軟件設(shè)計(jì)main函數(shù)#include"led.h"#include"delay.h"#include"sys.h"intmain(void){ u8Disdate=0,i; delay_init();//設(shè)置系統(tǒng)的時(shí)鐘和延遲函數(shù) LED_Init();//初始化與LED連接的硬件接口 while(1) { Disdate=1; for(i=0;i<8;i++)//在循環(huán)里面實(shí)現(xiàn)從D1~D8的順序點(diǎn)亮,間隔為500ms { GPIO_Write(GPIOD,~(Disdate<<i));//對(duì)端口操作 delay_ms(500); } }}STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題793.2驅(qū)動(dòng)軟件設(shè)計(jì)編譯輸出圖1-14編譯結(jié)果

1.Code:表示程序所占用FLASH的大小(FLASH)。

2.RO-data:即ReadOnly-data,表示程序定義的常量,如const類型(FLASH)。

3.RW-Data:即ReadWrite-data,表示已被初始化的全局變量(SRAM)。4.ZI-data:即Zeronit-data,表示未被初始化的全局變量(SRAM).3.3程序下載與調(diào)試STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題80能力目標(biāo):

1.會(huì)連接STM32硬件調(diào)試下載器;2.會(huì)設(shè)置MDK5軟件仿真參數(shù);3.能使用MDK5軟件仿真流水燈功能;4.會(huì)設(shè)置MDK5硬件下載器參數(shù)。具體要求:

1.正確連接硬件仿真器;2.使用MDK5軟件仿真功能;3.使用J-LINK下載程序到目標(biāo)板。3.3程序下載與調(diào)試STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題81仿真步驟:1.將OptionsforTarget—>Debug中設(shè)置為UseSimulator;2.在FileToolbar工具條上單擊

開(kāi)始仿真;3.在DebugToolbar上單擊“邏輯分析儀”(或單擊view—>AnalysisWindows—>LogicAnalyzer);4.單擊Setup按鈕,新建兩個(gè)信號(hào)PORTD.5和PORTD.6,如右圖1-15;5.在DisplayType中選擇Bit,點(diǎn)擊close關(guān)閉窗口;6.在

DebugToolbar上單擊

開(kāi)始運(yùn)行,運(yùn)行一段時(shí)間后,單擊

按鈕可以暫停仿真。圖1-15邏輯分析儀設(shè)置3.4程序下載與調(diào)試STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題82圖1-16邏輯分析后的邏輯分析窗口圖1-17仿真波形Part.04本章小結(jié)834.1本章小結(jié)STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題841.學(xué)習(xí)GPIO端口的基本結(jié)構(gòu)和工作模式,以及如何用GPIO端口引腳控制發(fā)光二極管。2.設(shè)計(jì)并實(shí)現(xiàn)了小功率發(fā)光二極管的硬件驅(qū)動(dòng)電路。3.學(xué)習(xí)了基于MDK5固件庫(kù)工程模板的創(chuàng)建,編寫了流水燈的模塊化編程和主程序,并學(xué)習(xí)了軟件仿真和軟件邏輯分析儀的使用。4.程序下載與調(diào)試,完成了系統(tǒng)程序的設(shè)計(jì)。4.1本章小結(jié)STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題85圖1-18嵌入式系統(tǒng)開(kāi)發(fā)流程Part.05本章習(xí)題865.1本章習(xí)題習(xí)題一:簡(jiǎn)述STM32GPIO工作模式。習(xí)題二:編寫將PA.4,PA.5設(shè)置為推挽輸出,電平翻轉(zhuǎn)速度為50MHz的初始化程序。習(xí)題三:編寫PB.3,PB.4設(shè)置為帶下拉電阻的輸入工作模式,電平翻轉(zhuǎn)速度為10MHz的初始化程序。STM32通用GPIO簡(jiǎn)介流水燈硬件設(shè)計(jì)流水燈驅(qū)動(dòng)軟件設(shè)計(jì)本章小結(jié)本章習(xí)題87習(xí)題四:試著自己設(shè)定1個(gè)流水燈的工作過(guò)程,寫出控制程序,并下載驗(yàn)證。紅外測(cè)溫儀設(shè)計(jì)與制作任課老師:xxx88適用平臺(tái):STM32F1xx掌握STM32GPIO端口引腳的相關(guān)使用方法掌握LCM1602接口定義和配置寄存器掌握紅外溫度傳感器MLX90614接口定義掌握MLX90614SMBus的相關(guān)用法掌握攝氏度和華氏度的轉(zhuǎn)換方法0102030405本章要點(diǎn)89掌握溫度測(cè)量數(shù)據(jù)誤差處理和按鍵功能分配05熟練掌握程序下載方法05Part.01紅外溫度傳感器901.1MLX90614簡(jiǎn)介紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理91圖2-1MLX90614的3種常用型號(hào)

MLX90614是由Melexis研發(fā)并生產(chǎn)的測(cè)溫器,是紅外非接觸式溫度計(jì)。它包括:

(1)紅外熱電堆感應(yīng)器MLX81101;

(2)專為適用于這款感應(yīng)器輸出而設(shè)計(jì)的信號(hào)處理芯片MLX90302。實(shí)現(xiàn)了高精度溫度測(cè)量MLX90614在室溫范圍內(nèi)提供的標(biāo)準(zhǔn)精度為

±5℃1.1MLX90614簡(jiǎn)介紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理92

紅外溫度計(jì)的主要功能:利用紅外溫度傳感器感知被測(cè)人員的體溫,紅外溫度傳感器輸出的溫度數(shù)據(jù)經(jīng)STM32F103高性能32位ARM處理器處理后顯示在液晶屏幕上,可以通過(guò)按鍵啟動(dòng)一次溫度檢測(cè)、攝氏度和華氏度兩種溫度單位的轉(zhuǎn)換、測(cè)量溫度信息的清除等功能。MLX90614四個(gè)核心模塊:1)紅外溫度傳感器模塊:該模塊主要通過(guò)溫度傳感器獲取被測(cè)人員或物體的表面溫度;2)STM32最小系統(tǒng)主要負(fù)責(zé)讀取紅外溫度傳感器的溫度數(shù)據(jù),加以處理后,發(fā)送到液晶顯示模塊上顯示;3)液晶顯示模塊主要用于顯示溫度信息;4)按鍵模塊主要用于啟動(dòng)溫度轉(zhuǎn)換,清除顯示數(shù)據(jù),攝氏度和華氏度單位切換以適應(yīng)不同的使用場(chǎng)合。圖2-2紅外溫度傳感器的結(jié)構(gòu)框圖1.2MLX90614引腳功能紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理93圖2-3MLX90614引腳排列頂視圖表2-1MLX90614引腳描述1.3MLX90614電氣特性紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理94表2-2MLX90614ESF-BCC主要電器特性參數(shù)1.4MLX90614驅(qū)動(dòng)電路設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理95圖2-4MLX90614驅(qū)動(dòng)電路原理圖MLX90614的SCL和SDA與STM32I/O口連接,可以實(shí)現(xiàn):1)從MLX90614的內(nèi)部RAM/EEPROM讀取數(shù)據(jù);2)向MLX90614的內(nèi)部RAM/EEPROM寫入數(shù)據(jù)。圖2-5MLX90614改進(jìn)型驅(qū)動(dòng)電路原理圖1.4MLX90614驅(qū)動(dòng)電路設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理96圖2-6MLX90614設(shè)計(jì)板圖和實(shí)物圖

項(xiàng)目使用的是STM32F103最小系統(tǒng)板,設(shè)計(jì)產(chǎn)品時(shí)選用圖2-4或2-5均可,本項(xiàng)目采用圖2-4所示MLX90614驅(qū)動(dòng)電路原理圖進(jìn)行PCB設(shè)計(jì)。

MLX90614設(shè)計(jì)板圖和實(shí)物如圖2-6所示。1.4MLX90614驅(qū)動(dòng)電路設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理97I/O端口引腳分配圖2-7MLX90614模塊與STM32F103最小系統(tǒng)的連接Part.02LCM1602液晶顯示982.1LCM1602簡(jiǎn)介紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理99LCM1602包含:1)字符型液晶顯示屏(LED)2)控制驅(qū)動(dòng)主電路HD441003)少量電阻、電容原件和結(jié)構(gòu)件LED主要顯示指標(biāo):1)呈示像素:16(W)字符×2(H)字符;2)尺寸:3.0(W)mm×5.23(H)mm;3)點(diǎn)間距:0.61(W)mm

×

0.66(H)mm;4)可視區(qū)域:64.5(W)mm×16.4(H)mm;5)模塊尺寸:80(W)mm×36(H)mm×13(T)mm;6)LCD類型:黃綠STN;7)顯示模式:透反射式、正顯示;8)視角:6:00點(diǎn)鐘;9)背光形式:黃綠色LED背光;10)溫度范圍:寬溫,工作

-20~70℃;存儲(chǔ)時(shí)為

-25~75℃。2.1LCM1602簡(jiǎn)介紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理100圖2-8黃綠模式正顯LCM1602圖2-9藍(lán)模式負(fù)顯LCM16022.2LCM1602引腳功能紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理101LCM1602有16個(gè)引腳。表2-3LCM1602引腳功能2.3LCM1602電氣特性紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理102表2-4LCM1602工作時(shí)的極限參數(shù)(VSS=0V,Ta=+25℃)表2-5LCM1602直流特性(VCC=5.0V,VSS=0V,Ta=+25℃)2.4LCM1602驅(qū)動(dòng)電路設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理103圖2-10LCM1602驅(qū)動(dòng)電路J1:LCM1602與STM32F103連接的接口J2:LCM1602的16引腳接口RW1:阻值為10KΩ的可調(diào)電位器,固定端接3.3V電源,另一端接GND,中間滑動(dòng)端接LCM1602的對(duì)比度調(diào)節(jié)引腳V0,通過(guò)調(diào)節(jié)滑動(dòng)端,可以為V0端提供0~+3.3V的電壓,用于調(diào)節(jié)LCM1602的顯示對(duì)比度。Q1和R1一起構(gòu)成了一個(gè)開(kāi)關(guān)電路,用于控制LCM1602背光的打開(kāi)或關(guān)閉。2.4LCM1602驅(qū)動(dòng)電路設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理104圖2-11LCM1602模塊與STM32F103最小系統(tǒng)連接2.4LCM1602驅(qū)動(dòng)電路設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理105表2-6LCM1602控制引腳分配Part.03按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)1063.1按鍵驅(qū)動(dòng)電路設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理107圖2-12按鍵驅(qū)動(dòng)電路J1:按鍵驅(qū)動(dòng)電路與STM32F103最小系統(tǒng)電路之

間的接口;R1、R2:按鍵的上拉電阻,阻值為5KΩ;作用:在按鍵無(wú)操作時(shí),提供一個(gè)穩(wěn)定的高電平,

提高按鍵操作的抗干擾能力。S1:?jiǎn)?dòng)一次溫度測(cè)量;S2:清除測(cè)量結(jié)果;S3:攝氏度和華氏度兩種溫度單位的切換,開(kāi)機(jī)

默認(rèn)狀態(tài)溫度單位是攝氏度。3.1按鍵驅(qū)動(dòng)電路設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理108圖2-13按鍵與STM32F103最小系統(tǒng)連接3.2紅外溫度計(jì)電路設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理109紅外溫度計(jì)電路4個(gè)模塊:1)STM32F103最小系統(tǒng)電路2)LCM1602驅(qū)動(dòng)電路3)MLX90614紅外測(cè)溫電路4)按鍵驅(qū)動(dòng)電路圖2-14紅外溫度計(jì)電路圖3.2紅外溫度計(jì)電路設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理110表2-7紅外溫度計(jì)控制I/O端口分配表Part.04MLX90614SMBus總線1114.1SMBus總線功能紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理112

SMBus基本概念:

SMBus(SystemManagementBus,系統(tǒng)管理總線)是1995年由Intel提出的,應(yīng)用于移動(dòng)PC和桌面PC系統(tǒng)中的低速率通訊。希望通過(guò)一條廉價(jià)并且功能強(qiáng)大的總線(由兩條線組成),來(lái)控制主板上的設(shè)備并收集相應(yīng)的信息。

SMBus為系統(tǒng)和電源管理這樣的任務(wù)提供了一條控制總線,使用SMBus的系統(tǒng),設(shè)備之間發(fā)送和接收消息都是通過(guò)SMBus,而不是使用單獨(dú)的控制線,這樣可以節(jié)省設(shè)備的管腳數(shù)。4.1SMBus總線功能紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理113MLX1602芯片支持兩線串行協(xié)議,對(duì)應(yīng)引腳為SCL和PWM/SDA。

1)SCL:數(shù)字輸入,用做SMBus通信時(shí)鐘信號(hào)。該引腳有輔助建立外部電壓調(diào)節(jié)器的功能。當(dāng)使用外部電壓穩(wěn)壓器時(shí),兩線協(xié)議只有在電壓穩(wěn)壓器過(guò)驅(qū)時(shí)才有效。2)PWM/SDA:數(shù)字輸入/輸出,用于測(cè)量物體溫度,有PWM輸出和SMBus輸出模式??稍贓EPROM里編程來(lái)改變引腳模式為推挽式或是開(kāi)漏NMOS式(出廠默認(rèn)為開(kāi)漏NMOS式)。在SMBus模式里,SDA為開(kāi)漏式NMOSIO端口,PWM/熱動(dòng)繼電器工作模式時(shí)該引腳為推挽式。EEPROM(ElectricallyErasableProgrammablereadonlymemory)是指帶電可擦可編程只讀存儲(chǔ)器。是一種掉電后數(shù)據(jù)不丟失的存儲(chǔ)芯片。EEPROM可以在電腦上或?qū)S迷O(shè)備上擦除已有信息,重新編程。一般用在即插即用。4.1SMBus總線功能紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理114

SMBus接口為兩線串行協(xié)議,允許主控器件(MD)和1個(gè)或1個(gè)以上的從動(dòng)器件(SD)通信。系統(tǒng)在給定的時(shí)刻只有1個(gè)主控器件。MLX90614只作為從動(dòng)器件使用。一般來(lái)講,MD是通過(guò)從動(dòng)地址(SA)選擇從動(dòng)器件并開(kāi)始數(shù)據(jù)傳輸。MD可以對(duì)RAM和EEPROM的數(shù)據(jù)進(jìn)行讀取,并可對(duì)EEPROM其中9個(gè)單元進(jìn)行寫入操作(地址為0x20h,0x21h,0x22h,0x23h,0x24h,0x25h,0x2Eh,0x2Fh,0x39h)。當(dāng)對(duì)MLX90614進(jìn)行讀取操作,如果器件本身EEPROM里存儲(chǔ)的從動(dòng)地址和主控器件發(fā)送的從動(dòng)地址一致的情況下,器件會(huì)回饋以16位的數(shù)據(jù)和8位PEC。SA的特性允許在兩線上連接多達(dá)127個(gè)器件。在器件接在總線之前,為了訪問(wèn)器件或是給SD分配1個(gè)地址,通信必須以0從動(dòng)地址(SA)加低R/W位開(kāi)始,當(dāng)MD發(fā)送此命令,MLX90614總是會(huì)反饋并忽視內(nèi)部芯片編碼信息。

注意:不要將同一從動(dòng)地址的MLX90614器件接在同一總線上,因?yàn)镸LX90614不支持ARP。MD可以使MLX90614工作在低功耗的“睡眠模式”。4.2SMBus總線協(xié)議紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理115MLX90614的PWM/SDA引腳是否作為PWM模式,取決于EEPROM的設(shè)置。

如果設(shè)為PWM使能,在上電復(fù)位(POR)之后,PWM/SDA引腳被直接配置為PWM輸出??梢酝ㄟ^(guò)一個(gè)特殊的命令來(lái)使引腳回避PWM模式而恢復(fù)到數(shù)據(jù)傳送(SDA)功能。1)SMBus所含元素SMBus包含的元素如圖2-15所示。在SD接收到每個(gè)8位數(shù)據(jù)后,會(huì)回復(fù)ACK/NACK信息。當(dāng)MD初始化通信,將首先發(fā)送受控地址,只有能識(shí)別該地址的SD會(huì)確認(rèn),其它的會(huì)保持沉默。如果SD未確認(rèn)其中的任意字節(jié),MD應(yīng)停止通信并重新發(fā)送信息。圖2-15SMBus包含要素4.2SMBus總線協(xié)議紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理1162)SMBus讀取數(shù)據(jù)格式SMBus讀取數(shù)據(jù)的格式取決于命令RAM或EEPROM。讀取數(shù)據(jù)格式如圖2-16所示。圖2-16SMBus讀取數(shù)據(jù)格式4.2SMBus總線協(xié)議紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理1173)SMBus寫入數(shù)據(jù)格式SMBus只能對(duì)EEPROM寫入數(shù)據(jù)。寫入數(shù)據(jù)格式如圖2-17所示。圖2-17SMBus寫入數(shù)據(jù)格式4.3SMBus的AC特性紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理118

MLX90614滿足所有SMBus時(shí)序規(guī)范。MLX90614SMBus時(shí)鐘的最大頻率為100KHz,最小為10KHz。

MLX90614SMBus的特定時(shí)序?yàn)椋?/p>

●SMBusRequest(tREQ)定義了一段時(shí)間(至少1.44ms),在這段時(shí)間里SCL應(yīng)該置為低電平以使MLX90614從PWM模式轉(zhuǎn)換為SMBus模式;

●TimeoutL是將SCL置為低電平允許的最長(zhǎng)時(shí)間(不多于45us)。這段時(shí)間后ML.X90614會(huì)置通信模塊并準(zhǔn)備重新通信;

●TimeoutH是將SCL置為高電平允許的最長(zhǎng)時(shí)間(不多于27ms)。這段時(shí)間后會(huì)假定總線是空閑的(根據(jù)SMBus規(guī)范)并重置通信模塊;

●Tsuac(SD)定義了一段時(shí)間(不超過(guò)2us),此時(shí)間在SCL的第8個(gè)下降沿后,MLX90614會(huì)將SDA置為低電平以確認(rèn)接受的字節(jié),:1)SMBus時(shí)序4.3SMBus的AC特性紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理119

●Thdac(SD)定義了一段時(shí)間(不超過(guò)1.5us),此時(shí)間在SCL的第9個(gè)下降沿后,MLX90614釋放PWM/SDA(MD可以繼續(xù)通信);●Tsuac(MD)定義了一段時(shí)間(不超過(guò)0.5us),此時(shí)間在SCL的第八個(gè)下降沿后,MLX90614會(huì)釋放PwM/SDA(MD可以確認(rèn)接收的字節(jié));●Thdac(MD)定義了一段時(shí)間(不超過(guò)1.5us),此時(shí)間在SCL的第九個(gè)下降沿后,MLX90614會(huì)控制PWMSDA(它可維續(xù)傳送下個(gè)字節(jié));

在最新時(shí)序用到MD和SD索引,其中MD當(dāng)主控器件在確認(rèn),SD當(dāng)從動(dòng)器件。1)SMBus時(shí)序4.3SMBus的AC特性紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理1202)SMBus位傳送圖2-18SMBus時(shí)序圖2-19SMBus位傳送

PWM/SDA的數(shù)據(jù)必須在SCL為低電平時(shí)改變。數(shù)據(jù)在SCL上升沿被MD和SD讀取,建議在SCL為低電平的中間時(shí)刻改變數(shù)據(jù)。4.4MLX90614驅(qū)動(dòng)程序設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理121能力目標(biāo):1)會(huì)編寫SMBus控制I/O端口的初始化程序2)會(huì)編寫MLX90614發(fā)送起始位子程序3)會(huì)編寫MLX90614發(fā)送結(jié)束位子程序4)會(huì)編寫MLX90614發(fā)送字節(jié)子程序5)會(huì)編寫MLX90614發(fā)送位子程序6)會(huì)編寫MLX90614接收字節(jié)子程序7)會(huì)編寫MLX90614接收位子程序4.4MLX90614驅(qū)動(dòng)程序設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理122表2-8MLX90614操作命令表說(shuō)明:1)xxxxx代表要讀取/寫入的內(nèi)存地址的5LSB位;2)讀取標(biāo)識(shí)符類似讀命令。MLX90614在傳送16位數(shù)據(jù)后會(huì)反饋PEC,其中只有4位是MD需要的,它會(huì)在傳送完第1個(gè)子節(jié)后停止通信,讀取(除讀取標(biāo)識(shí)符之外的其他讀操作)和讀取標(biāo)示符的區(qū)別在于后者沒(méi)有重復(fù)起始位。MLX90614內(nèi)部RAM大小為32x17,EEPROM大小為32x16。讀取RAM時(shí),由于RAM種含有符號(hào)位,數(shù)據(jù)被分為兩部分。4.4MLX90614驅(qū)動(dòng)程序設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理123程序設(shè)計(jì)1)建立紅外溫度計(jì)測(cè)量項(xiàng)目工程

把已經(jīng)建好的工程模板復(fù)制1份,再把工程文件夾的名稱改為STM32F103_irTe,如圖2-20所示。圖2-20復(fù)制工程模板4.4MLX90614驅(qū)動(dòng)程序設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理124程序設(shè)計(jì)2)新建MLX90614程序模塊文件夾

打開(kāi)D:\STM32F103_irTem項(xiàng)目文件夾,找到該文件夾下面的HARDWARE子文件夾,然后雙擊該文件夾,進(jìn)入HARDWARE文件夾后,單擊鼠標(biāo)右鍵,新建一個(gè)文件夾并更名為MLX90614,至此,新建MLX90614程序文件夾的工作就完成了。4.4MLX90614驅(qū)動(dòng)程序設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理125程序設(shè)計(jì)3)新建MLX90614驅(qū)動(dòng)程序文件

打開(kāi)工程,單擊

左上角File菜單,在彈出的下拉快捷菜單中,單擊new,會(huì)新建一個(gè)名稱為Text1的文本文件。用同樣的方法,新建File2文本文件。圖2-21新建驅(qū)動(dòng)程序文件夾4.4MLX90614驅(qū)動(dòng)程序設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理126程序設(shè)計(jì)3)新建MLX90614驅(qū)動(dòng)程序文件

選中Text1文本文件,文件被選中為當(dāng)前可編輯狀態(tài)時(shí),在文件名下面有條下劃線,Text1文件就為當(dāng)前可操作的文件。,如圖2-21中②所示,Textl文件就為當(dāng)前可操作的文件。然后點(diǎn)擊File菜單,在彈出的下拉菜單中單擊SaveAs...,把路徑定位到:D:\STM32F103_irTem\HARDWARE\MLX90614,文件名改為mlx90614.c。同樣的方法,把Text2文件名改為mlx90614.h,也保存到MLX90614文件夾下面。至此,MLX90614驅(qū)動(dòng)程序文件就新建完成了。4.4MLX90614驅(qū)動(dòng)程序設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理127程序設(shè)計(jì)4)把MLX90614驅(qū)動(dòng)程序文件添加到工程中

經(jīng)過(guò)第3步的操作,雖然我們完成了MLX90614驅(qū)動(dòng)程序文件的創(chuàng)建,但是它們并沒(méi)有被加入到工程中,不參與工程編譯,也就是說(shuō),這兩個(gè)文件對(duì)工程而言,暫時(shí)是沒(méi)有用處的。我們必須先將MLX90614驅(qū)動(dòng)程序文件添加到工程管理窗口HARDWARE程序分組中,并為其指定好頭文件路徑,該程序模塊才會(huì)被編譯、鏈接、生成可執(zhí)行代碼。圖2-22mlx90614添加到工程4.4MLX90614驅(qū)動(dòng)程序設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理128程序設(shè)計(jì)5)編輯MLX90614源文件

首先打開(kāi)mxl90614.c,打開(kāi)文件后,輸入#include"mIx90614.h",#include"delay.h",包含mlx90614的頭文件和延時(shí)模塊的頭文件。這兩行程序輸入完成后,編譯工程,不要管編譯結(jié)果是否有錯(cuò)誤,編譯完成后,mx190614.c所用到頭文件都被關(guān)聯(lián)進(jìn)來(lái)了。4.4MLX90614驅(qū)動(dòng)程序設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理1296)編輯mlx90614.h

#ifndef_MLX90614_H#define_MLX90614_H#include"sys.h"http://mlx90614端口定義#defineSDA_IN(){GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}#defineSDA_OUT(){GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}#defineSMB_SCLPBout(6)//SCL#defineSMB_SDAPBout(7)//SDA#defineREAD_SDAPBin(7)//輸入SDA#defineNack_counter104.4MLX90614驅(qū)動(dòng)程序設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理1306)編輯mlx90614.h

externu8bit_out;externu8bit_in;externu8DataH,DataL,Pecreg;#defineMLX90614_I2CADDR0x00//RAM#defineMLX90614_TOBJ10X07//SMB所有操作函數(shù)voidSMB_Init(void);//初始化SMB的IO口voidstart_bit(void);

//向MLX90614發(fā)起始位子程序

voidstop_bit(void);

//向MLX90614發(fā)結(jié)束位子程序u8rx_byte(void);

//從MLX90614接收字節(jié)子程序

voidsend_bit(void);

//向MLX90614發(fā)送位子程序voidtx_byte(u8dat_byte);

//向MLX90614發(fā)送字節(jié)子程序voidreceive_bit(void);

//從MLX90614接收位子程序u16memread(void);

//讀溫度數(shù)據(jù)子程序floatcal_tem(u16memdata,u8f_c);//讀溫度數(shù)據(jù)#endif4.4MLX90614驅(qū)動(dòng)程序設(shè)計(jì)紅外溫度傳感器LCM1602液晶顯示按鍵驅(qū)動(dòng)及紅外溫度計(jì)電路設(shè)計(jì)MLX90614SMBus總線MLX90614溫度計(jì)讀取和計(jì)算原理131編輯mlx90614.c

(1)mlx90614.c頭文件和變量定義源程序

#include"mlx90614.h"

#include"delay.h"

u8bit_out=0;

u8bit_in=0;

u8DataH,DataL,Pecreg;(2)SMBbusIO初始化函數(shù)voidSMB_Init(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能GPIOB時(shí)鐘 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7);

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論