freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于stm32的智能家居系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)-在線瀏覽

2024-08-06 09:50本頁面
  

【正文】 上仍顯不足。除了其豐富的片內(nèi)外設(shè),它的每個(gè)I/O口都對(duì)應(yīng)著32位的配置寄存器,可以進(jìn)行自由的配置,還具有鎖存器和16位的復(fù)位寄存器和復(fù)位寄存器。它的嵌入式中斷矢量控制器,具有16個(gè)可編程優(yōu)先級(jí),60個(gè)可屏蔽中斷通道,還具有延遲的異常和中斷處理。在選定MCU 后,首先規(guī)劃本設(shè)備的各個(gè)功能的實(shí)現(xiàn)。STM32F103VCT6的ADC轉(zhuǎn)換器是一種12位精度的逐次逼近型的數(shù)字轉(zhuǎn)換器。本款產(chǎn)品沒有全部使用所有的ADC,僅使用了其中的6條AD轉(zhuǎn)換通道。時(shí)鐘在不斷電的情況下即可正常運(yùn)行,可以為產(chǎn)品的液晶屏顯示提供時(shí)間不需要外接設(shè)備提供時(shí)間。緊接著就是AD方案的選擇問題:其中一種是使用獨(dú)立的ADC轉(zhuǎn)換器,另一種使用MCU中自帶的ADC 轉(zhuǎn)換模塊。我們以ADC0809為例簡單說明下,0809的參數(shù)如下:1)8路輸入通道,8位A/D轉(zhuǎn)換器,即分辨率為8位。3)轉(zhuǎn)換時(shí)間為100μs。5)模擬輸入電壓范圍0+5V,不需要校準(zhǔn)和清零過程。7)功耗低,約15mW。如果外接高速ADC 轉(zhuǎn)換器,價(jià)格又過高,并不是最好的選擇。該ADC屬于逐次逼近型模擬數(shù)字轉(zhuǎn)換器。在本次設(shè)計(jì)中我們將兩種ADC的采集方法并用,下面會(huì)有詳細(xì)的使用說明。說到STM32的閃存用途,我們的第一反應(yīng)是用來裝程序代碼的,實(shí)際上,STM32的片內(nèi)FLASH不僅可以用來裝程序數(shù)據(jù)代碼,還用來裝芯片配置、芯片ID等等。 主存儲(chǔ)塊可以用于存儲(chǔ)程序,我們寫的代碼,數(shù)據(jù)都會(huì)存儲(chǔ)在這里。系統(tǒng)存儲(chǔ)器存儲(chǔ)是出廠時(shí)就被鎖死的,用戶不需要處理它,用來存儲(chǔ)系統(tǒng)代碼, 選項(xiàng)字節(jié)存儲(chǔ)芯片的配置內(nèi)容是對(duì)主存儲(chǔ)塊內(nèi)容的一種保護(hù)。 STM32的FLASH主存儲(chǔ)塊按頁組織,有的產(chǎn)品每頁1KB,有的產(chǎn)品每頁2KB。從這點(diǎn)來看,頁面有點(diǎn)像通用FLASH的扇區(qū)。小容量產(chǎn)品的主存儲(chǔ)存容量在132KB之間,系統(tǒng)占2KB,中容量產(chǎn)品主存儲(chǔ)容量在64128KB之間,每頁占1KB大??;大容量產(chǎn)品主存儲(chǔ)容量在256KB以上,系統(tǒng)占2KB,每頁占2KB;互聯(lián)網(wǎng)型產(chǎn)品主存容量最大為 幾類單片機(jī)的不同之處就在于引導(dǎo)裝載程序的不同,小中大容量產(chǎn)品的BootLoader占用空間很小,只能通過USART1進(jìn)行在線編程,而互聯(lián)型產(chǎn)品的BootLoader有18KB是小中型的9倍,從而編程的方式選擇也就更加的多樣化,例如USATCAN等多種方式。 ISP即在系統(tǒng)編程,是指直接在目標(biāo)電路板上對(duì)芯片進(jìn)行編程,一般需要一個(gè)自舉程序(BootLoader)來執(zhí)行。 IAP(In Application Programming)在應(yīng)用中編程,是指最終產(chǎn)品出廠后,由最終用戶在使用中對(duì)用戶程序部分進(jìn)行編程,實(shí)現(xiàn)在線升級(jí)。引導(dǎo)程序總是不變的。 ISP與IAP的區(qū)別在于,ISP一般是對(duì)芯片整片重新編程,用的是芯片廠的自舉程序。綜合來看,ISP受到的限制更多,而IAP由于是自己開發(fā)的程序,更換程序的時(shí)候更容易操作。 FPEC(FLASH Program/Erase controller 閃存編程/擦除控制器),STM32通過 FPEC來擦除和編程FLASH。 FPEC鍵寄存器(FLASH_KEYR) 寫入鍵值解鎖。 選項(xiàng)字節(jié)鍵寄存器(FLASH_OPTKEYR)寫入鍵值解鎖選項(xiàng)字節(jié)操作。 閃存控制寄存器(FLASH_CR) 選擇并啟動(dòng)閃存操作。 閃存狀態(tài)寄存器(FLASH_SR) 查詢閃存操作狀態(tài)。 閃存地址寄存器(FLASH_AR) 存儲(chǔ)閃存操作地址。 選項(xiàng)字節(jié)寄存器(FLASH_OBR)選項(xiàng)字節(jié)中主要數(shù)據(jù)的映象。 寫保護(hù)寄存器(FLASH_WRPR) 選項(xiàng)字節(jié)中寫保護(hù)字節(jié)的映象。 建議使用以下步驟進(jìn)行頁擦除:保證沒有其他正在進(jìn)行的閃存操作。 5.當(dāng)收到響應(yīng)信號(hào)也就是寄存器BSY變?yōu)?。 6.做檢查,如果EOP位為1,說明此次操作成功否則檢查前幾步操作是否得當(dāng)。 7.分析數(shù)據(jù)位,每次擦完后數(shù)據(jù)位都會(huì)被設(shè)置成數(shù)字1,若操作正確既可以得到全部為1的數(shù)據(jù)位,整片擦除的方法(與寫入方式相反的操作)大體如下: 1.檢查BSY位,確認(rèn)沒有其他正在進(jìn)行的操作。 2.設(shè)置寄存器的MER位為1。 4.等待寄存器的BSY位變?yōu)?。 5.查詢FLASH_SR寄存器的EOP位,EOP為1時(shí)。 建議對(duì)主存儲(chǔ)塊使用如下過程進(jìn)行編寫程序:2.選擇編程操作。智能家居的在顯示方面需要同時(shí)顯示幾行數(shù)據(jù),而1602每一次顯示的數(shù)據(jù)過少,相互比較而言12864是不錯(cuò)的選擇。產(chǎn)品功能設(shè)計(jì)如圖31所示。每個(gè)模塊的設(shè)計(jì)上均有其難點(diǎn)和特殊性,需要嚴(yán)格按照原理圖設(shè)計(jì)規(guī)范來設(shè)計(jì)[13],原理圖設(shè)計(jì)要點(diǎn)如下所示:1. 各功能塊布局要合理,整份原理圖需要布局均衡,避免有些地方很擠,而有些地方很松。將溫度信息采集模塊、如溫度采集模塊、濕度數(shù)據(jù)采集,光照信息采集,報(bào)警部分各功能部分模塊化,方便差錯(cuò)和修改程序。在接插口時(shí)盡量將外設(shè)分布在四周,不要分布不均一面造成一側(cè)的端口不夠用。45679在寫文檔時(shí),將重要的程序可以用黑體或者加粗。1112 數(shù)據(jù)采集模塊設(shè)備的數(shù)據(jù)采集,即ADC 數(shù)據(jù)轉(zhuǎn)換模塊,利用了MCU 自帶的ADC 模塊和外部設(shè)備ADC0809兩種數(shù)據(jù)轉(zhuǎn)換模式,將傳感器的模擬信號(hào)轉(zhuǎn)換為數(shù)字量存儲(chǔ)起來。為簡化下位機(jī)電路,沒有將傳感器模擬信號(hào)采集部分設(shè)計(jì)到下位機(jī)上[14]。 int j。init()。cs=0。 while(x){x。a13。write_date(table[a])。}delay(5)。wr=0。delay(10)。delay(5)。i=i/255。i*=100。ge=j%10。j=ge。shi=shi%10。bai=j/100。.39。delay(5)。delay(5)。delay(5)。delay(5)。V39。delay(5)。電路圖設(shè)計(jì)如圖45所示:圖45 溫濕度設(shè)計(jì)電路圖溫濕度數(shù)據(jù)采集程序:u8 DHT11_Rea }d_Bit(void) {u8 retry=0。amp。delay_us(1)。while(!DHT11_DQ_INamp。retry100){retry++。}delay_us(40)。else return 0。 dat=0。i8。 dat|=DHT11_Read_Bit()。}u8 DHT11_Read_Data(u8 *temp,u8 *humi) { u8 buf[5]。DHT11_Rst()。i5。if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4]){*humi=buf[0]。}}else return 1。} 煙霧傳感模塊傳感器采用兩種數(shù)據(jù)采集方法,一種是數(shù)字量DO的采集判斷有無氣體,一種是模擬量輸出AO檢測(cè)氣體的濃度狀態(tài)情況,以及判斷該濃度對(duì)人體是否有害。 ADC_SoftwareStartConvCmd(ADC1, ENABLE)。 return ADC_GetConversionValue(ADC1)。u8 t。ttimes。delay_ms(5)。} adcx=Get_Adc_Average(ADC_Channel_1,10)。}longdu=(adcxadcx1)*100/256。 液晶顯示電路設(shè)計(jì)本系統(tǒng)液晶顯示采用LCM12864液晶作為顯示器。該液晶模塊支持串行通信和并口通信。并口通信通信速率塊但是占用端口多。CLK_L。i8。0x80) {SID_H。} CLK_L。CLK_H。}CLK_L。delay(10)。delay(10)。//11111,00,0 RW=0,RS=0 同步標(biāo)志 delay(10)。0xF0)。0x0F)4)。CS_L。delay(10)CLK_L。SendByte(0xFA)。SendByte(datamp。//高四位 delay(10)。0x0F)4)。CS_L。 if(Y1) Y=1。 X amp。 switch(Y){ case 1:X|=0X80。 case 2:X|=0X90。 case 3:X|=0X88。 case 4:X|=0X98。}WriteCommandLCD(X, 0)。 delay(100)。}void SET_ADDR(unsigned char X, unsigned char Y){ CS_H。if(Y4)Y=4。= 0x0F。break。break。break。break。 delay(100)。}void SET_ADDR1(unsigned char X, unsigned char Y){ CS_H。if(Y4)Y=4。= 0x0F。break。break。break。break。 delay(100)。}void LCDInit(void) //LCM初始化{ CS_H。CLK_L。 //顯示模式設(shè)置,開始要求每次檢測(cè)忙信號(hào)WriteCommandLCD(0x02,1)。 // 顯示光標(biāo)移動(dòng)設(shè)置WriteCommandLCD(0x0C,1)。 //顯示清屏WriteCommandLCD(0x80,1)。}void LCDClear(void) //清屏{CS_H。WriteCommandLCD(0x01,1)。 // 顯示光標(biāo)移動(dòng)設(shè)置WriteCommandLCD(0x30,1)。}void Line_white(){CS_H。 WriteCommandLCD(0x17,1)。}void SendCMD(unsigned char dat){CS_H。SendByte(0xF8)。0xF0)。0x0F)4)。delay_ms(1)。CLK_L。//11111,01,0 RW=0,RS=1SendByte(datamp。//高四位SendByte((datamp。//低四位CS_L。delay_ms(100)。SendCMD(0x0C)。SendCMD(0x02)。SendCMD(0x04)。while(*ptr != 39。){SendDat(*ptr)。}}void lcd_num(unsigned char *ptr,u8 size){while(size){SendDat(*ptr)。}} 報(bào)警電路的設(shè)計(jì)本系統(tǒng)主要以燈光提示為主。如圖48所示:圖48 燈光報(bào)警電路設(shè)計(jì)圖 時(shí)鐘模塊時(shí)鐘模塊利用了DALLAS 公司推出的涓流充電時(shí)鐘芯片DS1302,另外設(shè)計(jì)了紐扣電池連接到DS1302 的VCC2 備用電源引腳上。當(dāng)備份電源等于電源電壓加上2V,由備份電源供電,備份電源小于電源電壓時(shí),有電源自己供電。表41 DS1302有關(guān)的日歷與時(shí)間的寄存器:讀寄存器寫寄存器BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0范圍81h80hCH秒005983h82h分005985h84h12/24010時(shí)時(shí)112/023AM/PM87h86h0010日日13189h88h00010月月1128Bh8Ah00000周178Dh8Ch10年年00998Fh8EhWP0000000 這張表介紹了DS1302與時(shí)間日期有關(guān)的7個(gè)寄存器,我們需要做的就只是把相應(yīng)的時(shí)間和日期寫入到這幾個(gè)寄存器中,然后不斷的讀取這幾個(gè)寄存器里面的數(shù)值就能得到我們所需要的時(shí)間和日期。初始值為1, DS1302此時(shí)處于低功耗狀態(tài),時(shí)鐘振蕩器處于停止?fàn)顟B(tài);只有將秒寄存器的該位置改為0時(shí),時(shí)鐘才能開始運(yùn)行。當(dāng)將其置高時(shí),為12小時(shí)模式,反之為24小時(shí)模式。只有將WP設(shè)為0時(shí)才可以DS1302單字節(jié)讀寫時(shí)序如圖49所示:圖49 DS1302單字節(jié)讀寫時(shí)序圖 具體電路設(shè)計(jì)如圖410所示:圖410 DS1302設(shè)計(jì)電路 業(yè)務(wù)處理模塊設(shè)計(jì) 界面顯示任務(wù) 開始 顯示窗口 溫濕度檢測(cè) 煙霧濃度檢測(cè) 光照數(shù)據(jù)檢測(cè) 燈光控制過標(biāo)檢測(cè)過標(biāo)檢測(cè)過標(biāo)檢測(cè)報(bào)警模塊數(shù)據(jù)否否是是數(shù)據(jù)數(shù)據(jù)否 圖411 顯示界面流程圖 AD采樣及數(shù)據(jù)處理在該智能家居系統(tǒng)里分別用到了自帶的AD
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1