51單片機課程設(shè)計_第1頁
51單片機課程設(shè)計_第2頁
51單片機課程設(shè)計_第3頁
51單片機課程設(shè)計_第4頁
51單片機課程設(shè)計_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課 程 設(shè) 計 說 明 書課程設(shè)計名稱 單片機原理及應(yīng)用課程設(shè)計 專 業(yè) 電子信息工程 班 級 學(xué) 號 學(xué)生姓名 李延琦 指導(dǎo)教師 胡黃水 2016 年 12 月 26 日課 程 設(shè) 計 任 務(wù) 書課程設(shè)計題目酒精測試儀起止日期2016年 12月 26 日 2017 年1月6日設(shè)計地點計算機科學(xué)與工程學(xué)院單片機實驗室3409設(shè)計任務(wù)及日程安排:設(shè)計任務(wù):分兩部分:(一)、設(shè)計實現(xiàn)類:進行軟、硬件設(shè)計,并上機編程、聯(lián)線、調(diào)試、實現(xiàn);1.電子鐘的設(shè)計 2.交通燈的設(shè)計 3.溫度計的設(shè)計 4.點陣顯示 5.電機調(diào)速6.電子音樂發(fā)聲(自己選曲) 7.鍵盤液晶顯示系統(tǒng)(二)、應(yīng)用系統(tǒng)設(shè)計類:不須上機,查

2、資料完成軟、硬件設(shè)計畫圖。查資料選定題目。說明:第1-7題任選其二即可。(二)里題目自擬。日程安排:本次設(shè)計共二周時間,日程安排如下:第1天:查閱資料,確定題目。第2-4天:進實驗室做實驗,連接硬件并編寫程序作相關(guān)的模塊實驗。第5-7天:編寫程序,并調(diào)試通過。觀察及總結(jié)硬件實驗現(xiàn)象和結(jié)果。第8-9天:整理資料,撰寫課程設(shè)計報告,準(zhǔn)備答辯。第10天:上交課程設(shè)計報告,答辯。設(shè)計報告要求:1. 設(shè)計報告里有兩個內(nèi)容,自選題目內(nèi)容+附錄(實驗內(nèi)容),每位同學(xué)獨立完成。2. 自選題目不須上機實現(xiàn),要求能正確完成硬件電路和軟件程序設(shè)計。內(nèi)容包括:1) 設(shè)計題目、任務(wù)與要求 2)硬件框圖與電路圖 3) 軟

3、件及流程圖 (a)主要模塊流程圖 (b)源程序清單與注釋4) 總結(jié) 5) 參考資料 6)附錄 實驗上機調(diào)試內(nèi)容注:此任務(wù)書由指導(dǎo)教師在課程設(shè)計前填寫,發(fā)給學(xué)生做為本門課程設(shè)計的依據(jù)。目錄第一部分:自主設(shè)計課設(shè):酒精測試儀11 總體方案設(shè)計11.1 設(shè)計要求11.2優(yōu)點及意義11.3 系統(tǒng)硬件電路設(shè)計11.4初步設(shè)計思路22 硬件電路設(shè)計22.1酒精檢測模塊22.2顯示模塊22.3報警模塊32.4 CPU控制模塊43應(yīng)用軟件設(shè)計53.1 主程序設(shè)計53.2 子程序設(shè)計63.2.1 顯示子程序設(shè)計63.2.2報警子程序設(shè)計73.2.3 酒精檢測子程序設(shè)計84 系統(tǒng)調(diào)試與性能分析84.1 開機界面8

4、4.2 濃度判斷84.3 閾值修改9總結(jié):9參考文獻9附錄10附錄A 硬件電路圖10附錄B 程序清單11第二部分:課堂設(shè)計內(nèi)容:溫度測量系統(tǒng)161 實驗?zāi)康?62實驗內(nèi)容163實驗原理164實驗步驟165 流程圖:176 程序清單:18第一部分:自主設(shè)計課設(shè):酒精測試儀1 總體方案設(shè)計1.1 設(shè)計要求 本課題要求以單片機為核心,設(shè)計一個酒精測試儀,由四部分組成:酒精檢測模塊,顯示模塊,報警模塊,CPU控制模塊。CPU控制模塊采用STC89C52單片機進行控制。酒精傳感器采用MQ-Sensor傳感器模塊和ADC0809模數(shù)轉(zhuǎn)換模塊用于對人呼出酒精氣體的酒精度檢測,顯示模塊采用1602液晶顯示,報

