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

正文內(nèi)容

畢業(yè)設(shè)計-基于pic16f877a單片機(jī)的八路溫度巡回檢測系統(tǒng)設(shè)計(編輯修改稿)

2025-02-14 15:56 本頁面
 

【文章內(nèi)容簡介】 開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。(1) DS18B20的復(fù)位時序: DS18B20復(fù)位時序圖程序?qū)崿F(xiàn)如下:/********************************************************************* 名 稱:reset() * 功 能:18b20復(fù)位********************************************************************/define DQ RB7define DQ_HIGH() TRISB7=1define DQ_LOW() TRISB7=0。DQ=0void reset(){ uchar st=1。 DQ_HIGH()。 // 先拉至高電平 NOP()。NOP()。 while(st) { DQ_LOW()。 // 低電平 delayus(70,30)。 // 延時503usDQ_HIGH()。 //釋放總線等電阻拉高總線delayus(4,4)。 //延時60us if(DQ==1) //沒有接收到應(yīng)答信號,繼續(xù)復(fù)位 st=1。 else //接收到應(yīng)答信號 st=0。 delayus(50,10)。 //延時430us }}(2) DS18B20的讀時序:對于DS18B20的讀時序分為讀0時序和讀1時序兩個過程。 對于DS18B20的讀時隙是從主機(jī)把單總線拉低之后,在15uS之內(nèi)釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。 DS18B20讀時序圖/********************************************************************* 名 稱:read_byte() * 功 能:18b20讀字節(jié)* 出口參數(shù):讀出18B20的內(nèi)容********************************************************************/uch read_byte(){ uch i。 uch value = 0。 //讀出溫度 static bit j。 for (i = 8。i 0。i) { value = 1。 DQ_LOW()。 NOP()。NOP()。NOP()。NOP()。NOP()。NOP()。 //6us DQ_HIGH()。 //拉至高電平 NOP()。NOP()。NOP()。NOP()。NOP()。 //4us j = DQ。 if (j) value |= 0x80。 delay(2, 7)。 //63us } return (value)。}(3) DS18B20的寫時序:對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。 對于DS18B20寫0時序和寫1時序的要求不同,當(dāng)要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單總線。 DS18B20寫時序圖/********************************************************************* 名 稱:write_byte() * 功 能:寫18b20寫字節(jié)* 入口參數(shù):uch val 待寫的數(shù)據(jù)*******************************************************************/void write_byte(uch val){ uch i。 uch temp。 for (i = 8。i 0。i) { temp = val amp。 0x01。 //最低位移出 DQ_LOW()。 NOP()。NOP()。NOP()。NOP()。NOP()。 //從高拉至低電平,產(chǎn)生寫時間隙 if (temp == 1) DQ_HIGH()。 //如果寫1,拉高電平 delay(2, 7)。 //延時63us DQ_HIGH()。 NOP()。NOP()。 val = val 1。 //右移一位 }}DS18B20內(nèi)部帶有共9個字節(jié)的高速暫存器RAM和電可擦除EEPROM,起結(jié)構(gòu)如表2所示。表2 DS18B20高速暫存器結(jié)構(gòu)寄存器內(nèi)容字節(jié)地址溫度值低位(LSB)0溫度值高位(MSB)1高溫限值(TH)2低溫限值(TL)3配置寄存器4保留5保留6保留7CRC校驗(yàn)值8DS18B20所包含的操作指令如表3所示。表3 DS18B20操作指令ROM操作指令指令約定代碼功能讀ROM33H讀DS18B20溫度傳感器ROM中的編碼(即64位地址)匹配ROM55H發(fā)出命令后接著發(fā)出64位ROM編碼,訪問總線上與該編碼對應(yīng)的芯片搜索ROMF0H用于確定掛接在同一總線上DS18B20的個數(shù)跳過ROMCCH忽略64位ROM地址,直接向DS18B20發(fā)溫度變換命令告警搜索ECH執(zhí)行后只有問多超過上限或下限的芯片才響應(yīng)RAM操作指令指令約定代碼功能溫度轉(zhuǎn)換44H啟動DS18B20溫度轉(zhuǎn)換。12位轉(zhuǎn)換時長典型值750ms讀暫存器BEH讀內(nèi)部RAM中9字節(jié)的數(shù)據(jù)。寫暫存器4EH向RAM第3字節(jié)寫上、下限溫度數(shù)據(jù),緊跟命令之后傳送2字節(jié)數(shù)據(jù)復(fù)制暫存器48H將RAM中第3字節(jié)的內(nèi)容復(fù)制到內(nèi)部EEPROM中重調(diào)EEPROMB8H將EEPROM中內(nèi)容恢復(fù)到RAM中第4字節(jié)溫度數(shù)據(jù)在高速暫存器RAM的第0和第1個字節(jié)中的存儲格式如下表4所示。表4 DS18B20溫度數(shù)據(jù)存儲格式位7位6位5位4位3位2位1位02322212021222324位15位14位13位12位11位10位9位8SSSSS262524DS18B20在出廠是默認(rèn)配置為12位,其中最高位為符號位,即溫度值共11位,單片機(jī)在讀取數(shù)據(jù)時,一次會讀2字節(jié)共16位。另外,還需要判斷溫度的正負(fù)。前5個數(shù)字為符號位,這5位同時變化,我們只需要判斷11位就可以了。前5位為1時,讀取的溫度為負(fù)值。前5位為0時,讀取的溫度為正值,且溫度為正值時??紤]到實(shí)際使用的需要,在這里我們只使用一個DS18B20,故每次操作前只需復(fù)位后發(fā)出Skip ROM指令(即跳過ROM指令)再讀出溫度的正值、并精確到小數(shù)點(diǎn)后一位,即可滿足設(shè)計需求。/****************************************************************** 名 稱:get_temp() * 功 能:啟動溫度轉(zhuǎn)換*****************************************************************/void get_tem(){ uchar tem1,tem2,num。 float aaa。 reset()。 //復(fù)位 write_byte(0xCC)。 //跳過ROM write_byte(0x44)。 //溫度轉(zhuǎn)換 for(num=100。num0。num) //確保溫度轉(zhuǎn)換完成所需要的時間 reset()。 //再次復(fù)位,等待從機(jī)應(yīng)答 write_byte(0xCC)。 //忽略ROM匹配 write_byte(0xBE)。 //發(fā)送讀溫度命令 tem1=read_byte()。 //讀出溫度低8 tem2=read_byte()。 //讀出溫度高8位 shu=(tem24|tem14)。 //溫度整數(shù)部分 aaa=(tem2*256+tem1)*。 //溫度小數(shù)部分 temper=(int)aaa。 //強(qiáng)制轉(zhuǎn)換成整型 a1=temper/1000。 //取溫度十位 a2=temper%1000/100。 //取個位 a3=temper%100/10。 //小數(shù)點(diǎn)后個位 a4=temper%10。 //小數(shù)點(diǎn)后十位} DS18B20的接口實(shí)現(xiàn) 硬件設(shè)計 所示,這次實(shí)驗(yàn)只焊了兩個溫度傳感器而已,其他兩個用法一樣,留作外接口,可以方便外用。 DS18B20原理圖 DSB18B20硬件連接實(shí)物圖 軟件設(shè)計根據(jù)DS18B20約定的通訊協(xié)議,每次使用DS18B20之前都必須經(jīng)過三個步驟,即先復(fù)位DS18B20,接著發(fā)出ROM操作指令,然后才可以發(fā)出RAM操作指令以進(jìn)行溫度轉(zhuǎn)換等命令。本系統(tǒng)將實(shí)現(xiàn)讀出DS18B20的溫度并實(shí)時顯示到LCD12864上,℃。由于DS18B20對時序要求很嚴(yán)格,所以在程序設(shè)計時,時序要多加注意一點(diǎn),不過數(shù)字不是死的,只要控制合理控制也不是掃描大問題。 DS18B20首次初始化時開啟溫度轉(zhuǎn)換,之后每1s進(jìn)行一次DS18B20的溫度讀取和轉(zhuǎn)換, 圖 芯片上電復(fù)位DS18B20發(fā)出Skip ROM指令啟動溫度轉(zhuǎn)換1s到?YN復(fù)位DS18B20發(fā)出Skip ROM指令讀取溫度 DS18B20讀取溫度流程圖 設(shè)計心得總結(jié) 焊接問題:焊接DS18B20時,速度要快,如果高溫的電烙鐵持續(xù)接觸傳感器很容易燒掉DS18B20,因?yàn)殡娎予F一般溫度為350 ~ 450度,而傳感器承受溫度為125度。我曾經(jīng)因此燒壞了兩個傳感器,得此痛訓(xùn)! 軟件設(shè)計:DS18B20時序要求較為嚴(yán)格,這里的嚴(yán)格不是說一定要按手冊的時間一摸一樣而是說相對其他芯片來說嚴(yán)格了一點(diǎn)。如果讀取不到溫度應(yīng)該檢查一下時序時間設(shè)計問題。再有一個難點(diǎn)就是溫度轉(zhuǎn)換問題。溫度能顯示到小數(shù)點(diǎn)后4位,如果要將溫度全部讀出,應(yīng)該將整數(shù)部分乘以10000再加上小數(shù)部分,化浮點(diǎn)數(shù)為整數(shù),當(dāng)然也可以直接采用浮點(diǎn)數(shù)相乘。開機(jī)會出現(xiàn)85C那是18B20復(fù)位值 不足:此次設(shè)計沒有處理溫度負(fù)數(shù)情況,如果要處理應(yīng)該判斷最高位符號位,然后取反加一。18B20可單總線掛多個,這里IO口有剩再加上為了程序設(shè)計簡單采用了并口方式。5 存儲芯片AT24C02簡單介紹及接口實(shí)現(xiàn) AT24C02功能描述管腳定義AT24C02是一個2K位串行CMOS E2PROM, 內(nèi)部含有256個8位字節(jié),CATALYST公司的先進(jìn)CMOS技術(shù)實(shí)質(zhì)上減少了器件的功耗。AT24C02有一個16字節(jié)頁寫緩沖器。該器件通過IC總線接口進(jìn)行操作,有一個專門的寫保護(hù)功能。AT24C02支持IC,總線數(shù)據(jù)傳送協(xié)議IC,總線協(xié)議規(guī)定任何將數(shù)據(jù)傳送到總線的器件作為發(fā)送器。任何從總線接收數(shù)據(jù)的器件為接收器。數(shù)據(jù)傳送是由產(chǎn)生串行時鐘和所有起始停止信號的主器件控制的。主器件和從器件都可以作為發(fā)送器或接收器,但由主器件控制傳送數(shù)據(jù)(發(fā)送或接收)的模式,通過器件地址輸入端A0、A1和A2可以實(shí)現(xiàn)將最多8個AT24C02器件連接到總線上?! ?本次設(shè)計采用4個AT24C02用來儲存4個溫度傳感器采集到的溫度,用以回顯。只要有溫度較大變化都會被儲存,隨時可以通過功能按鍵切換功能查看,也可以將溫度傳回PC機(jī)統(tǒng)計分析。圖 溫度儲存之后統(tǒng)計分析通過液晶顯示出來 管腳定義及接口實(shí)現(xiàn)。個引腳功能如下:SCL 串行時鐘   AT24C02串行時鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時鐘,這是一個輸入管腳。   SDA 串行數(shù)據(jù)/地址   AT24C02 雙向串行數(shù)據(jù)/地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收,SDA 是一個開漏輸出管腳,可與其它開漏輸出或集電極開路輸出進(jìn)行線或(wireOR)。   A0、AA2 器件地址輸入端   這些輸入腳用于多個器件級聯(lián)時設(shè)置器件地址,當(dāng)這些腳懸空時默認(rèn)值為0。當(dāng)使用AT24C02 時最大可級聯(lián)8個器件。如果只有一個AT24C02被總線尋址,這三個地址輸入腳(A0、AA2 )可懸空或連接到Vss,如果只有一個AT24C02被總線尋址這三個地址輸入腳(A0、AA2 )必須連接到Vss。   WP 寫保護(hù) 如果WP管腳連接到Vcc,所有的內(nèi)容都被寫保護(hù)只能讀。當(dāng)WP管腳連接到Vss 或懸空允許器件進(jìn)行正常的讀/寫操作 AT24C02硬件連接圖設(shè)計思想如下: NY溫度有較大變化?啟動24c02監(jiān)控溫度儲存溫度儲存時間 設(shè)計心得 A0、AA2 器件地址輸入端,應(yīng)該設(shè)計不一樣以區(qū)分各個存儲器,一個24C02對應(yīng)一個傳感器。,不然會出現(xiàn)問題。6 實(shí)時時鐘DS1302簡單介紹及接口實(shí)現(xiàn) DS1302簡介DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時時鐘電路,它可以對年、月、日、周日、時、分、秒進(jìn)行計時,具有閏年補(bǔ)償功能,~。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RA
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1