酒精測(cè)試儀-51單片機(jī)課程設(shè)計(jì)(完整版)資料_第1頁
酒精測(cè)試儀-51單片機(jī)課程設(shè)計(jì)(完整版)資料_第2頁
酒精測(cè)試儀-51單片機(jī)課程設(shè)計(jì)(完整版)資料_第3頁
酒精測(cè)試儀-51單片機(jī)課程設(shè)計(jì)(完整版)資料_第4頁
酒精測(cè)試儀-51單片機(jī)課程設(shè)計(jì)(完整版)資料_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

酒精測(cè)試儀--51單片機(jī)課程設(shè)計(jì)(完整版)資料(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)

酒精測(cè)試儀--51單片機(jī)課程設(shè)計(jì)(完整版)資料(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)課程設(shè)計(jì)說明書課程設(shè)計(jì)名稱單片機(jī)原理及應(yīng)用課程設(shè)計(jì)專業(yè)電子信息工程班級(jí)學(xué)號(hào)學(xué)生姓名指導(dǎo)教師課程設(shè)計(jì)任務(wù)書課程設(shè)計(jì)題目酒精測(cè)試儀起止日期2021年12月26日—2021年1月6日設(shè)計(jì)地點(diǎn)計(jì)算機(jī)科學(xué)與工程學(xué)院?jiǎn)纹瑱C(jī)實(shí)驗(yàn)室3409設(shè)計(jì)任務(wù)及日程安排:設(shè)計(jì)任務(wù):分兩部分:(一)、設(shè)計(jì)實(shí)現(xiàn)類:進(jìn)行軟、硬件設(shè)計(jì),并上機(jī)編程、聯(lián)線、調(diào)試、實(shí)現(xiàn);1.電子鐘的設(shè)計(jì)2.交通燈的設(shè)計(jì)3.溫度計(jì)的設(shè)計(jì)4.點(diǎn)陣顯示5.電機(jī)調(diào)速6.電子音樂發(fā)聲(自己選曲)7.鍵盤液晶顯示系統(tǒng)(二)、應(yīng)用系統(tǒng)設(shè)計(jì)類:不須上機(jī),查資料完成軟、硬件設(shè)計(jì)畫圖。查資料選定題目。說明:第1--7題任選其二即可。(二)里題目自擬。日程安排:本次設(shè)計(jì)共二周時(shí)間,日程安排如下:第1天:查閱資料,確定題目。第2--4天:進(jìn)實(shí)驗(yàn)室做實(shí)驗(yàn),連接硬件并編寫程序作相關(guān)的模塊實(shí)驗(yàn)。第5--7天:編寫程序,并調(diào)試通過。觀察及總結(jié)硬件實(shí)驗(yàn)現(xiàn)象和結(jié)果。第8--9天:整理資料,撰寫課程設(shè)計(jì)報(bào)告,準(zhǔn)備答辯。第10天:上交課程設(shè)計(jì)報(bào)告,答辯。設(shè)計(jì)報(bào)告要求:1.設(shè)計(jì)報(bào)告里有兩個(gè)內(nèi)容,自選題目?jī)?nèi)容+附錄(實(shí)驗(yàn)內(nèi)容),每位同學(xué)獨(dú)立完成。2.自選題目不須上機(jī)實(shí)現(xiàn),要求能正確完成硬件電路和軟件程序設(shè)計(jì)。內(nèi)容包括:1)設(shè)計(jì)題目、任務(wù)與要求2)硬件框圖與電路圖3)軟件及流程圖(a)主要模塊流程圖(b)源程序清單與注釋4)總結(jié)5)參考資料6)附錄實(shí)驗(yàn)上機(jī)調(diào)試內(nèi)容注:此任務(wù)書由指導(dǎo)教師在課程設(shè)計(jì)前填寫,發(fā)給學(xué)生做為本門課程設(shè)計(jì)的依據(jù)。目錄第一部分:自主設(shè)計(jì)課設(shè):酒精測(cè)試儀 11總體方案設(shè)計(jì) 11.1設(shè)計(jì)要求 11.2優(yōu)點(diǎn)及意義 11.3系統(tǒng)硬件電路設(shè)計(jì) 11.4初步設(shè)計(jì)思路 22硬件電路設(shè)計(jì) 22.1酒精檢測(cè)模塊 22.2顯示模塊 22.3報(bào)警模塊 32.4CPU控制模塊 43應(yīng)用軟件設(shè)計(jì) 53.1主程序設(shè)計(jì) 53.2子程序設(shè)計(jì) 6顯示子程序設(shè)計(jì) 6報(bào)警子程序設(shè)計(jì) 7酒精檢測(cè)子程序設(shè)計(jì) 84系統(tǒng)調(diào)試與性能分析 84.1開機(jī)界面 84.2濃度判斷 84.3閾值修改 9總結(jié): 9參考文獻(xiàn) 9附錄 10附錄A硬件電路圖 10附錄B程序清單 11第二部分:課堂設(shè)計(jì)內(nèi)容:溫度測(cè)量系統(tǒng) 161實(shí)驗(yàn)?zāi)康?162實(shí)驗(yàn)內(nèi)容 163實(shí)驗(yàn)原理 164實(shí)驗(yàn)步驟 165流程圖: 176程序清單: 18第一部分:自主設(shè)計(jì)課設(shè):酒精測(cè)試儀1總體方案設(shè)計(jì)1.1設(shè)計(jì)要求本課題要求以單片機(jī)為核心,設(shè)計(jì)一個(gè)酒精測(cè)試儀,由四部分組成:酒精檢測(cè)模塊,顯示模塊,報(bào)警模塊,CPU控制模塊。CPU控制模塊采用STC89C52單片機(jī)進(jìn)行控制。酒精傳感器采用MQ-Sensor傳感器模塊和ADC0809模數(shù)轉(zhuǎn)換模塊用于對(duì)人呼出酒精氣體的酒精度檢測(cè),顯示模塊采用1602液晶顯示,報(bào)警電路采用蜂鳴器。要求酒精測(cè)試儀有以下功能:酒精濃度通過1602液晶顯示模塊顯示出來酒精濃度超過設(shè)定的閾值則蜂鳴器發(fā)聲進(jìn)行報(bào)警。1.2優(yōu)點(diǎn)及意義本課題采用51單片機(jī)進(jìn)行控制,51單片機(jī)具有體積小、運(yùn)行速度快的特點(diǎn),用其作為主控芯片進(jìn)行控制會(huì)十分的方便。使用MQ-Sensor氣體傳感器模塊能夠快速,準(zhǔn)確的檢測(cè)到酒精濃度,使用1602模塊進(jìn)行顯示,直觀,方便。1.3系統(tǒng)硬件電路設(shè)計(jì)系統(tǒng)硬件設(shè)計(jì)框圖。根據(jù)設(shè)計(jì)要求,確定系統(tǒng)的設(shè)計(jì)方案,硬件由四部分組成。采用STC89c52單品機(jī)為CPU控制模塊,以MQ-Sensor傳感器模塊和ADC0809模塊組成檢測(cè)模塊,以1602液晶顯示組成顯示模塊,以蜂鳴器組成報(bào)警模塊。CPU處理模塊STC89c52報(bào)警模塊蜂鳴器檢測(cè)模塊MQ-Sensor+adc0809顯示模塊1602液晶屏CPU處理模塊STC89c52報(bào)警模塊蜂鳴器檢測(cè)模塊MQ-Sensor+adc0809顯示模塊1602液晶屏1.4初步設(shè)計(jì)思路定義三組數(shù)組表,方便1602顯示時(shí)進(jìn)行調(diào)用將adc0809的數(shù)據(jù)輸出端接在單片機(jī)的P2口將MQ-Sensor酒精傳感器的TTL輸出端接在單片機(jī)P1.7口,將AO模擬量輸出端接到adc0809的IN0通道。將1602的數(shù)據(jù)輸入端接到單片機(jī)P0口將蜂鳴器接到單片機(jī)P3.3口。2硬件電路設(shè)計(jì)2.1酒精檢測(cè)模塊傳感器模塊采用MQ-Sensor酒精傳感器,其模擬量輸送給ADC0809進(jìn)行模數(shù)轉(zhuǎn)換,將輸出數(shù)據(jù)發(fā)給單片機(jī)。電路中酒精檢測(cè)傳感器的模擬量輸出端接在adc0809的IN0通道。Adc0809的start引腳接到單片機(jī)的P1^2口,oe引腳接到單片機(jī)的p1^0引腳上,EOC引腳接到了單片機(jī)的p1^1口,ciock時(shí)鐘信號(hào)接到了單片機(jī)的P1^6引腳上。數(shù)字量輸出端接到了單片機(jī)的P2口。將傳感器采集到的酒精濃度經(jīng)過adc0809輸送到單片機(jī)中。2.2顯示模塊顯示模塊采用1602液晶顯示屏進(jìn)行顯示,液晶顯示具有低功耗,應(yīng)用接口少,顯示量大的特點(diǎn),所以應(yīng)用很廣。將單片機(jī)收到adc0809數(shù)字量發(fā)送給1602中,進(jìn)行顯示。將1602的數(shù)據(jù)輸入端接到單片機(jī)的P0口,RS引腳接到單片機(jī)的P3^5口,將EN使能接口接到單片機(jī)的P3^4口,單片機(jī)發(fā)送數(shù)據(jù)給1602,1602進(jìn)行顯示酒精的濃度。2.3報(bào)警模塊報(bào)警模塊采用蜂鳴器進(jìn)行報(bào)警,直觀,方便將蜂鳴器接到單片機(jī)的P3^3口,當(dāng)酒精檢測(cè)傳感器模塊TTL電平輸出端時(shí)證明酒精濃度已經(jīng)超過了閾值,則啟動(dòng)報(bào)警,給蜂鳴器以低電平,蜂鳴器響。否則,給蜂鳴器低電平,蜂鳴器不響。2.4CPU控制模塊CPU采用STC89c52單片機(jī),負(fù)責(zé)整套系統(tǒng)的運(yùn)行。它包含時(shí)鐘電路和復(fù)位電路。時(shí)鐘電路單片機(jī)工作的時(shí)間基準(zhǔn)是由時(shí)鐘電路提供的,在單片機(jī)的XTAL1和XTAL2兩個(gè)引腳間,接一只晶振及兩只電容就構(gòu)成了單片機(jī)的時(shí)鐘電路。電路中,電容器C1和C2對(duì)振蕩頻率有微調(diào)作用,同時(shí)幫助晶振起振,通常取值范圍在22±0.1PF,一般晶振為11.0592MHZ,電容取22PF。石英晶體選擇11.0592MHZ。復(fù)位電路單片機(jī)系統(tǒng)的復(fù)位電路在可以采用的是按鈕式上電復(fù)位電路形式,其中電阻R采用10KΩ的阻值,電容采22μF的電容值。3應(yīng)用軟件設(shè)計(jì)3.1主程序設(shè)計(jì)酒精測(cè)試儀的基本功能是通過酒精傳感器采集到氣體的酒精濃度,之后經(jīng)過ADC0809數(shù)模轉(zhuǎn)換發(fā)送給單片機(jī),之后單片機(jī)發(fā)送給1602液晶進(jìn)行顯示。當(dāng)檢測(cè)到的酒精濃度值超過了所設(shè)計(jì)的閾值,則酒精傳感器模塊將輸出低電平,將其接到單片機(jī)P1^7引腳上,當(dāng)單片機(jī)檢測(cè)到該引腳為低電平時(shí),則驅(qū)動(dòng)蜂鳴器發(fā)生進(jìn)行報(bào)警。流程圖:開始開始系統(tǒng)初始化檢測(cè)酒精濃度是否超過設(shè)定值聲報(bào)警1602顯示酒精濃度結(jié)束否是3.2子程序設(shè)計(jì)采用1602液晶屏進(jìn)行顯示,將液晶數(shù)據(jù)輸入端接到單片機(jī)P0口,單片機(jī)驅(qū)動(dòng)液晶進(jìn)行顯示。流程圖:開始開始LCD初始化寫入地址數(shù)據(jù)忙碌標(biāo)志位檢查寫入顯示數(shù)據(jù)結(jié)束否是報(bào)警電路采用蜂鳴器進(jìn)行報(bào)警,當(dāng)酒精濃度超過了設(shè)定值,則蜂鳴器發(fā)聲進(jìn)行報(bào)警,將蜂鳴器接到單片機(jī)的P3^3引腳。流程圖:開始開始初始化引腳是否為低電平蜂鳴器發(fā)生結(jié)束是否酒精檢測(cè)模塊采用MQ-Snsor酒精氣體傳感器和ADC0809組成,將采集到的酒精濃度經(jīng)過模數(shù)轉(zhuǎn)換器發(fā)給單片機(jī)。流程圖:開始開始?xì)怏w檢測(cè)Adc0809模數(shù)轉(zhuǎn)換發(fā)送給單片機(jī)結(jié)束4系統(tǒng)調(diào)試與性能分析4.1開機(jī)界面開機(jī)之后1602界面顯示,酒精檢測(cè)模塊氣體中酒精度發(fā)送給單片機(jī)。4.2濃度判斷當(dāng)檢測(cè)到的酒精濃度大于設(shè)定的閾值時(shí),則單片機(jī)驅(qū)動(dòng)蜂鳴器發(fā)生進(jìn)行報(bào)警,提示檢測(cè)者酒精濃度已經(jīng)超標(biāo)。4.3閾值修改(1)硬件修改通過改變酒精傳感器的電阻值來改變傳感器對(duì)氣體酒精度的檢測(cè)靈敏度,來修改閾值。(2)軟件修改通過對(duì)系統(tǒng)運(yùn)行程序進(jìn)行閾值設(shè)定,檢測(cè)到的酒精濃度,進(jìn)行人為的軟件設(shè)定閾值,進(jìn)行判別??偨Y(jié):本作品針對(duì)生活中因醉酒駕駛引發(fā)交通事故日益嚴(yán)重,明確研究方向,制定計(jì)劃方案。深入研究酒精傳感器、模數(shù)轉(zhuǎn)換器等器件原理,查閱相關(guān)酒駕標(biāo)準(zhǔn)。為制作出滿足實(shí)際要求的作品,做好充分的準(zhǔn)備。在此期間所遇到的問題,通過最有效、最準(zhǔn)確的渠道進(jìn)行解決,為成功掃清障礙。隨著對(duì)單片機(jī)、ADC0809、LCD顯示器的加深了解,對(duì)信號(hào)采集和數(shù)據(jù)算法處理的進(jìn)一步學(xué)習(xí);加入溫度、濕度和氣壓的影響,在現(xiàn)有基礎(chǔ)上進(jìn)行改進(jìn),一定會(huì)使測(cè)得的數(shù)據(jù)更加準(zhǔn)確,使作品與預(yù)期目標(biāo)更接近。使其能成為商品,進(jìn)入家庭,實(shí)現(xiàn)我們以此為課題的最終目的。參考文獻(xiàn)[1]單成祥.傳感器的理論與設(shè)計(jì)基礎(chǔ)及其應(yīng)用[M].北京:國(guó)防工業(yè)出版社,[2]張福學(xué).現(xiàn)代傳感器電路[M].北京:中國(guó)計(jì)量出版社,2000,441[3]吳興惠,王彩君.傳感器與信號(hào)傳感器[M].北京:電子工業(yè)出版社,1998[4]萬隆,巴奉麗.單片機(jī)原理及應(yīng)用技術(shù)[M].北京:清華大學(xué)出版社,2021[5]湯竟南,沈國(guó)琴.51單片機(jī)C語言開發(fā)與實(shí)例[M].人民郵電出版社[6]雷伏容,張小林,崔浩.51單片機(jī)常用模塊設(shè)計(jì)查詢手冊(cè)[M].北京:清華大學(xué)出版社,2021[7]韓成,張延拿了就用單片機(jī)[M].北京:人民郵電出版社,2021[8]趙建領(lǐng).51系列單片機(jī)開發(fā)寶典[M].北京:電子工業(yè)出版社,2007-04[9]張毅剛單片機(jī)原理及接口技術(shù):人民郵電出版社附錄附錄A硬件電路圖附錄B程序清單/*****************************************************///項(xiàng)目名稱:酒精測(cè)試儀//程序內(nèi)容:通過酒精模塊將采集到的酒精濃度顯示到1602上//如果濃度超過設(shè)定值,則進(jìn)行報(bào)警。/*****************************************************/#include<reg52.h>//頭文件#defineucharunsignedchar //宏定義無符號(hào)字符型#defineuintunsignedint //宏定義無符號(hào)整型ucharcodetable[]="0123456789";ucharcodetable1[]="voltage:";ucharcodetable2[]="alcoholtester"; //位控制碼sbitST=P1^2;//A/D啟動(dòng)轉(zhuǎn)換信號(hào)sbitOE=P1^0;//數(shù)據(jù)輸出允許信號(hào)sbitEOC=P1^3;//A/D轉(zhuǎn)換結(jié)束信號(hào)sbitCLK=P1^6;//時(shí)鐘脈沖sbitdula=P2^6;sbitwela=P2^7;sbitrs=P3^5;sbitlcden=P3^4;sbitDOUT=P1^7; sbitbeep=P3^3; uintz,x,c,v,AD0809,date,a,i; //定義數(shù)據(jù)類型voidyanshi(ucharz) //延時(shí)子函數(shù){ uintx,y; x=0; y=0; for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddelay(uintx) //延時(shí)函數(shù),參數(shù)x{ uinta,b; for(a=x;a>0;a--){ for(b=10;b>0;b--){;}}}/**************************************************//*函數(shù)名稱:write_com*//*函數(shù)描述:1602寫命令函數(shù)*//*輸入?yún)?shù):com*//*參數(shù)描述:控制命令*//*返回值:無*//**************************************************/voidwrite_com(ucharcom){ P0=com; rs=0; lcden=0; delay(10); lcden=1; delay(10); lcden=0; }/**************************************************//*函數(shù)名稱:write_date*//*函數(shù)描述:1602寫數(shù)據(jù)函數(shù)*//*輸入?yún)?shù):date*//*參數(shù)描述:要寫入的數(shù)據(jù)*//*返回值:無*//**************************************************/voidwrite_date(uchardate){ P0=date; rs=1; lcden=0; delay(10); lcden=1; delay(10); lcden=0; }voidinitLCD(void) //1602初始化函數(shù){ dula=0; wela=0; write_com(0x38); delay(20); write_com(0x0f); delay(20); write_com(0x06); delay(20); write_com(0x01); delay(20); }/***********************************************液晶顯示程序***********************************************/voidxianshi()//顯示函數(shù){uintz,x,c,v;z=date/1000; //求千位x=date%1000/100; //求百位c=date%100/10; //求十位v=date%10; //求個(gè)位for(a=20;a>0;a--)//液晶1602顯示{ write_com(0x80+0x40+9); write_date(table[z]); write_com(0x80+0x40+10); write_date(table[x]); write_com(0x80+0x40+11); write_date('.'); write_com(0x80+0x40+12); write_date(table[c]); write_com(0x80+0x40+13); write_date(table[v]);} }/***************************************CLK振蕩信號(hào) ****************************************/voidtimer0()interrupt1//定時(shí)器0工作方式1{TH0=(65536-2)/256; //重裝計(jì)數(shù)初值TL0=(65536-2)%256; //重裝計(jì)數(shù)初值CLK=!CLK; //取反}/****************************************主函數(shù) *****************************************/voidmain(){TMOD=0X01; //定時(shí)器中斷0CLK=0; //脈沖信號(hào)初始值為0TH0=(65536-2)/256; //定時(shí)時(shí)間高八位初值TL0=(65536-2)%256; //定時(shí)時(shí)間低八位初值EA=1; //開CPU中斷ET0=1; //開T/C0中斷TR0=1;initLCD();write_com(0x80); for(i=0;i<16;i++) { write_date(table2[i]); } yanshi(5); write_com(0x80+0x40); for(i=0;i<8;i++) { write_date(table1[i]); } while(1) //無限循環(huán) { beep=1; ST=0; //使采集信號(hào)為低 ST=1; //開始數(shù)據(jù)轉(zhuǎn)換 ST=0; //停止數(shù)據(jù)轉(zhuǎn)換 while(!EOC); //等待數(shù)據(jù)轉(zhuǎn)換完畢 OE=1; //允許數(shù)據(jù)輸出信號(hào) AD0809=P1; //讀取數(shù)據(jù) OE=0; //關(guān)閉數(shù)據(jù)輸出允許信號(hào) if(AD0809>=251) //電壓顯示不能超過5V AD0809=250; date=AD0809*20; xianshi(); //液晶顯示顯示函數(shù)if(DOUT==0)//當(dāng)濃度高于設(shè)定值時(shí),執(zhí)行條件函數(shù) { yanshi(5);//延時(shí)抗干擾 if(DOUT==0)//確定濃度高于設(shè)定值時(shí),執(zhí)行條件函數(shù) {beep=0; yanshi(2000); beep=1; } }}} 第二部分:課堂設(shè)計(jì)內(nèi)容:溫度測(cè)量系統(tǒng)1實(shí)驗(yàn)?zāi)康母鶕?jù)溫度控制系統(tǒng)的要求和特點(diǎn),設(shè)計(jì)了一種基于51單片機(jī)的溫度顯示系統(tǒng)。該系統(tǒng)以單片機(jī)為控制核心,結(jié)合外圍信號(hào)采集電路、LCD顯示電路、報(bào)警電路,實(shí)現(xiàn)對(duì)溫度的測(cè)量報(bào)警控制。2實(shí)驗(yàn)內(nèi)容由單片機(jī)最小系統(tǒng)、LCD液晶顯示電路、報(bào)警電路、溫度傳感器。等四部分組成。3實(shí)驗(yàn)原理將溫度傳感器采集的數(shù)據(jù)輸入單片機(jī),單片機(jī)與程序內(nèi)預(yù)先設(shè)定好電壓閾值進(jìn)行比較,如果溫度數(shù)據(jù)大于所設(shè)定的溫度閾值,則蜂鳴器發(fā)生進(jìn)行報(bào)警,整個(gè)過程LCD實(shí)時(shí)顯示:溫度閾值、實(shí)際溫度值。4實(shí)驗(yàn)步驟主程序主要完成初始化、以及調(diào)用顯示、指示燈、溫度采集等等。具體模塊包括:顯示程序設(shè)計(jì)溫度采集程序設(shè)計(jì)溫度處理程序設(shè)計(jì)顯示程序設(shè)計(jì)主要將幾個(gè)數(shù)組的內(nèi)容通過LCD1602的寫數(shù)據(jù)指令顯示在LCD屏上。溫度采集程序通過18B20溫度傳感器實(shí)時(shí)采集溫度并發(fā)送給單片機(jī)。溫度處理程序設(shè)計(jì)將采集到的實(shí)時(shí)溫度與設(shè)定溫度閾值進(jìn)行比較,如果溫度大于預(yù)先設(shè)定的閾值,則蜂鳴器發(fā)生進(jìn)行報(bào)警。5流程圖:開始開始溫度檢測(cè)是否大于設(shè)定值聲報(bào)警1602液晶顯示結(jié)束否是6程序清單://將DS18B20所采集到的溫度實(shí)時(shí)顯示到1602上。//溫度超過閾值則報(bào)警#include<reg52.H>#include<intrins.H>#include<math.H>#defineucharunsignedchar#defineuintunsignedint //宏定義ucharvalue,aa;unsignedinttmp;sbitdula=P2^6; //數(shù)碼管段選引腳sbitwela=P2^7; //數(shù)碼管位選引腳sbitds=P2^2; //18b20引腳定義sbitRS=P3^5;sbitLCDEN=P3^4; //1602引腳定義sbitbeep=P2^3;voiddelayUs() //延時(shí)函數(shù){ _nop_(); //延時(shí)一個(gè)機(jī)器周期 ,包含在intrins.h文件中}voiddelayMs(uinta) //延時(shí)函數(shù),參數(shù)a{ uinti,j; for(i=a;i>0;i--) for(j=100;j>0;j--);}voidwriteComm(ucharcomm) //寫命令{ RS=0; //寫命令是RS需給低電平 P0=comm; LCDEN=1; //寫命令時(shí)LCDEN需給高電平 delayUs(); //延時(shí)一個(gè)機(jī)器周期 LCDEN=0; delayMs(1);}voidwriteData(uchardat)//寫數(shù)據(jù):RS=1,RW=0; { RS=1; //寫數(shù)據(jù)時(shí)RS=1 P0=dat; LCDEN=1; //寫數(shù)據(jù)時(shí)LCDEN=1 delayUs(); //延時(shí)一個(gè)機(jī)器周期 LCDEN=0; delayMs(1);}voidinit() //初值函數(shù){ dula=wela=0; //段選,位選清零,數(shù)碼管不顯示 writeComm(0x38); writeComm(0x0c); writeComm(0x06); writeComm(0x01); //1602的命令初始化}voidwriteString(uchar*str,ucharlength) //將數(shù)據(jù)一個(gè)接著一個(gè)的寫入1602中{ uchari; for(i=0;i<length;i++) { writeData(str[i]); //將數(shù)組中數(shù)據(jù)以循環(huán)的方式寫入到1602中 } }voiddsInit() //DS18B20溫度初值函數(shù){ unsignedinti; ds=0; i=100; while(i>0)i--; //延時(shí) ds=1; i=4; while(i>0)i--; //延時(shí)}voiddsWait() //等待函數(shù){ unsignedinti; while(ds); while(~ds); i=4; while(i>0)i--;}bitreadBit() //bit函數(shù)返回值只能是0,1讀一位數(shù)據(jù)函數(shù){ unsignedinti; bitb; //bit只定義一位0,1 ds=0; i++; //起到延時(shí)作用 ds=1; i++;i++; b=ds; i=8; while(i>0)i--; returnb; //返回b,0,1}unsignedcharreadByte() //讀一位字節(jié)數(shù)據(jù)函數(shù){ unsignedinti; unsignedcharj,dat; dat=0; for(i=0;i<8;i++) { j=readBit();dat=(j<<7)|(dat>>1); //位或運(yùn)算,讀出的數(shù)據(jù)最低位在最前//面,這樣剛好一個(gè)字節(jié)在dat里 } returndat;}voidwriteByte(unsignedchardat) //向18b20寫一個(gè)字節(jié)數(shù)據(jù)函數(shù){ unsignedinti; unsignedcharj; bitb; for(j=0;j<8;j++) { b=dat&0x01; dat>>=1; //對(duì)dat右移一位,將值賦給dat if(b) //寫1 { ds=0; i++;i++; ds=1; i=8; while(i>0)i--; } else { ds=0; //寫0 i=8; while(i>0)i--; ds=1; i++;i++; } }}voidsendChangeCmd() //DS18B20開始獲取溫度并轉(zhuǎn)換{ dsInit(); //DS18B20溫度初值 dsWait(); //等待函數(shù) delayMs(1); //延時(shí) writeByte(0xcc); //向18b20寫一個(gè)字節(jié)數(shù)據(jù)函數(shù),寫跳過讀ROM指令 writeByte(0x44); //向18b20寫一個(gè)字節(jié)數(shù)據(jù)函數(shù),寫溫度轉(zhuǎn)換指令}voidsendReadCmd() //讀取寄存器中存儲(chǔ)的溫度數(shù)據(jù){ dsInit(); //DS18B20溫度初值 dsWait(); //等待函數(shù) delayMs(1); //延時(shí) writeByte(0xcc); writeByte(0xbe);}intgetTmpValue(){ unsignedinttmpvalue; intvalue; f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論