5、警電路采用蜂鳴器。要求酒精測試儀有以下功能:(1) 酒精濃度通過1602液晶顯示模塊顯示出來(2) 酒精濃度超過設(shè)定的閾值則蜂鳴器發(fā)聲進行報警。1.2優(yōu)點及意義本課題采用51單片機進行控制,51單片機具有體積小、運行速度快的特點,用其作為主控芯片進行控制會十分的方便。使用MQ-Sensor氣體傳感器模塊能夠快速,準(zhǔn)確的檢測到酒精濃度,使用1602模塊進行顯示,直觀,方便。1.3 系統(tǒng)硬件電路設(shè)計系統(tǒng)硬件設(shè)計框圖。根據(jù)設(shè)計要求,確定系統(tǒng)的設(shè)計方案,硬件由四部分組成。采用STC89c52單品機為CPU控制模塊,以MQ-Sensor傳感器模塊和ADC0809模塊組成檢測模塊,以1602液晶顯示組成顯

6、示模塊,以蜂鳴器組成報警模塊。CPU處理模塊STC89c52報警模塊蜂鳴器檢測模塊MQ-Sensor+adc0809顯示模塊1602液晶屏1.4初步設(shè)計思路(1) 定義三組數(shù)組表,方便1602顯示時進行調(diào)用(2) 將adc0809的數(shù)據(jù)輸出端接在單片機的P2口(3) 將MQ-Sensor酒精傳感器的TTL輸出端接在單片機P1.7口,將AO模擬量輸出端接到adc0809的IN0通道。(4) 將1602的數(shù)據(jù)輸入端接到單片機P0口(5) 將蜂鳴器接到單片機P3.3口。2 硬件電路設(shè)計2.1酒精檢測模塊傳感器模塊采用MQ-Sensor酒精傳感器,其模擬量輸送給ADC0809進行模數(shù)轉(zhuǎn)換,將輸出數(shù)據(jù)發(fā)

7、給單片機。電路中酒精檢測傳感器的模擬量輸出端接在adc0809的IN0通道。Adc0809的start引腳接到單片機的P12口,oe引腳接到單片機的p10引腳上,EOC引腳接到了單片機的p11口,ciock時鐘信號接到了單片機的P16引腳上。數(shù)字量輸出端接到了單片機的P2口。將傳感器采集到的酒精濃度經(jīng)過adc0809輸送到單片機中。2.2顯示模塊顯示模塊采用1602液晶顯示屏進行顯示,液晶顯示具有低功耗,應(yīng)用接口少,顯示量大的特點,所以應(yīng)用很廣。將單片機收到adc0809數(shù)字量發(fā)送給1602中,進行顯示。將1602的數(shù)據(jù)輸入端接到單片機的P0口,RS引腳接到單片機的P35口,將EN使能接口接到

8、單片機的P34口,單片機發(fā)送數(shù)據(jù)給1602,1602進行顯示酒精的濃度。2.3報警模塊 報警模塊采用蜂鳴器進行報警,直觀,方便將蜂鳴器接到單片機的P33口,當(dāng)酒精檢測傳感器模塊TTL電平輸出端時證明酒精濃度已經(jīng)超過了閾值,則啟動報警,給蜂鳴器以低電平,蜂鳴器響。否則,給蜂鳴器低電平,蜂鳴器不響。2.4 CPU控制模塊CPU采用STC89c52單片機,負責(zé)整套系統(tǒng)的運行。它包含時鐘電路和復(fù)位電路。(1) 時鐘電路單片機工作的時間基準(zhǔn)是由時鐘電路提供的,在單片機的XTAL1和XTAL2兩個引腳間,接一只晶振及兩只電容就構(gòu)成了單片機的時鐘電路。電路中,電容器C1和C2對振蕩頻率有微調(diào)作用,同時幫助晶

9、振起振,通常取值范圍在220.1PF,一般晶振為11.0592MHZ,電容取22PF。石英晶體選擇11.0592MHZ。(2) 復(fù)位電路單片機系統(tǒng)的復(fù)位電路在可以采用的是按鈕式上電復(fù)位電路形式,其中電阻R采用10K的阻值,電容采22F的電容值。3應(yīng)用軟件設(shè)計3.1 主程序設(shè)計 酒精測試儀的基本功能是通過酒精傳感器采集到氣體的酒精濃度,之后經(jīng)過ADC0809數(shù)模轉(zhuǎn)換發(fā)送給單片機,之后單片機發(fā)送給1602液晶進行顯示。 當(dāng)檢測到的酒精濃度值超過了所設(shè)計的閾值,則酒精傳感器模塊將輸出低電平,將其接到單片機P17引腳上,當(dāng)單片機檢測到該引腳為低電平時,則驅(qū)動蜂鳴器發(fā)生進行報警。流程圖:開始系統(tǒng)初始化檢

