基于STC89C52酒精濃度測試_第1頁
基于STC89C52酒精濃度測試_第2頁
基于STC89C52酒精濃度測試_第3頁
基于STC89C52酒精濃度測試_第4頁
基于STC89C52酒精濃度測試_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

目錄目錄........................................................................................錯誤!未定義書簽。1.實驗任務...........................................................................錯誤!未定義書簽。2.設計方案..........................................................................錯誤!未定義書簽。硬件設計..............................................................................................錯誤!未定義書簽。MCU微控制單元.....................................................................錯誤!未定義書簽。2.1.2MQ-3酒精傳感器............................................................錯誤!未定義書簽。2.1.3TLC549模數(shù)轉換............................................................錯誤!未定義書簽。2.1.4LCD1602液晶顯示..........................................................錯誤!未定義書簽。軟件設計..............................................................................................錯誤!未定義書簽。2.2.1編譯語言的選擇.................................................................錯誤!未定義書簽。2.2.2主程序模塊.........................................................................錯誤!未定義書簽。2.2.3A/D轉換模塊...................................................................錯誤!未定義書簽。2.2.4按鍵輸入模塊.....................................................................錯誤!未定義書簽。2.2.5液晶顯示輸出模塊.............................................................錯誤!未定義書簽。3.實驗結果.............................................................................錯誤!未定義書簽。4.心得體會.............................................................................錯誤!未定義書簽。附錄........................................................................................錯誤!未定義書簽。附錄1參考文獻...............................................................................錯誤!未定義書簽。附錄2硬件電路原理圖...................................................................錯誤!未定義書簽。附錄3硬件電路PCB圖.................................................................錯誤!未定義書簽。附錄4程序清單...............................................................................錯誤!未定義書簽。

