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

正文內(nèi)容

課程設(shè)計論文-基于at89s52單片機的數(shù)字溫度計設(shè)計-wenkub

2022-11-03 11:28:43 本頁面
 

【正文】 溫度計 ”這樣一個單片機應(yīng)用系統(tǒng)的設(shè)計并仿真實現(xiàn),加深對單片機軟硬知識的理解,獲得初步的應(yīng)用經(jīng)驗,為走出校門從事單片機應(yīng)用的相關(guān)工作打下基礎(chǔ)。 擴展功能。 、方案二:采用數(shù)字溫度芯片 DS18B20 采用數(shù)字溫度芯片 DS18B20 測量溫度,輸出信號全數(shù)字化。 DS18B20 的最大特點之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計 DS18B20 和微控制器 AT89S52 構(gòu)成的溫度測量裝置 ,它直接輸出溫度的數(shù)字信號 ,可直接與計算機連接。 該系統(tǒng)利用 AT89S52 芯片控制溫度傳感器 DS18B20 進行實時溫度檢測并顯示,能夠?qū)崿F(xiàn)快速測量環(huán)境溫度,并可以根據(jù)需要設(shè)定上下限報警溫度。 圖 1 數(shù)字溫度計原理框圖 數(shù)字溫度計主要是由單片機控制器 AT89S52和溫度傳感器 DS18B20以及LED顯示電路組成。 AT89S52 是美國 ATMEL公司生產(chǎn)的低功耗,高性能 CMOS8位單片機,片內(nèi)含 8kB的可編程的 Flash河南理工大學(xué)單片機課程設(shè)計 7 只讀程序存儲器,兼容標(biāo)準(zhǔn) 8051 指令系統(tǒng)及引腳。 圖 2 AT89S52單片機引腳圖 、時鐘電路和復(fù)位電路 MCS51 內(nèi)部有一個構(gòu)成振蕩器的高增益反相放大器,此放大器的輸入端口和輸出端口分別是引腳 XTAL1 和 XTAL2,在 XTAL1 和 XTAL2 上外接時鐘源,即可構(gòu)成時鐘電路。 MCS51 單片 機通常采用上電自動復(fù)位、按鈕電平復(fù)位、外部脈沖復(fù)位、上電 +按鈕電平復(fù)位、程序運行監(jiān)視復(fù)位等方式。每個鍵單獨占用一根 I/O口線,每根 I/O線的工作狀態(tài)不會影響其他 I/O口線的工作狀態(tài)。 于使用按鍵較少,本次設(shè)計采用獨立連接式按鍵。但其編程 相對復(fù)雜,可顯示字符比較少。 、 DS18B20 簡單介紹 DS18B20是 DALLAS公司的一種新型的單線數(shù)字溫度傳感器,其體積更小、更適用于多種場合、且適用電壓更寬、更經(jīng)濟。 河南理工大學(xué)單片機課程設(shè)計 11 、 DS18B20 性能特點 DS18B20 的性能特點: 用單總線專用技術(shù),既可通過串行口線,也可通過其它 I/O 口線與微機接口,無須經(jīng)過其它變換電路,直接輸出被測溫度值( 9 位二進制數(shù),含符號位)。 用戶可分別設(shè)定各路溫度的上、下限。 圖 7 DS18B20 引腳分布圖 64 位光刻 ROM 是出廠前被光刻好的,它可以看作是該 DS18B20 的地址序列號。 高 8位 S S S S S 26 25 24 低 8位 23 22 21 20 21 22 23 24 、 DS18B20控制方法 在硬件上, DS18B20 與單片機的連接有兩種方法,一種是 VCC接外部電源, GND 接地, I/O 與單片機的 I/O 線相連;另一種是用寄生電源供電,此時 UDD、 GND 接地, I/O 接單片機 I/O。如主機控制 DS18B20 完成溫度轉(zhuǎn)換這一過程,根據(jù) DS18B20 的通訊協(xié)議,須經(jīng)三個步驟:每一次讀寫之前都要對DS18B20 進行復(fù)位,復(fù)位成功后發(fā)送一條 ROM 指令,最后發(fā)送 RAM 指令,這樣才能對 DS18B20 進行預(yù)定的操作。報警電 路了硬件連接如圖 8 所示。其軟件窗口界面如圖 10 所示。 河南理工大學(xué)單片機課程設(shè)計 16 圖 11 主程序流程圖 、讀出溫度子程序 讀出溫度子程序的主要功能是讀出 RAM 中 9 字節(jié)的內(nèi)容,并將其整合成一整數(shù)存儲在暫存器中。 圖 14 數(shù)據(jù)刷新子程序流程圖 河南理工大學(xué)單片機課程設(shè)計 18 、報警子程序 報警子程序主要實現(xiàn)當(dāng)測量的實際溫度高于設(shè)定溫度的上限時,蜂鳴器響,并且紅色指示燈亮;當(dāng)測量的實際溫度低于設(shè)定溫度的下限時,蜂鳴器也響,但黃色指示燈亮;當(dāng)測量的實際溫度介于設(shè)定溫度的上下限時,蜂鳴器不響,并且綠色指示燈亮。 Proteus 軟件窗口界面如圖 16 所示。假設(shè)上限溫度設(shè)定為 38℃ ,下限溫度設(shè)定為10℃ 。 圖 19 實際溫度超過 38℃ 當(dāng)實際溫度低于下限溫度時,蜂鳴器響、黃色指示燈亮。 圖 21 實際溫度介于 10℃ ~ 38℃ 河南理工大學(xué)單片機課程設(shè)計 23 DS18B20 最大的特點是單總線數(shù)據(jù)傳輸方式, DS18B20 的數(shù)據(jù) I/O 均由同一條線來完成。因此,在條件允許的場合,盡量采用外部供電方式。 圖 22 DS18B20與單片機的連接 外部電源供電方式是 DS18B20 最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強,而且電路也比較簡單,可以開發(fā)出穩(wěn)定可靠的多點溫度監(jiān)控系統(tǒng)。通過數(shù)字溫度計的單片機課程設(shè)計了解了數(shù)字溫度計的組成及原理,練習(xí)了 Protel、 Proteus、 KeilC 等軟件的基本操作、了解了如何撰寫課 程設(shè)計報告、并且會用各種方式查找和利用各種文獻資料為自己服務(wù)、增長了對實際電路設(shè)計的經(jīng)驗、提高了分析問題和解決問題的能力。有很多東西,只有我們試著去做了,才能更進一步了解它。延時函數(shù)用 include define disdata P0 //段碼輸出口 define discan P2 //掃描口 define uchar unsigned char define uint unsigned int sbit duqu=P3^6。 sbit key1=P3^1。 //紅燈 sbit led1=P1^1。 uchar r。 uchar ti。 //**************溫度小數(shù)部分用查表法 ***********// uchar code ditab[16]= {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09}。 //讀出溫度暫放 uchar data display[5]={0x00,0x00,0x00,0x00,0x00}。 } /****************顯示掃描函數(shù) ***************************/ void scan() { char k。 //位選 disdata=dis_7[display[k]]。 while(presence) 河南理工大學(xué)單片機課程設(shè)計 27 { while(presence) { duqu=1。 delay(50)。 //presence=0 復(fù)位成功 ,繼續(xù)下一步 } delay(45)。 for(i=8。_nop_()。_nop_()。 //最低位移出 delay(6)。 } /****************DS18B20 讀 1 字節(jié)函數(shù) ************************/ //從總線上取 1 個字節(jié) uchar read_byte(void) 河南理工大學(xué)單片機課程設(shè)計 28 { uchar i。i) { duqu=1。 duqu=0。_nop_()。_nop_()。 //66 us } duqu=1。 write_byte(0xcc)。 write_byte(0xcc)。 //讀溫度值的高字節(jié) temp=temp_data[1]。 return temp。n=1。 // 取小數(shù)部分的值 display[0]=ditab[display[4]]。 // 取后兩位數(shù)據(jù)暫存 display[2]=display[1]/10。 //最高位為 0 時不顯示 if(!display[2]) { display[2]=0x0a。 if(r=high) { led0=0。 } } else if ((nn==1)amp。beep=1。led0=1。 EX1=0。 TL0=(6553610000)%256。 ti=high。 } while(!key1)。 //消抖動 if(key0==0) { sign=!sign。 } } 河南理工大學(xué)單片機課程設(shè)計 32 /******************上下限加 1**************************/ void key2() { while(key02==0) { delay(400)。high=pp。 delay(400)。 else { high=high1。high=pp。 } } /******************上限溫度顯示 **************************/ void high1() { uchar k。 display[3]=12。 disdata=dis_7[display[k]]。 delay(100)。 display[3]=12。 disdata=dis_7[display[k]]。 delay(100)。 display[2]=10。ki++) { discan=scan_con[ki]。 disdata=0x00。 display[1]=ee/10。ki4。} delay(100)。 disdata=0x00。h++) //開機顯示 0000 {display[h]=0。 //發(fā)轉(zhuǎn)換命令 for(h=0。 scan()。 // 顯示上限溫度 key10()。 } case 3: { low1()。 break。免費格式轉(zhuǎn)換請發(fā)站內(nèi)信。 } } //***********
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1