10、測酒精濃度是否超過設(shè)定值聲報警1602顯示酒精濃度結(jié)束否是3.2 子程序設(shè)計3.2.1 顯示子程序設(shè)計 采用1602液晶屏進行顯示,將液晶數(shù)據(jù)輸入端接到單片機P0口,單片機驅(qū)動液晶進行顯示。流程圖:開始LCD初始化寫入地址數(shù)據(jù)忙碌標(biāo)志位檢查寫入顯示數(shù)據(jù)結(jié)束否是3.2.2報警子程序設(shè)計 報警電路采用蜂鳴器進行報警,當(dāng)酒精濃度超過了設(shè)定值,則蜂鳴器發(fā)聲進行報警,將蜂鳴器接到單片機的P33引腳。流程圖:開始初始化引腳是否為低電平蜂鳴器發(fā)生結(jié)束是否3.2.3 酒精檢測子程序設(shè)計 酒精檢測模塊采用MQ-Snsor酒精氣體傳感器和ADC0809組成,將采集到的酒精濃度經(jīng)過模數(shù)轉(zhuǎn)換器發(fā)給單片機。流程圖:開始

11、氣體檢測Adc0809模數(shù)轉(zhuǎn)換發(fā)送給單片機結(jié)束4 系統(tǒng)調(diào)試與性能分析4.1 開機界面 開機之后1602界面顯示 ,酒精檢測模塊氣體中酒精度發(fā)送給單片機。4.2 濃度判斷 當(dāng)檢測到的酒精濃度大于設(shè)定的閾值時,則單片機驅(qū)動蜂鳴器發(fā)生進行報警,提示檢測者酒精濃度已經(jīng)超標(biāo)。4.3 閾值修改(1)硬件修改 通過改變酒精傳感器的電阻值來改變傳感器對氣體酒精度的檢測靈敏度,來修改閾值。(2)軟件修改 通過對系統(tǒng)運行程序進行閾值設(shè)定,檢測到的酒精濃度,進行人為的軟件設(shè)定閾值,進行判別。總結(jié): 本作品針對生活中因醉酒駕駛引發(fā)交通事故日益嚴重,明確研究方向,制定計劃方案。深入研究酒精傳感器、模數(shù)轉(zhuǎn)換器等器件原理,

12、查閱相關(guān)酒駕標(biāo)準(zhǔn)。為制作出滿足實際要求的作品,做好充分的準(zhǔn)備。在此期間所遇到的問題,通過最有效、最準(zhǔn)確的渠道進行解決,為成功掃清障礙。隨著對單片機、ADC0809、LCD顯示器的加深了解,對信號采集和數(shù)據(jù)算法處理的進一步學(xué)習(xí);加入溫度、濕度和氣壓的影響,在現(xiàn)有基礎(chǔ)上進行改進,一定會使測得的數(shù)據(jù)更加準(zhǔn)確,使作品與預(yù)期目標(biāo)更接近。使其能成為商品,進入家庭,實現(xiàn)我們以此為課題的最終目的。參考文獻1 單成祥.傳感器的理論與設(shè)計基礎(chǔ)及其應(yīng)用M.北京:國防工業(yè)出版社,2 張福學(xué).現(xiàn)代傳感器電路M.北京:中國計量出版社,2000,441 3 吳興惠,王彩君.傳感器與信號傳感器M.北京:電子工業(yè)出版社,199

13、8 4 萬隆,巴奉麗.單片機原理及應(yīng)用技術(shù)M.北京:清華大學(xué)出版社,2010 5 湯竟南,沈國琴.51單片機C語言開發(fā)與實例M.人民郵電出版社 6 雷伏容,張小林,崔浩.51單片機常用模塊設(shè)計查詢手冊M.北京:清華大學(xué)出版社,20107 韓成,張延 拿了就用單片機M.北京:人民郵電出版社,2008 8 趙建領(lǐng).51系列單片機開發(fā)寶典M.北京:電子工業(yè)出版社,2007-04 9 張毅剛 單片機原理及接口技術(shù) :人民郵電出版社附錄附錄A 硬件電路圖附錄B 程序清單/*/項目名稱:酒精測試儀/程序內(nèi)容:通過酒精模塊將采集到的酒精濃度顯示到1602上/ 如果濃度超過設(shè)定值,則進行報警。/*/#incl