1.實驗任務設計一個基于單片機的酒精濃度檢測系統(tǒng),檢測結果用LED或LCD顯示器顯示。基于STC89C52單片機,MQ-3酒精濃度傳感器,本設計設計一種具有檢測及超限報警功能的酒精濃度測試系統(tǒng)。2.設計方案由于本次設計需要用到單片機,來完成對酒精濃度的檢測,分析了網(wǎng)上的相似課題,有很多是用酒精濃度傳感器MQ-3來完成酒精濃度檢測系統(tǒng)的設計。鑒于本次時間限制,本次設計中采用的是STC89S52單片機來控制整個電路,電路中采用的是LCD1602來顯示實驗實時數(shù)據(jù)。A/D芯片的選擇中,用到的是TI公司生產的TLC549,主要是這塊芯片的性能優(yōu)良,時序操作簡單,能很好的解決本次設計中對實時數(shù)據(jù)轉換的要求。系統(tǒng)結構框圖如圖1所示:圖1系統(tǒng)結構框圖2.1.1微控制單元STC89C52基于本系統(tǒng)設計內容的需要,綜合考慮后,我們選擇STC89C52單片機為控制核心。主要基于考慮STC89C52是低功耗,超低價,高速,高可靠,強抗靜電,強抗干擾,功能強大的單片機。STC89C52有40個引腳,32個外部雙向輸入/輸出〔I/O〕端口,同時內含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,2個讀寫口線,片內振蕩器及時鐘電路。同時STC89C52可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止CPU的工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內容,但振蕩器停止工作并禁止其他所有部件工作直到下一個硬件復位。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發(fā)本。STC單片機有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應不同產品的需求。STC89C52單片機引腳如圖2:學習文檔僅供參考圖2STC89C52引腳圖?Vcc:電源電壓?GND:地?P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復用口。?P1口:P1是一個帶內部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅動〔吸收或輸出電流〕4個TTL邏輯門電路。?P2口:P2是一個帶有內部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅〔吸收或輸出電流〕4個TTL邏輯門電路。?P3口:P3口時一組帶有內部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅動〔吸收或輸出電流〕4個TTL邏輯門電路。?RST:復位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復位。?ALE:當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。?PSEN:程序儲存允許〔PSEN〕輸出是外部程序存儲器的讀選通信號,當89C5XPSEN單片機由外部程序存儲器取指令〔或數(shù)據(jù)〕時,每個機器周期兩次出兩個脈沖。在次期間,當訪問外部數(shù)據(jù)存儲器,將跳過兩次有效,即輸信號。?EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器〔地址為0000H-FFFH〕,端必須保持低電平〔接地〕。學習文檔僅供參考?XTAL1:振蕩器反相放大器及內部時鐘發(fā)生器的輸入端。?XTAL2:振蕩器反相放大器的輸出端2.1.2MQ-3酒精傳感器MQ-3酒精傳感器對乙醇蒸氣有很高的靈敏度,并且響應和恢復快速。另外,MQ-3MQ-3酒精傳感器簡單的驅動回路和可靠的穩(wěn)定性是相比較于其他型號傳感器的優(yōu)點。酒精傳感器可用于機動車駕駛人員及其他嚴禁酒后作業(yè)人員的現(xiàn)場檢測,場所乙醇蒸氣的檢測。也可用于其他MQ-3酒精傳感器有6只針狀管腳,其中4個管腳〔兩個A和兩個B〕用于信號讀取,兩個H腳用于提供加熱電流。電路圖如下列圖3:圖3MQ-3傳感器電路原理圖2.1.3TLC549模數(shù)轉換TLC549是TI公司生產的一種低價位、高性能的電容逐次逼近的方法實現(xiàn)A/D轉換,其轉換速度小于17us,最大轉換速率為40000HZ,4MHZ典型內部系統(tǒng)時鐘,電源為3V至6V。它能方便地采用三線串行接口方式與各8位A/D轉換器,它以8位開關種微處理器連接,構成各種廉價的測控應用系統(tǒng)。TLC549有8引腳,為雙列直插是封2.5V≤REF+≤Vcc+0.1。REF+〕-〔REF-〕≥1V。裝,起相應引腳功能如下:REF+:正基準電壓輸入REF-:負基準電壓輸入端,。且要求:〔VCC:系統(tǒng)電源3V≤Vcc≤6V。GND:接地端。CS:芯片選擇輸入端,要求輸入高電平VIN≥2V,輸入低電平。DATAOUT:轉換結果數(shù)據(jù)串行輸出端,與TTL電平兼容,輸出時高位在前,低位在后。學習文檔僅供參考ANALOGIN:模擬信號輸入端,0≤ANALOGIN≤Vcc,當ANALOGIN≥REF+電壓時,轉換結果為全“1”(0FFH),ANALOGIN≤REF-電壓時,轉換結果為全“0”(00H)。I/OCLOCK:外接輸入/輸出時鐘輸入端,同于同步芯片的輸入輸出操作,無需與芯片內部系統(tǒng)時鐘同步。在實際使用過程中,起時序圖如圖4所示。圖4TLC549時序圖2.1.4LCD1602液晶顯示LCD1602字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD,目前常用16×1,16×2,20×2和40×2行等的液晶顯示模塊,模塊組件內部主要由LCD顯示屏、控制器、列驅動器和偏壓產生電路構成。2.2.1編譯語言的選擇對于單片機的開發(fā)應用中,逐漸引入了高級語言,C語言就是其中的一種。匯編語言的可控性較高級語言來說更具優(yōu)越性。程序編寫語言比較常見的有C語言、匯編語言。匯編語言的機器代碼生成效率高,控制性好,但就是移植性不高。C語言編寫的程序比用匯編編寫的程序更符合人們的思考習慣。還有很多處理器都支持C編譯器,這樣意味著處理器也能很快上手。且具有良好的模塊化、容易閱讀、維護等優(yōu)點,且編寫的模塊程序易于移植。基于C語言和匯編語言的優(yōu)缺點,本系統(tǒng)采用C語言編寫方法。軟件編寫的主體思路是將系統(tǒng)按功能模塊化劃分,然后根據(jù)模塊要實現(xiàn)的功能寫各個子程序。整個軟件程序的編寫采用查詢式方式編寫的。2.2.2主程序模塊主程序實現(xiàn)的功能:與硬件相結合實現(xiàn)酒精濃度檢測系統(tǒng)的各個功能。主要是檢測與顯示,門限調整與顯示,檢測數(shù)據(jù)顯示功能子函數(shù)的調用。見圖5學習文檔僅供參考檢測開始讀鍵初始化CPU顯示主菜單顯示時間初始化顯示開機界面LCD圖5主程序流程圖2.2.3A/D轉換模塊(1)模數(shù)轉換模塊的主要功能就是將經放大器放大的模擬電壓信號轉化為處理的數(shù)字信號,并傳送給MCU。MCU能夠(2)TLC549轉換的流程圖見下列圖6開始結束送入指定寄存器字節(jié)數(shù)據(jù)校驗使能芯片產生時鐘信號輸入通道控制字讀取2字節(jié)數(shù)據(jù)圖6數(shù)轉換流程圖學習文檔僅供參考當CS變?yōu)榈碗娖胶螅琓LC549芯片被選中,同時前次轉換結果的最高有效位I/OCLOCK端輸入8個外部時TLC549輸出前次轉換結果的MSB〔A7〕自DATAOUT端輸出,接著要求自鐘信號,前7個I/OCLOCK信號的作用,是配合A6-A0位,并為本次轉換做準備:在第4個I/OCLOCK信號由高至低的跳變之后,片內采樣/保持電路對輸入模擬量采樣開始,第8個I/OCLOCK信號的下降沿使片A/D開始轉換。轉換時間為36個系統(tǒng)時鐘內采樣/保持電路進入保持狀態(tài)并啟動周期,最大為17us。直到A/D轉換完成前的這段時間內,TLC549的控制邏輯要求:或者CS保持高電平,或者I/OCLOCK時鐘端保持36個系統(tǒng)時鐘周期的低電平。由此可見,在自TLC549的I/OCLOCK端輸入8個外部時鐘信號期間需要完A/D轉換結果;對本次轉換的輸入模擬信號采樣并保持;啟成以下工作:讀入前次動本次A/D轉換開始。2.2.4按鍵輸入模塊(1)按鍵時顯現(xiàn)人機對話的一個控制按鈕,通過按鍵的操作,對系統(tǒng)進行發(fā)送操作指令,后經與MCU串行通信,然后在液晶上顯示。(2)按鍵查詢式的流程圖見下列圖7:按鍵程序入口N按鍵按下?Y調用延時程序N按鍵釋放?Y鍵值傳送圖7按鍵查詢式的流程圖按鍵的四個鍵分別接P1.0,P1.1,P1.2,P1.3,由于P1口具有上拉電阻,所以不再需要加上拉電阻進行電壓的放大。2.2.5液晶顯示輸出模塊LCD1602模塊在本系統(tǒng)中主要起著開界面數(shù)字顯示,以及各控制效果的顯示。采用直接訪問方式。液晶顯示的操作流程圖見下列圖8:學習文檔僅供參考入口否讀狀態(tài)字忙?是寫指令代碼讀顯示數(shù)據(jù)/顯示數(shù)據(jù)圖8液晶顯示的操作流程圖液晶顯示D0到D7口接P0.0到P0.7,單獨使用一個口,為了防止數(shù)據(jù)的干擾,由于P0口沒有上拉電阻,所以需要一個排阻進行電壓的擴大.本次設計的酒精濃度檢測系統(tǒng),通過設計相關的硬件電路及進行相應的軟件調試,最后實現(xiàn)了實時檢測酒精濃度,并的在LCD1602上顯示的目的。設計出的電路,完全符合本次實驗的設計要求,通過按鍵可以實現(xiàn)調整門限值,對于檢測到的酒精濃度高于設定門限值時,會顯示實時酒精濃度值,系統(tǒng)會自動實現(xiàn)燈光報警功能。學習文檔僅供參考硬件成品圖硬件上電開機界面酒精濃度高紅燈報警酒精濃度低紅燈不報警通過本次課程設計,讓我重新的系統(tǒng)的復習了微機原理與單片機方面的知識,收獲頗豐。首先,對于以前學習過的有關單片機方面的知識,在設計電路過程中又有了新的認識,對于各種概念的理解也有了提高。在做板的過程中要非常小心。硬件調試過程是相對繁鎖的,要特別注意以下幾點。其一,通電之后看AT89S51晶振是否起振,晶振起振后是標準的正弦波,示波器測得其學習文檔僅供參考頻率為11.0592MHz;其二,硬件電路的設計既要追求實際功能的實現(xiàn),也要考慮元器件的購買方便。在本次課設中學到的知識,我將它們發(fā)揮到其他的學習中去,也將在今后的學習中不斷的提高和完善;而在此期間發(fā)現(xiàn)的不足,我將努力改善,通過學習實踐等方式不斷提高,克服那些知識障礙,以求在今后的學習過程中獲得更大的進步!學習文檔僅供參考

