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

正文內(nèi)容

數(shù)字體溫計(jì)的設(shè)計(jì)畢業(yè)設(shè)計(jì)論文(編輯修改稿)

2025-07-25 15:06 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 多個(gè)DS18B20可以在一個(gè)總線線進(jìn)行通信的原因??赏ㄟ^(guò)軟件寫(xiě)入TH和TL,設(shè)置溫度區(qū)間,超出設(shè)置溫度區(qū)間打出報(bào)警信號(hào)。此外DS18B20通信功能有嚴(yán)格的時(shí)隙的概念,因此讀取和寫(xiě)入數(shù)據(jù)時(shí)序是很重要的。根據(jù)DS18B20協(xié)議各種操作系統(tǒng)協(xié)議:初始化DS18B20(發(fā)送復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)送操作命令→內(nèi)存中的數(shù)據(jù)處理液晶顯示屏LCD1602模塊是工業(yè)字符型液晶,1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器可以存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,像阿拉伯?dāng)?shù)字、英文字母、常用的符號(hào)、和日文假名等。目前有多種顯示字符模式使用16*1,16*2,20*2和40*2等。LCD1602按顯示亮度分為兩種,一種是帶背光,另外一種是不帶背光,大多是基于控制器HD44780,背光的比較偏厚,在應(yīng)用中被沒(méi)有太大差別[7]。主要技術(shù)參數(shù)如下表33所示:表33 主要技術(shù)參數(shù)顯示容量162個(gè)字符芯片工作電壓—工作電流()模塊最佳工作電壓字符尺寸(WH)mm一般1602LCD采用標(biāo)準(zhǔn)的14腳(無(wú)背光)或16腳(帶背光)接口LCD1602的引腳分為如下幾類:(1) 電源及接地引腳:VSS,VDD;(2) 使能以及讀寫(xiě)引腳:E,RS,R/W;(3) 背光源正負(fù)極引腳:BLA,BLK;(4) 數(shù)據(jù)傳輸引腳:D0,D1,D2,D3,D4,D5,D6,D7; 1602液晶模塊的顯示以及操作都需要指令代碼的,比如讀寫(xiě)操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。指令有很多, 分為幾類:分別是指令1光標(biāo)顯示,指令2光標(biāo)復(fù)位,指令3光標(biāo)移動(dòng),高電平右移,低電平左移,指令4顯示開(kāi)關(guān)控制,指令5光標(biāo)或顯示移位 ,高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo),指令6功能設(shè)置命令,指令7字符發(fā)生器RAM地址設(shè)置,指令8DDRAM地址設(shè)置,指令9讀忙信號(hào)和光標(biāo)地址 BF,指令10寫(xiě)數(shù)據(jù),指令11讀數(shù)據(jù)。 LCD1602和單片機(jī)的接口是不需要轉(zhuǎn)換電路的,可以直接實(shí)現(xiàn)模塊的對(duì)接,1602液晶顯示模塊可以和單片機(jī)STC89C52直接接口,下面是連接的電路圖,如圖39所示,從下圖能看到單片機(jī)的IO口可以直接和液晶顯示器的數(shù)據(jù)傳輸接口對(duì)接,在硬件電路上可以很好設(shè)計(jì)。圖39 1602液晶模塊和單片機(jī)連接 當(dāng)溫度傳感器檢測(cè)到的體溫不在可檢測(cè)的范圍之內(nèi),也就是說(shuō)超出設(shè)定范圍了,這時(shí)單片機(jī)處理這個(gè)信號(hào),單片機(jī)外圍接有源蜂鳴器,出現(xiàn)這種情況單片機(jī)給接有蜂鳴器那個(gè)引腳一個(gè)高電平脈沖信號(hào),蜂鳴器接通發(fā)出報(bào)警信號(hào),起到實(shí)時(shí)監(jiān)測(cè)控制功能。數(shù)字體溫計(jì)上有三個(gè)獨(dú)立按鍵,可以通過(guò)按鍵設(shè)置需要的體溫權(quán)限。一共設(shè)置了三個(gè)按鍵,一個(gè)是復(fù)位選擇按鍵,另外兩個(gè)是溫度上調(diào)和溫度下調(diào)按鍵。其次是復(fù)位電路上電復(fù)位和手動(dòng)復(fù)位。當(dāng)程序運(yùn)行外出現(xiàn)意外時(shí),可以手動(dòng)復(fù)位,所以不要重新啟動(dòng)電源的微控制器,也可以是復(fù)位。 電源模塊采用直流+5V電源輸入,符合單片機(jī)正常工作電壓范圍,為了考慮到使用便捷,采用USB方式供電,電流輸出穩(wěn)定,波動(dòng)小,同時(shí)使用USB供電使得數(shù)字體溫計(jì)有了很好的便攜性,有更好的應(yīng)用型還可以隨時(shí)方便測(cè)體溫,便于監(jiān)測(cè)。第四章 系統(tǒng)軟件設(shè)計(jì)軟件設(shè)計(jì)部分采用KeilC51單片機(jī)C語(yǔ)言來(lái)進(jìn)行設(shè)計(jì),使用這種語(yǔ)言在一定程度上可以更好地和單片機(jī)進(jìn)行兼容,簡(jiǎn)化軟件開(kāi)發(fā)。而且邏輯性更強(qiáng),減小操作過(guò)程中發(fā)生死循環(huán)的和失控的可能性。系統(tǒng)軟件程序包括主程序,溫度讀取程序,溫度轉(zhuǎn)換程序,溫度處理計(jì)算程序,顯示溫度程序,超出溫度報(bào)警程序。 KeilC51語(yǔ)言介紹Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),由兩家私營(yíng)公司,分別為美國(guó)的Keil軟件公司和德國(guó)的Keil Elektronik公司。是支持8051微控制器體系結(jié)構(gòu)的開(kāi)發(fā)工具,在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案,通過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境(uVision)將這些部分組合在一起。,包括ANSI C編譯器,宏匯編器,調(diào)試器聯(lián)合行動(dòng),鏈接器,庫(kù)管理器,固件和實(shí)時(shí)操作系統(tǒng)內(nèi)核(實(shí)時(shí)內(nèi)核)[8]。 Keil C51的優(yōu)勢(shì)與匯編語(yǔ)言相比,Keil C51語(yǔ)言在功能和結(jié)構(gòu)性上有明顯的優(yōu)勢(shì),并且具有可讀性和可維護(hù)性。Keil提供了很多功能,包括C語(yǔ)言,編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)系統(tǒng),通過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境將這些部分整合在一起。用C語(yǔ)言編程,那么使用Keil在軟件設(shè)計(jì)也有很多優(yōu)勢(shì)。即使不使用C語(yǔ)言而僅用匯編語(yǔ)言編程,它具有的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)讓你在設(shè)計(jì)中得心應(yīng)手,在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)[9]。Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,在調(diào)用函數(shù)過(guò)程中很方便。使用Keil C51生成的目標(biāo)代碼效率和質(zhì)量非常高,語(yǔ)句生成的匯編代碼結(jié)構(gòu)很緊湊,容易理解。主程序的主要功能是負(fù)責(zé)溫度信號(hào)的采集和溫度的實(shí)時(shí)顯示、讀出并處理DS18B20測(cè)量的當(dāng)前溫度值,溫度測(cè)量是實(shí)時(shí)進(jìn)行的,每經(jīng)過(guò)1s采集一次。這樣可以在一秒之內(nèi)迅速測(cè)量一次被測(cè)溫度,通過(guò)把采集到的信號(hào)傳輸給單片機(jī)進(jìn)行分析和處理,單片機(jī)進(jìn)行處理進(jìn)行溫度轉(zhuǎn)換,進(jìn)行溫度處理后然后在LCD1602上顯示,讀有出實(shí)時(shí)溫度,通過(guò)按鍵可以設(shè)置溫度區(qū)間,溫度超過(guò)設(shè)置的區(qū)間,啟動(dòng)蜂鳴器報(bào)警,便于及時(shí)監(jiān)測(cè)病人體溫變化。如下圖41為主程序流程圖:圖41主程序流程圖主函數(shù)如下,通過(guò)主函數(shù)調(diào)用各個(gè)子函數(shù),來(lái)實(shí)現(xiàn)體溫計(jì)功能void main(){ init_lcd()。 //初始化LCD TMOD=0X01。 //定時(shí)器0,方式1 TH0=0X3C。 //50ms溢出一次 TL0=0XB0。 TR0=1。 //啟動(dòng)定時(shí)器0 ET0=1。 //開(kāi)定時(shí)器0 EA=1。 //開(kāi)總中斷 while(1) { key()。 //調(diào)用按鍵函數(shù) baojing()。 //調(diào)用報(bào)警函數(shù) } }DS18B20是在一根線上實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,并且需要嚴(yán)格的通信協(xié)議來(lái)保證每位數(shù)據(jù)傳輸?shù)臏?zhǔn)確性和完整性,首先將DS18B20進(jìn)行初始化,復(fù)位DS18B20,然后單片機(jī)進(jìn)行等待DS18B20的應(yīng)答脈沖信號(hào),單片機(jī)檢測(cè)到應(yīng)答脈沖,便發(fā)起跳過(guò)ROM匹配操作命令,成功執(zhí)行ROM操作命令后,就可以使用內(nèi)存操作命令啟動(dòng)溫度轉(zhuǎn)換,延時(shí)一段時(shí)間后等待溫度轉(zhuǎn)換。然后再發(fā)起跳過(guò)ROM匹配操作命令,最后讀暫存器將轉(zhuǎn)換結(jié)果讀出,并轉(zhuǎn)換為顯示碼傳送給液晶顯示。 當(dāng)DS18B20采集到溫度信號(hào)以后,傳送給單片機(jī)進(jìn)行處理,單片機(jī)處理以后進(jìn)行溫度信號(hào)的轉(zhuǎn)換。執(zhí)行讀溫度子程序,其主要功能是負(fù)責(zé)讀出RAM中的9字節(jié),在讀取過(guò)程需進(jìn)行CRC校驗(yàn),當(dāng)檢測(cè)到校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫(xiě)。其程序流程圖如圖42所示42讀溫度子程序圖void reset() //DS18B20的復(fù)位函數(shù){ uchar x=0。DQ=1。 //使總線為高電平delay1(8)。 //延時(shí)DQ=0。 //使總線為低電平delay1(80)。 //延時(shí),大于480usDQ=1。 //使總線為高電平delay1(14)。 //延時(shí),等待DS18B20回應(yīng)低電平x=DQ。 //將DS18B20的回應(yīng)讀到變量x,用于判斷復(fù)位delay1(20)。 //延時(shí)一段時(shí)間結(jié)束}void writecmd(uchar cmd) //DS18B20的寫(xiě)字節(jié)函數(shù){uchar i=0。 //定義位循環(huán)變量for(i=8。i0。i) //循環(huán)8次 { DQ=0。//總線拉低 DQ=cmdamp。0x01。//將發(fā)送字節(jié)的最低位送到總線 delay1(5)。//延時(shí)(30us),等待DS18B20取走總線數(shù)據(jù) DQ=1;//總線拉高 cmd=1。//將待發(fā)送的字節(jié)右移后,繼續(xù)發(fā)送 }}uchar readdat()//DS18B20的讀字節(jié)函數(shù){ uchar i=0。//定義位循環(huán)變量 uchar temp=0。//定義暫存變量 for(i=8。i0。i)//循環(huán)8次 { DQ=0。//總線為低電平 temp=1。//暫存變量右移 DQ=1。//總線拉高,執(zhí)行如下的讀操作 if(DQ)//如果DS18B20輸出高電平 temp|=0x80。//將暫存變量的最高位置1 delay1(4)。//延時(shí)一段時(shí)間 } return temp。//程序結(jié)束后,將暫存變量返回調(diào)用程序} 該設(shè)計(jì)通過(guò)按鍵設(shè)定體溫區(qū)間,設(shè)定三個(gè)按鍵,一個(gè)是選擇按鍵兼復(fù)位按鍵,另外的一個(gè)是溫度向上調(diào)節(jié),另外一個(gè)是溫度下調(diào),通過(guò)三個(gè)按鍵設(shè)置報(bào)警溫度區(qū)間。所以在程序編寫(xiě)上也是體現(xiàn)了按鍵的功能,在軟件設(shè)計(jì)中,按鍵按一次,進(jìn)行延時(shí),LCD光標(biāo)閃爍進(jìn)行選擇,再按一次按鍵, 因?yàn)闇囟绒D(zhuǎn)換命令子程序主要是指溫度轉(zhuǎn)換開(kāi)始命令,所以當(dāng)采用12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如下圖43所示,圖43溫度轉(zhuǎn)換命令子程序key(){ if(XuanZe==0)//如果選擇鍵按下{delay(50)。//延時(shí)消抖if(XuanZe==0)//如果按鍵還處于按下?tīng)顟B(tài) { num++。//次數(shù)加1 while(!XuanZe)。//等待按鍵抬起; if(num==1)//如果按下選擇鍵的次數(shù)為1 { TR0=0。//關(guān)閉中斷 write_(0x80+0x00+5)。//光標(biāo)移到第一行第七個(gè)位置 write_(0x0f)。//設(shè)置為顯示開(kāi),開(kāi)光標(biāo),閃爍 } if(num==2)// 如果按下選擇鍵的次數(shù)為2 { write_(0x80+0x00+13)。//光標(biāo)移到第一行第十五個(gè)位置 } if(num==3)//如果按下選擇鍵的次數(shù)為3 { num=0。//次數(shù)清零 write_(0x0c)。//設(shè)置為顯示開(kāi),關(guān)光標(biāo),不閃爍 TR0=1。//開(kāi)中斷 } } }if(num!=0)//在選擇鍵按下時(shí){ if(up==0)if(num==1)//如果按下選擇鍵的次數(shù)為1{TR0=0。//關(guān)閉中斷write_(0x80+0x00+5)。//光標(biāo)移到第一行第七個(gè)位置write_(0x0f)。//設(shè)置為顯示開(kāi),開(kāi)光標(biāo),閃爍}if(num==2)//如果按下選擇鍵的次數(shù)為2{write_(0x80+0x00+13)。//光標(biāo)移到第一行第十五個(gè)位置}if(num==3)//如果按下選擇鍵的次數(shù)為3{num=0。//次數(shù)清零write_(0x0c)。//設(shè)置為顯示開(kāi),關(guān)光標(biāo),不閃爍TR0=1。//開(kāi)中斷}}} 計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖44所示圖44計(jì)算溫度子程序程序如下:void timer0() interrupt 1//定時(shí)器0中斷,中斷標(biāo)號(hào)為1{uint result。TH0=0X3C。TL0=0XB0。timecount++。//每中斷一次,time count加1if(time count==20)//中斷定時(shí)達(dá)到1S,50ms*20=1s{time count=0。// time count清零reset()。//復(fù)位DS18B20Write cmd(0xcc)。//
點(diǎn)擊復(fù)制文檔內(nèi)容
物理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1