14、ude /頭文件#define uchar unsigned char /宏定義無符號字符型#define uint unsigned int /宏定義無符號整型uchar code table=;uchar code table1=voltage:;uchar code table2= alcohol tester ;/位控制碼sbit ST=P12; /A/D啟動轉(zhuǎn)換信號sbit OE=P10; /數(shù)據(jù)輸出允許信號sbit EOC=P13; /A/D轉(zhuǎn)換結(jié)束信號sbit CLK=P16; /時鐘脈沖 sbit dula = P26;sbit wela = P27;sbit rs = P35

15、;sbit lcden = P34;sbit DOUT=P17;sbit beep=P33;uint z,x,c,v,AD0809, date,a,i;/定義數(shù)據(jù)類型 void yanshi(uchar z) /延時子函數(shù)uint x,y;x=0;y=0;for(x=z;x0;x-)for(y=110;y0;y-);void delay(uint x) /延時函數(shù),參數(shù)xuint a,b;for(a = x;a 0;a-) for(b = 10;b 0;b-) ; /*/* 函數(shù)名稱 : write_com */* 函數(shù)描述 : 1602寫命令函數(shù) */* 輸入?yún)?shù) : com */* 參數(shù)描

16、述 : 控制命令 */* 返回值 : 無 */*/void write_com(uchar com)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ù) */* 返回值 : 無 */*/void write_date(uchar date)P0 = date;rs = 1;lcden = 0;delay(10);lcden = 1;delay(10);lcden

17、= 0;void initLCD(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);/* 液晶顯示程序*/void xianshi() /顯示函數(shù) uint z,x,c,v; z=date/1000; /求千位 x=date%1000/100; /求百位 c=date%100/10; /求十位 v=date%10; /求個位 for(a=20;a0;a-) /液晶1602顯

18、示 write_com(0x80+0x40+9); write_date(tablez); write_com(0x80+0x40+10); write_date(tablex); write_com(0x80+0x40+11); write_date(.); write_com(0x80+0x40+12); write_date(tablec); write_com(0x80+0x40+13); write_date(tablev); /* CLK振蕩信號*/void timer0( ) interrupt 1 /定時器0工作方式1TH0=(65536-2)/256; /重裝計數(shù)初值TL0=

19、(65536-2)%256; /重裝計數(shù)初值CLK=!CLK; /取反 /* 主函數(shù)*/ void main() TMOD=0X01; /定時器中斷0CLK=0; /脈沖信號初始值為0TH0=(65536-2)/256; /定時時間高八位初值TL0=(65536-2)%256; /定時時間低八位初值EA=1; /開CPU中斷ET0=1; /開T/C0中斷TR0=1;initLCD(); write_com(0x80); for(i=0;i16;i+) write_date(table2i); yanshi(5); write_com(0x80+0x40); for(i=0;i=251)/電壓顯

20、示不能超過5VAD0809=250;date=AD0809*20;xianshi();/液晶顯示顯示函數(shù) if(DOUT=0)/當(dāng)濃度高于設(shè)定值時 ,執(zhí)行條件函數(shù) yanshi(5);/延時抗干擾if(DOUT=0)/確定 濃度高于設(shè)定值時 ,執(zhí)行條件函數(shù) beep=0; yanshi(2000); beep=1; 第二部分:課堂設(shè)計內(nèi)容:溫度測量系統(tǒng)1 實驗?zāi)康母鶕?jù)溫度控制系統(tǒng)的要求和特點,設(shè)計了一種基于51單片機的溫度顯示系統(tǒng)。該系統(tǒng)以單片機為控制核心,結(jié)合外圍信號采集電路、LCD顯示電路、報警電路,實現(xiàn)對溫度的測量報警控制。2實驗內(nèi)容溫度控制裝置由單片機最小系統(tǒng)、LCD液晶顯示電路、報警