附錄附錄1參考文獻[1]《微機原理及應用》黃冰等編著重慶:重慶大學出版社,2003[2]李維提,郭強.《液晶顯示應用技術》北京:電子工業(yè)出版社,2000.周潤景等編著北京:北京航空航[3]《基于Proteus的電路及單片機系統(tǒng)設計與仿真》天大學出版社,2006[4]《單片機實驗與實踐教程》萬光毅等編著[5]《單片機人機接口實例集》公茂法等編著北京:北京航空航天大學出版社,2006北京:北京航空航天大學出版社,1997[6]《單片機應用設計200例》張洪潤等編著北京:北京航空航天大學出版社,2006[7]《單片機程序設計實例》先鋒工作室編著北京:清華大學出版社,2003[8]《單片機C語言編程與實例》趙亮,侯國銳編著[9]《新編MCS-51單片機應用設計》張毅剛等編著2004北京:人民郵電出版社,2003哈爾濱:哈爾濱工業(yè)大學出版社,學習文檔僅供參考

附錄2硬件電路原理圖學習文檔僅供參考學習文檔僅供參考附錄3硬件電路PCB圖學習文檔僅供參考附錄4程序清單#include<reg52.h>#include<intrins.h>/*******************宏定義**********************/#defineuintunsignedint#defineucharunsignedcharsbitk0=P1^0;//startthesystemsbitk1=P1^1;//setupthestand_valuesbitk2=P1^2;//thestand_valueupsbitk3=P1^3;//thestand_valuedownsbitalarm=P2^0;//thealarmport/*************************變量及字符串的定義*************************/ucharLCD_Char[]="0123456789ABCDEF-.";ucharLCD_string0[]="welcometoguet";ucharLCD_string1[]="102021226";ucharM_Time[]="2011--9--8";//showtimeucharM_Detect[]="Detect:";ucharM_Detect1[]="Alcohol:";ucharM_Detect2[]="set_val:";//ucharM_time1[]={"Time"};//檢測//時間//ucharM_Storage[]={"Storage"};//memoryuintdata_temp=0;uintflag=0;/*******************函數(shù)聲明**********************/externvoidinitial_lcd1602(void);externvoidDisplay_List_Char(ucharx,uchary,uchar*str);toexplainthefunctionisintheotherfile//theexternhavenomean,only//thefunctionexternvoidwrite_lcd_command(ucharwrite_data);ofwritecommandexternvoidDisplay_One_Char(ucharx,uchary,uchardat);externvoidwrite_lcd_command(ucharwrite_data);externvoidxs_int(unsignedintshuju,bitt);externunsignedcharADconv(void);externvoiddisplay(unsignedintshuju,bitt);/*******************子函數(shù)**********************/voiddelay_ms(uintn)學習文檔僅供參考

