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

正文內(nèi)容

自動(dòng)溫濕度控制系統(tǒng)設(shè)計(jì)畢業(yè)論文(參考版)

2025-06-22 13:39本頁面
  

【正文】 顯示程序 12864軟件相關(guān)知識(shí)。0xf0。}}}} (2)在判斷完按鍵序號(hào)后,還需要等待按鍵被釋放,檢測釋放語句如下:while(temp!=0xf0){temp=P1。case(0xb0): return (2)。 //如果n為1110 0000(e0),即第一行第一列,那么就可以確定是S1,用顯示程序display輸出。 //相與的目的是為了找出到底是哪條列線的狀態(tài)發(fā)生了改變。 namp。 P0=0xfe。if(n!=oxf0)//~,那么就不執(zhí)行下面的程序段;如果發(fā)生變化,說明有鍵按下,則開始執(zhí)行下面的程序段來確認(rèn)鍵值。=P0。//將當(dāng)前P0口輸出的狀態(tài)讀進(jìn)來。如果有按鍵按下的話,~。P0=0xfe。 源程序 (1)掃描第一行的源程序 由圖可以知道,~,~。舉一個(gè)具體的例子,比如說圖中的S5鍵按下了,那么檢測的具體步驟可以描述如下:首先使第一行的輸出為低電平,其余行為高電平,查看列線的狀態(tài)發(fā)現(xiàn)輸出全為高電平;然后使第二行的輸出為低電平,其余行的輸出為高電平,查看列線的輸出發(fā)現(xiàn)第一列輸出為低電平,其余列為高電平??墒鼓骋恍校ㄔO(shè)為第N行)的輸出為低電平,其余行為高電平,接著就看列線的輸出。如果列線輸出為高電平,說明沒有按鍵按下;如果輸出有低電平,說明有按鍵按下。程序掃描實(shí)際上是指在特定的程序位置段上安排鍵盤掃描程序讀取鍵盤狀態(tài),主要完成判斷鍵是否被按下、按鍵消抖處理、按鍵定位等操作。掃描法又分為程序掃描、定時(shí)掃描和中斷掃描。這兩種方法的原理可以簡述如下:掃描法先是首先確定是否有鍵按下,然后再進(jìn)行判斷是哪個(gè)鍵;行列反轉(zhuǎn)法就是將行線和列線分別做為輸入和輸出,從而得知按鍵所在行線和列線。} 鍵盤程序矩陣鍵盤的軟件流程圖如圖3—8所示。i) display(humivalue)。 for(i=100。 if(rhtrue) rhtrue=。 rhtrue=()*(t1+t2*rh)+rhlin。 uchar i。 float rhlin。float calc_humi(float humivalue){ const float c1=,c2=,c3=,t1=,t2=。 } return tempvalue。 tempvalue=value_2+value_1*256。為避免信號(hào)沖突,微處理器應(yīng)驅(qū)動(dòng) DATA 在低電平 if(DATA==0) { value_1=read_byte(ACK)。//如果傳輸出錯(cuò),那么就復(fù)位 else { while(DATA==1) _nop_()。 error+=write_byte(MEASURE_HUMI)。 uint tempvalue。這也就是說對(duì)與12位的數(shù)據(jù),高位對(duì)應(yīng)的應(yīng)該是ACK=1,! ACK=0可繼續(xù)進(jìn)行通訊;低位對(duì)應(yīng)的是ACK=0,! ACK=1停止通訊。前文已經(jīng)敘述過了,如果不使用CRC8校驗(yàn),控制器可以在測量值LSB后,通過保持確認(rèn)位ACK高電平來中止通訊。 return val。 SCK=0。_nop_()。 SCK=1。 SCK=0。i=i/2) //對(duì)i的賦值連續(xù)的變化,從1000 0000~0000 0001 { SCK=1。 for(i=0x80。(3)讀取數(shù)據(jù)子函數(shù)uchar read_byte(bit ACK){ uchar i,val=0。因此在第8個(gè)時(shí)鐘的下降沿到第9個(gè)時(shí)鐘的下降沿之間SHT11應(yīng)該是將DATA拉低為低電平。}對(duì)程序最后幾句語句這里做一下解釋。 SCK=0。 SCK=1。 SCK=0。_nop_()。 SCK=1。value) //對(duì)value的每一位進(jìn)行測試,看是1還是0,最后賦值 DATA=1。i0。 //拉低,置回到原先的狀態(tài),為下次的使用做好準(zhǔn)備}(2)寫入命令子函數(shù)uchar write_byte(uchar value) { uchar i。 //隨后是在 SCK 時(shí)鐘高電平時(shí) DATA 翻轉(zhuǎn)為高電平_nop_()。_nop_()。_nop_()。 //緊接著 SCK 變?yōu)榈碗娖絖nop_()。 //當(dāng)SCK時(shí)鐘高電平時(shí)DATA翻轉(zhuǎn)為低電平_nop_()。_nop_()。(2) SHT11的軟件流程圖SHT11的軟件流程圖如圖3—7所示。在測量和通訊結(jié)束后,SHT11自動(dòng)轉(zhuǎn)入休眠模式。用 CRC 數(shù)據(jù)的確認(rèn)位,表明通訊結(jié)束。單片機(jī)需要通過下拉DATA為低電平,以確認(rèn)每個(gè)字節(jié)。檢測數(shù)據(jù)可以先被存儲(chǔ),這樣控制器可以繼續(xù)執(zhí)行其它任務(wù)在需要時(shí)再讀出數(shù)據(jù)。SHT11通過下拉DATA至低電平并進(jìn)入空閑模式,表示測量的結(jié)束。這個(gè)過程需要大約 20/80/320ms,分別對(duì)應(yīng)8/12/14bit測量。表3—1便是SHT11的命令集。SHT11 會(huì)以下述方式表示已正確地接收到指令:在第 8 個(gè) SCK 時(shí)鐘的下降沿之后,將 DATA下拉為低電平(ACK 位)。它包括:當(dāng)SCK時(shí)鐘高電平時(shí)DATA翻轉(zhuǎn)為低電平,緊接著 SCK 變?yōu)榈碗娖?,隨后是在 SCK 時(shí)鐘高電平時(shí) DATA 翻轉(zhuǎn)為高電平。上拉電阻通常已包含在微處理器的 I/O 電路中。為避免信號(hào)沖突,微處理器應(yīng)驅(qū)動(dòng) DATA 在低電平。DATA在SCK時(shí)鐘下降沿之后改變狀態(tài),并僅在 SCK 時(shí)鐘上升沿有效。由于接口包含了完全靜態(tài)邏輯,因而不存在最小 SCK 頻率。return temperature。temp= temph*+templ;//將高低部分的溫度數(shù)值相加。 temph =ds18b20rd()。 templ =ds18b20rd()。ds18b20_delay(150);//溫度的轉(zhuǎn)換需要時(shí)間。 ds18b20_wr(0xcc);//跳過序列號(hào)。(4)讀取溫度讀取溫度值的程序如下:readtemp(){ unsigned char templ,temph,temp,temperature。}上面兩個(gè)程序僅是讀寫一位數(shù)據(jù)的,但是在實(shí)際應(yīng)用當(dāng)中,需要讀取一個(gè)字節(jié)或?qū)懸粋€(gè)字節(jié)數(shù)據(jù)(8為數(shù)據(jù)),以上程序顯然不能滿足要求。 //拉高引腳,以便于下次的寫數(shù)據(jù)。//發(fā)送數(shù)據(jù) ds18b20_delay(12)。dq=0。}void ds18b20_write(bit v){ dq=1。 18b20_delay (12)。 v=dq。 _nop_()。 _nop_()。 dq=1。 _nop_()。 _nop_()。 dq=0。 _nop_()。 dq=1。}(3)讀/寫數(shù)據(jù)單總線傳輸,每次只能傳送一位數(shù)據(jù)。 //釋放總線,如果總線上存在DS18B20,會(huì)拉低電平60~240us。 //精確延時(shí),延時(shí)時(shí)間大于480us且小于960us。 // dq拉低,復(fù)位信號(hào)作用,DS18B20復(fù)位。 //稍作延時(shí)。 //拉高電平,準(zhǔn)備復(fù)位。} }對(duì)于12M晶振,忽略函數(shù)調(diào)用和返回時(shí)間(2+2=4us)us=1時(shí),函數(shù)可以延時(shí)約為5us(,時(shí)間會(huì)大于5us),如果調(diào)用時(shí)us較大,誤差是可以接受的。 _nop_()。 源程序 (1)延時(shí)函數(shù)由于DS18B20的時(shí)序精準(zhǔn)讀多為us級(jí)的延時(shí),因此有必要獨(dú)立編寫延時(shí)函數(shù)。采樣時(shí)間內(nèi)如果單片機(jī)的給的是高電平,則表明是讀1;如果是低電平,則表明是讀0。數(shù)據(jù)總線先被拉低至少1 us的時(shí)間,然后讀數(shù)據(jù)開始。采樣時(shí)間內(nèi)如果單片機(jī)的給的是高電平,則表明是寫1;如果是低電平,則表明是寫0。在開始的15 us,數(shù)據(jù)總線被單片機(jī)拉為低電平,所以應(yīng)該在15us之內(nèi)將要寫的數(shù)據(jù)寫到總線上。如果初始化成功的話,會(huì)在15~60us內(nèi)產(chǎn)生一個(gè)由DS18B20返回的低電平0。圖3—4 初始化時(shí)序在初始化的過程中,單片機(jī)先將總線首先拉低,經(jīng)過極短時(shí)間的延時(shí)之后,再將總線置1。存儲(chǔ)器操作命令:Convert Temperature(溫度變換) [44H],啟動(dòng)DS18B20進(jìn)行溫度的轉(zhuǎn)換,多需的轉(zhuǎn)換時(shí)間可查,結(jié)果存進(jìn)內(nèi)部的9字節(jié)的RAM中;Read Scratchpad(讀暫存存儲(chǔ)器) [BEH],讀取內(nèi)部RAM中9字節(jié)的溫度數(shù)據(jù)。由此可得出測溫程序的流程圖如圖3—3所示。圖3—1 主程序軟件總流程圖 測溫程序由于DS18B20采用單總線方式來與主機(jī)實(shí)現(xiàn)通信,而單總線在任何時(shí)刻只能有一個(gè)控制信號(hào)或數(shù)據(jù),數(shù)據(jù)要能在單片機(jī)和單總線芯片之間實(shí)現(xiàn)可靠的傳送,遵循單總線處理次序通信協(xié)議,確保數(shù)據(jù)有條不紊地傳送,圖3—2為處理次序示意圖。之后執(zhí)行對(duì)應(yīng)的操作:如果溫度(濕度)高于上限值,則開空調(diào)(風(fēng)機(jī));如低于下限值,則關(guān)空調(diào)(風(fēng)機(jī))。在驅(qū)動(dòng)器的輸出由“0”變?yōu)椤?”、繼電器的接通變?yōu)殛P(guān)斷時(shí),由于它的線包是感性負(fù)載,所以會(huì)產(chǎn)生很高的感應(yīng)電勢,此時(shí)二極管提供的泄流回路可保護(hù)驅(qū)動(dòng)器不被反電勢擊穿。三極管導(dǎo)通則繼電器的線圈得電,常開觸點(diǎn)閉合,空調(diào)或風(fēng)機(jī)就開始運(yùn)行工作。發(fā)光二極管的光照射到光敏三極管上去,光敏三極管導(dǎo)通,于是三極管Q1也跟著導(dǎo)通。首先是光電耦合器的1端口接5V的電源和200歐的電阻,當(dāng)2端口為低電平的時(shí)候,那么光耦內(nèi)部的發(fā)光二極管工作(單片機(jī)的P2口在高電平時(shí)只能提供不到1mA的電流,而引腳作用在低電平時(shí)能夠吸收20mA的電流。本設(shè)計(jì)的排濕器和空調(diào)都用的功率接口電路如圖2—20所示。采用繼電器做開關(guān)量隔離輸出時(shí),采樣三極管放大電路可以驅(qū)動(dòng)大多數(shù)的型號(hào)的小型繼電器。就抗干擾設(shè)計(jì)而言,對(duì)啟停負(fù)荷不太大的設(shè)備來說,可以改用光電耦合器,但一般情況下采用繼電器隔離輸出方式更直接。由于功率接口直接控制著被控設(shè)備的啟停,經(jīng)它引入的干擾更直接、更強(qiáng)烈,因而被控設(shè)備成為單片機(jī)的主要干擾源。 功率接口電路設(shè)計(jì)在單片機(jī)測控系統(tǒng)中,被控對(duì)象往往是強(qiáng)電設(shè)備,負(fù)載功率較大。主要方法就是改變兩個(gè)從晶振引腳到地的電容值的大小,通過測試RTC輸出的秒信號(hào)的頻率,然后把電容改成適合的值,使精度控制在合理的范圍內(nèi)。圖2—18 DS1302的內(nèi)部結(jié)構(gòu)圖(3)DS1302與單片機(jī)的連接DS1302與單片機(jī)的連接如圖2—19所示。圖2—17 DS1302引腳圖?:復(fù)位輸入端;?I/O:數(shù)據(jù)輸入/輸出端;?SCLK:串行時(shí)鐘輸入端;?VCC2:主電源,一般接+5V;?VCC1:輔助電源,;?XX2:32768HZ晶振輸入/輸出端,通常要接補(bǔ)償電容。分、時(shí)、日、星期、月、年的能力及閏年調(diào)整的能力;?31*8位暫存數(shù)據(jù)存儲(chǔ)RAM;?串行I/O口方式,引腳數(shù)量??;?寬電壓工作范圍:~;?工作電流:;?讀/ 時(shí)鐘或RAM數(shù)據(jù)時(shí),有兩種傳送方式:單字節(jié)傳送和多字節(jié)傳送。DS1302工作時(shí)功耗很低,上保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí),功耗小于1mW。DS1302與單片機(jī)之間能簡單的采用同步串行的方式進(jìn)行通信,僅需三根I/O線:復(fù)位(RST)、I/O數(shù)據(jù)線和串行時(shí)鐘(SCLK)。 DS1302時(shí)鐘芯片應(yīng)用DS1302是DALLAS公司推出的涓流充電時(shí)鐘芯片,內(nèi)含一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)靜態(tài)RAM,可以通過串行接口與單片機(jī)進(jìn)行通信。影響精度的另外一個(gè)原因,就是溫度,因此有很多產(chǎn)品在采用無內(nèi)置溫補(bǔ)電路的時(shí)候,會(huì)使用軟件對(duì)計(jì)時(shí)進(jìn)行溫度補(bǔ)償。主要方法就是改變兩個(gè)從晶振引腳到地的電容值的大小,通過測試RTC輸出的秒信號(hào)的頻率,然后把電容改成適合的值,使精度控制在合理的范圍內(nèi)。 綜上所述,RTC電路的主要特點(diǎn)是功耗低,精度高。 由于在需要RTC的場合一般不允許時(shí)鐘停走,所以即使在單片機(jī)系統(tǒng)停電的時(shí)候,RTC也必須能正常工作。但是會(huì)有幾個(gè)問題:首先為了使時(shí)鐘不至于走停,就得在停電時(shí)給單片機(jī)供電,而相對(duì)RTC來說,單片機(jī)的功消耗很大,電池往往無法長時(shí)間工作;其次單片機(jī)計(jì)時(shí)的準(zhǔn)確度比較差,通常很難達(dá)到需要的精度。所以一個(gè)最基本的實(shí)時(shí)時(shí)鐘芯片通常會(huì)具有以下的一些部件:電源電路、時(shí)鐘信號(hào)產(chǎn)生電路、實(shí)時(shí)時(shí)鐘、數(shù)據(jù)寄存器、通信接口電路、控制邏輯電路等,同時(shí)大部分的RTC還會(huì)提供一些額外的RAM。由于本設(shè)計(jì)用的是并行的方式進(jìn)行傳輸,所以就直接將PSB口接高電平。在VOUT與VSS之間接一個(gè)電位器,電位器的中心抽頭接VO,保證VO電壓為5V,LCD點(diǎn)亮;,在外電源VCC與VSS之間接一個(gè)電位器,電位器的中心抽頭接VO,LCD點(diǎn)亮。字符顯示的RAM的地址與32個(gè)字符顯示區(qū)域有著一一對(duì)應(yīng)的關(guān)系,: 表2—9 字符顯示對(duì)應(yīng)關(guān)系第一行80H81H82H83H84H85H86H87H第二行90H91H92H93H94H95H96H97H第三行88H89H8AH8BH8CH8DH8EH8FH第四行98H99H9AH9BH9CH9DH9EH9FH(3)屏幕顯示與DD RAM地址映射關(guān)系表2—10 地址映射Y1Y2Y3Y4…………Y62Y63Y64X=0Line 01/01/01/01/0…………1/01/01/0DB0Line 11/01/01/01/0…………1/01/01/0DB1Line 21/01/01/01/0…………1/01/01/0DB2Line 31/01/01/01/0…………1/01/01/0DB3Line 41/01/01/01/0…………1/01/01/0DB4Line 51/01/01/0
點(diǎn)擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1