21、電路、溫度傳感器。等四部分組成。3實驗原理將溫度傳感器采集的數(shù)據(jù)輸入單片機,單片機與程序內(nèi)預(yù)先設(shè)定好電壓閾值進行比較,如果溫度數(shù)據(jù)大于所設(shè)定的溫度閾值,則蜂鳴器發(fā)生進行報警,整個過程LCD實時顯示:溫度閾值、實際溫度值。4實驗步驟主程序主要完成初始化、以及調(diào)用顯示、指示燈、溫度采集等等。具體模塊包括: 顯示程序設(shè)計 溫度采集程序設(shè)計 溫度處理程序設(shè)計顯示程序設(shè)計主要將幾個數(shù)組的內(nèi)容通過LCD1602的寫數(shù)據(jù)指令顯示在LCD屏上。溫度采集程序 通過18B20溫度傳感器實時采集溫度并發(fā)送給單片機。溫度處理程序設(shè)計 將采集到的實時溫度與設(shè)定溫度閾值進行比較,如果溫度大于預(yù)先設(shè)定的閾值,則蜂鳴器發(fā)生進

22、行報警。 5 流程圖:開始溫度檢測是否大于設(shè)定值聲報警1602液晶顯示結(jié)束否是6 程序清單:/將DS18B20所采集到的溫度實時顯示到1602上。/溫度超過閾值則報警#include #include #include #define uchar unsigned char#define uint unsigned int /宏定義uchar value,aa;unsigned int tmp;sbit dula = P26; /數(shù)碼管段選引腳sbit wela = P27; /數(shù)碼管位選引腳sbit ds = P22;/18b20引腳定義sbit RS = P35; sbit LCDEN =

23、 P34; /1602引腳定義sbit beep=P23;void delayUs() /延時函數(shù)_nop_(); /延時一個機器周期,包含在intrins.h文件中void delayMs(uint a) /延時函數(shù),參數(shù)auint i, j;for(i = a; i 0; i-)for(j = 100; j 0; j-);void writeComm(uchar comm) /寫命令RS = 0; /寫命令是RS需給低電平P0 = comm;LCDEN = 1; /寫命令時LCDEN需給高電平delayUs(); /延時一個機器周期LCDEN = 0;delayMs(1);void wri

24、teData(uchar dat) /寫數(shù)據(jù):RS=1, RW=0; RS = 1;/寫數(shù)據(jù)時RS=1P0 = dat;LCDEN = 1;/寫數(shù)據(jù)時LCDEN=1delayUs(); /延時一個機器周期LCDEN = 0;delayMs(1);void init() /初值函數(shù)dula = wela = 0; /段選,位選清零,數(shù)碼管不顯示writeComm(0x38);writeComm(0x0c); writeComm(0x06);writeComm(0x01); /1602的命令初始化void writeString(uchar * str, uchar length) /將數(shù)據(jù)一個接

25、著一個的寫入1602中uchar i;for(i = 0; i 0) i-; /延時ds = 1; i = 4;while(i0) i-; /延時void dsWait() /等待函數(shù)unsigned int i;while(ds); while(ds);i = 4;while(i 0) i-;bit readBit()/bit函數(shù)返回值只能是0,1 讀一位數(shù)據(jù)函數(shù)unsigned int i;bit b;/bit只定義一位0,1ds = 0;i+; /起到延時作用ds = 1; i+; i+; b = ds;i = 8; while(i0) i-;return b; /返回b,0,1unsi

26、gned char readByte() /讀一位字節(jié)數(shù)據(jù)函數(shù)unsigned int i;unsigned char j, dat;dat = 0;for(i=0; i8; i+)j = readBit();dat = (j 1);/位或運算,讀出的數(shù)據(jù)最低位在最前/面,這樣剛好一個字節(jié)在dat里return dat;void writeByte(unsigned char dat) /向18b20寫一個字節(jié)數(shù)據(jù)函數(shù)unsigned int i;unsigned char j;bit b;for(j = 0; j = 1; /對dat右移一位,將值賦給datif(b) /寫1ds = 0;

27、i+; i+; ds = 1; i = 8; while(i0) i-; else ds = 0; /寫0i = 8; while(i0) i-; ds = 1;i+; i+;void sendChangeCmd()/DS18B20 開始獲取溫度并轉(zhuǎn)換dsInit(); /DS18B20溫度初值dsWait(); /等待函數(shù)delayMs(1); /延時writeByte(0xcc); /向18b20寫一個字節(jié)數(shù)據(jù)函數(shù),寫跳過讀ROM指令writeByte(0x44); /向18b20寫一個字節(jié)數(shù)據(jù)函數(shù),寫溫度轉(zhuǎn)換指令void sendReadCmd() /讀取寄存器中存儲的溫度數(shù)據(jù)dsInit()

溫馨提示

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

評論

0/150

提交評論