{uinti,j;//delay10msfor(i=n;i>0;i--){for(j=1200;j>0;j--){_nop_();}}}/******************主函數(shù)**********************/voidmain(){uchardata_char=0;initial_lcd1602();delay_ms(100);Display_List_Char(0,0,LCD_string0);delay_ms(100);//welcome//welcome//delay3sDisplay_List_Char(1,0,LCD_string1);delay_ms(300);write_lcd_command(0x01);Display_List_Char(0,0,M_Time);delay_ms(30);//cleanscreen//showtimeDisplay_List_Char(0,0,M_Time);delay_ms(100);//showtimeDisplay_List_Char(1,0,M_Detect);delay_ms(100);//showdetectinterface////Display_List_Char(1,0,M_Detect);delay_ms(300);//showdetectinterfacewhile(1){_nop_();if(k0==0||k1==0||k2==0||k3==0){if(k0==0){flag=0;Display_List_Char(1,0,M_Detect1);//showdetectinterfacedelay_ms(50);學習文檔僅供參考

data_char=ADconv();data_temp=data_char;delay_ms(10);xs_int(data_temp,1);delay_ms(10);if(data_temp>=set_value){alarm=0;}else{alarm=1;}}if(k1==0){Display_List_Char(1,0,M_Detect2);xs_int(set_value,1);flag=1;}if(k2==0&&flag==1){delay_ms(10);if(k2==0){set_value=set_value+10;xs_int(set_value,1);}delay_ms(50);}if(k3==0&&flag==1){delay_ms(10);if(k3==0){set_value=set_value-10;xs_int(set_value,1);}delay_ms(50);}}學習文檔僅供參考

}}#include<reg52.h>#include<string.h>#defineucharunsignedchar#defineuintunsignedint#defineLCDPORTP0sbitRS=P2^5;sbitRW=P2^6;sbitEN=P2^7;//RS數(shù)據(jù)命令選擇端,高電平數(shù)據(jù),低電平命令//RW讀寫選擇端,高電平讀操作,低電平寫操作//EN使能控制端,E高電平跳變?yōu)榈碗娖綍rLCD執(zhí)行命令/******************************LCD1602驅動程序*************************************/voidlcd_delay(uchardelaytime){while(delaytime)delaytime--;}voidwrite_lcd_command(ucharwrite_command){lcd_delay(40);RS=0;RW=0;LCDPORT=write_command;EN=1;EN=0;}voidwrite_lcd_data(ucharwrite_data){lcd_delay(40);RS=1;RW=0;LCDPORT=write_data;EN=1;EN=0;}學習文檔僅供參考

voidDisplay_One_Char(ucharx,uchary,uchardat)//x表示行,y表示列{switch(x){case0:write_lcd_command(0x80+y);break;case1:write_lcd_command(0xc0+y);break;}write_lcd_data(dat);}voidDisplay_List_Char(ucharx,uchary,uchar*str){/*switch(x){case0:write_lcd_command(0x80+y);break;case1:write_lcd_command(0xc0+y);break;}while(*str!='\0'){write_lcd_data(*str);str++;}*/while(*str!='\0'){Display_One_Char(x,y,*str);str++;y++;if(y==16){}//假設y等于16,進入if語句y=0;x^=1;//y賦0,x與1按位異或取反}學習文檔僅供參考

}voidxs_int(unsignedintshuju,bitt){unsignedinthuancun[6]={0};unsignedcharbiaozhi=0,i;//顯示一個數(shù)字if(shuju<10)biaozhi=1;elseif(shuju<100)biaozhi=2;elseif(shuju<1000)biaozhi=3;elseif(shuju<10000)biaozhi=4;elseif(shuju<=65535)biaozhi=5;switch(biaozhi){case5:huancun[0]=shuju/10000;case4:huancun[5]=shuju%10000/1000;case3:huancun[4]=shuju%1000/100;case2:huancun[3]=shuju%100/10;case1:huancun[1]=shuju%10;break;default:break;}for(i=6;i>1;i--){if(i==3)Display_One_Char(t,12,'.');elseDisplay_One_Char(t,15-i,0x30+huancun[i-1]);}Display_One_Char(t,14,'m');Display_One_Char(t,15,'g');}voiddisplay(unsignedintshuju,bitt){unsignedinthuancun[6]={0};unsignedcharbiaozhi=0,i;//顯示一個數(shù)字if(shuju<10)biaozhi=1;elseif

溫馨提示

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

評論

0/150

提交評論