51單片機課程設(shè)計和51單片機在編程電路中的應用_第1頁
51單片機課程設(shè)計和51單片機在編程電路中的應用_第2頁
51單片機課程設(shè)計和51單片機在編程電路中的應用_第3頁
51單片機課程設(shè)計和51單片機在編程電路中的應用_第4頁
51單片機課程設(shè)計和51單片機在編程電路中的應用_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

課程設(shè)計說明書課程設(shè)計名稱單片機原理及應用課程設(shè)計專業(yè)電子信息工程班級學號學生姓名指導教師課程設(shè)計任務書課程設(shè)計題目酒精測試儀起止日期20XX年12月26日—20**年1月6日設(shè)計地點計算機科學與工程學院單片機實驗室3409設(shè)計任務及日程安排:設(shè)計任務:分兩部分:(一)、設(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)(二)、應用系統(tǒng)設(shè)計類:不須上機,查資料完成軟、硬件設(shè)計畫圖。查資料選定題目。說明:第1--7題任選其二即可。(二)里題目自擬。日程安排:本次設(shè)計共二周時間,日程安排如下:第1天:查閱資料,確定題目。第2--4天:進實驗室做實驗,連接硬件并編寫程序作相關(guān)的模塊實驗。第5--7天:編寫程序,并調(diào)試通過。觀察及總結(jié)硬件實驗現(xiàn)象和結(jié)果。第8--9天:整理資料,撰寫課程設(shè)計報告,準備答辯。第10天:上交課程設(shè)計報告,答辯。設(shè)計報告要求:1.設(shè)計報告里有兩個內(nèi)容,自選題目內(nèi)容+附錄(實驗內(nèi)容),每位同學獨立完成。2.自選題目不須上機實現(xiàn),要求能正確完成硬件電路和軟件程序設(shè)計。內(nèi)容包括:1)設(shè)計題目、任務與要求2)硬件框圖與電路圖3)軟件及流程圖(a)主要模塊流程圖(b)源程序清單與注釋4)總結(jié)5)參考資料6)附錄實驗上機調(diào)試內(nèi)容注:此任務書由指導教師在課程設(shè)計前填寫,發(fā)給學生做為本門課程設(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.4CPU控制模塊 43應用軟件設(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開機界面 84.2濃度判斷 84.3閾值修改 9總結(jié): 9參考文獻 9附錄 10附錄A硬件電路圖 10附錄B程序清單 11第二部分:課堂設(shè)計內(nèi)容:溫度測量系統(tǒng) 161實驗目的 162實驗內(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液晶顯示,報警電路采用蜂鳴器。要求酒精測試儀有以下功能:酒精濃度通過1602液晶顯示模塊顯示出來酒精濃度超過設(shè)定的閾值則蜂鳴器發(fā)聲進行報警。1.2優(yōu)點及意義本課題采用51單片機進行控制,51單片機具有體積小、運行速度快的特點,用其作為主控芯片進行控制會十分的方便。使用MQ-Sensor氣體傳感器模塊能夠快速,準確的檢測到酒精濃度,使用1602模塊進行顯示,直觀,方便。1.3系統(tǒng)硬件電路設(shè)計系統(tǒng)硬件設(shè)計框圖。根據(jù)設(shè)計要求,確定系統(tǒng)的設(shè)計方案,硬件由四部分組成。采用STC89c52單品機為CPU控制模塊,以MQ-Sensor傳感器模塊和ADC0809模塊組成檢測模塊,以1602液晶顯示組成顯示模塊,以蜂鳴器組成報警模塊。CPU處理模塊STC89c52報警模塊蜂鳴器檢測模塊MQ-Sensor+adc0809CPU處理模塊STC89c52報警模塊蜂鳴器檢測模塊MQ-Sensor+adc0809顯示模塊1602液晶屏1.4初步設(shè)計思路定義三組數(shù)組表,方便1602顯示時進行調(diào)用將adc0809的數(shù)據(jù)輸出端接在單片機的P2口將MQ-Sensor酒精傳感器的TTL輸出端接在單片機P1.7口,將AO模擬量輸出端接到adc0809的IN0通道。將1602的數(shù)據(jù)輸入端接到單片機P0口將蜂鳴器接到單片機P3.3口。2硬件電路設(shè)計2.1酒精檢測模塊傳感器模塊采用MQ-Sensor酒精傳感器,其模擬量輸送給ADC0809進行模數(shù)轉(zhuǎn)換,將輸出數(shù)據(jù)發(fā)給單片機。電路中酒精檢測傳感器的模擬量輸出端接在adc0809的IN0通道。Adc0809的start引腳接到單片機的P1^2口,oe引腳接到單片機的p1^0引腳上,EOC引腳接到了單片機的p1^1口,ciock時鐘信號接到了單片機的P1^6引腳上。數(shù)字量輸出端接到了單片機的P2口。將傳感器采集到的酒精濃度經(jīng)過adc0809輸送到單片機中。2.2顯示模塊顯示模塊采用1602液晶顯示屏進行顯示,液晶顯示具有低功耗,應用接口少,顯示量大的特點,所以應用很廣。將單片機收到adc0809數(shù)字量發(fā)送給1602中,進行顯示。將1602的數(shù)據(jù)輸入端接到單片機的P0口,RS引腳接到單片機的P3^5口,將EN使能接口接到單片機的P3^4口,單片機發(fā)送數(shù)據(jù)給1602,1602進行顯示酒精的濃度。2.3報警模塊報警模塊采用蜂鳴器進行報警,直觀,方便將蜂鳴器接到單片機的P3^3口,當酒精檢測傳感器模塊TTL電平輸出端時證明酒精濃度已經(jīng)超過了閾值,則啟動報警,給蜂鳴器以低電平,蜂鳴器響。否則,給蜂鳴器低電平,蜂鳴器不響。2.4CPU控制模塊CPU采用STC89c52單片機,負責整套系統(tǒng)的運行。它包含時鐘電路和復位電路。時鐘電路單片機工作的時間基準是由時鐘電路提供的,在單片機的XTAL1和XTAL2兩個引腳間,接一只晶振及兩只電容就構(gòu)成了單片機的時鐘電路。電路中,電容器C1和C2對振蕩頻率有微調(diào)作用,同時幫助晶振起振,通常取值范圍在22±0.1PF,一般晶振為11.0592MHZ,電容取22PF。石英晶體選擇11.0592MHZ。復位電路單片機系統(tǒng)的復位電路在可以采用的是按鈕式上電復位電路形式,其中電阻R采用10KΩ的阻值,電容采22μF的電容值。3應用軟件設(shè)計3.1主程序設(shè)計酒精測試儀的基本功能是通過酒精傳感器采集到氣體的酒精濃度,之后經(jīng)過ADC0809數(shù)模轉(zhuǎn)換發(fā)送給單片機,之后單片機發(fā)送給1602液晶進行顯示。當檢測到的酒精濃度值超過了所設(shè)計的閾值,則酒精傳感器模塊將輸出低電平,將其接到單片機P1^7引腳上,當單片機檢測到該引腳為低電平時,則驅(qū)動蜂鳴器發(fā)生進行報警。流程圖:開始開始系統(tǒng)初始化檢測酒精濃度是否超過設(shè)定值聲報警1602顯示酒精濃度結(jié)束否是3.2子程序設(shè)計3.2.1顯示子程序設(shè)計采用1602液晶屏進行顯示,將液晶數(shù)據(jù)輸入端接到單片機P0口,單片機驅(qū)動液晶進行顯示。流程圖:開始開始LCD初始化寫入地址數(shù)據(jù)忙碌標志位檢查寫入顯示數(shù)據(jù)結(jié)束否是3.2.2報警子程序設(shè)計報警電路采用蜂鳴器進行報警,當酒精濃度超過了設(shè)定值,則蜂鳴器發(fā)聲進行報警,將蜂鳴器接到單片機的P3^3引腳。流程圖:開始開始初始化引腳是否為低電平蜂鳴器發(fā)生結(jié)束是否3.2.3酒精檢測子程序設(shè)計酒精檢測模塊采用MQ-Snsor酒精氣體傳感器和ADC0809組成,將采集到的酒精濃度經(jīng)過模數(shù)轉(zhuǎn)換器發(fā)給單片機。流程圖:開始開始氣體檢測Adc0809模數(shù)轉(zhuǎn)換發(fā)送給單片機結(jié)束4系統(tǒng)調(diào)試與性能分析4.1開機界面開機之后1602界面顯示,酒精檢測模塊氣體中酒精度發(fā)送給單片機。4.2濃度判斷當檢測到的酒精濃度大于設(shè)定的閾值時,則單片機驅(qū)動蜂鳴器發(fā)生進行報警,提示檢測者酒精濃度已經(jīng)超標。4.3閾值修改(1)硬件修改通過改變酒精傳感器的電阻值來改變傳感器對氣體酒精度的檢測靈敏度,來修改閾值。(2)軟件修改通過對系統(tǒng)運行程序進行閾值設(shè)定,檢測到的酒精濃度,進行人為的軟件設(shè)定閾值,進行判別??偨Y(jié):本作品針對生活中因醉酒駕駛引發(fā)交通事故日益嚴重,明確研究方向,制定計劃方案。深入研究酒精傳感器、模數(shù)轉(zhuǎn)換器等器件原理,查閱相關(guān)酒駕標準。為制作出滿足實際要求的作品,做好充分的準備。在此期間所遇到的問題,通過最有效、最準確的渠道進行解決,為成功掃清障礙。隨著對單片機、ADC0809、LCD顯示器的加深了解,對信號采集和數(shù)據(jù)算法處理的進一步學習;加入溫度、濕度和氣壓的影響,在現(xiàn)有基礎(chǔ)上進行改進,一定會使測得的數(shù)據(jù)更加準確,使作品與預期目標更接近。使其能成為商品,進入家庭,實現(xiàn)我們以此為課題的最終目的。參考文獻[1]單成祥.傳感器的理論與設(shè)計基礎(chǔ)及其應用[M].北京:國防工業(yè)出版社,[2]張福學.現(xiàn)代傳感器電路[M].北京:中國計量出版社,2000,441[3]吳興惠,王彩君.傳感器與信號傳感器[M].北京:電子工業(yè)出版社,1998[4]萬隆,巴奉麗.單片機原理及應用技術(shù)[M].北京:清華大學出版社,2010[5]湯竟南,沈國琴.51單片機C語言開發(fā)與實例[M].人民郵電出版社[6]雷伏容,張小林,崔浩.51單片機常用模塊設(shè)計查詢手冊[M].北京:清華大學出版社,2010[7]韓成,張延拿了就用單片機[M].北京:人民郵電出版社,2008[8]趙建領(lǐng).51系列單片機開發(fā)寶典[M].北京:電子工業(yè)出版社,2007-04[9]張毅剛單片機原理及接口技術(shù):人民郵電出版社附錄附錄A硬件電路圖附錄B程序清單/*****************************************************///項目名稱:酒精測試儀//程序內(nèi)容:通過酒精模塊將采集到的酒精濃度顯示到1602上//如果濃度超過設(shè)定值,則進行報警。/*****************************************************/#include<reg52.h>//頭文件#defineucharunsignedchar //宏定義無符號字符型#defineuintunsignedint //宏定義無符號整型ucharcodetable[]="0123456789";ucharcodetable1[]="voltage:";ucharcodetable2[]="alcoholtester"; //位控制碼sbitST=P1^2;//A/D啟動轉(zhuǎn)換信號sbitOE=P1^0;//數(shù)據(jù)輸出允許信號sbitEOC=P1^3;//A/D轉(zhuǎn)換結(jié)束信號sbitCLK=P1^6;//時鐘脈沖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ù){ uintx,y; x=0; y=0; for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddelay(uintx) //延時函數(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; //求個位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振蕩信號 ****************************************/voidtimer0()interrupt1//定時器0工作方式1{TH0=(65536-2)/256; //重裝計數(shù)初值TL0=(65536-2)%256; //重裝計數(shù)初值CLK=!CLK; //取反}/****************************************主函數(shù) *****************************************/voidmain(){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;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; //使采集信號為低 ST=1; //開始數(shù)據(jù)轉(zhuǎn)換 ST=0; //停止數(shù)據(jù)轉(zhuǎn)換 while(!EOC); //等待數(shù)據(jù)轉(zhuǎn)換完畢 OE=1; //允許數(shù)據(jù)輸出信號 AD0809=P1; //讀取數(shù)據(jù) OE=0; //關(guān)閉數(shù)據(jù)輸出允許信號 if(AD0809>=251) //電壓顯示不能超過5V AD0809=250; date=AD0809*20; xianshi(); //液晶顯示顯示函數(shù)if(DOUT==0)//當濃度高于設(shè)定值時,執(zhí)行條件函數(shù) { yanshi(5);//延時抗干擾 if(DOUT==0)//確定濃度高于設(shè)定值時,執(zhí)行條件函數(shù) {beep=0; yanshi(2000); beep=1; } }}} 第二部分:課堂設(shè)計內(nèi)容:溫度測量系統(tǒng)1實驗目的根據(jù)溫度控制系統(tǒng)的要求和特點,設(shè)計了一種基于51單片機的溫度顯示系統(tǒng)。該系統(tǒng)以單片機為控制核心,結(jié)合外圍信號采集電路、LCD顯示電路、報警電路,實現(xiàn)對溫度的測量報警控制。2實驗內(nèi)容由單片機最小系統(tǒng)、LCD液晶顯示電路、報警電路、溫度傳感器。等四部分組成。3實驗原理將溫度傳感器采集的數(shù)據(jù)輸入單片機,單片機與程序內(nèi)預先設(shè)定好電壓閾值進行比較,如果溫度數(shù)據(jù)大于所設(shè)定的溫度閾值,則蜂鳴器發(fā)生進行報警,整個過程LCD實時顯示:溫度閾值、實際溫度值。4實驗步驟主程序主要完成初始化、以及調(diào)用顯示、指示燈、溫度采集等等。具體模塊包括:顯示程序設(shè)計溫度采集程序設(shè)計溫度處理程序設(shè)計顯示程序設(shè)計主要將幾個數(shù)組的內(nèi)容通過LCD1602的寫數(shù)據(jù)指令顯示在LCD屏上。溫度采集程序通過18B20溫度傳感器實時采集溫度并發(fā)送給單片機。溫度處理程序設(shè)計將采集到的實時溫度與設(shè)定溫度閾值進行比較,如果溫度大于預先設(shè)定的閾值,則蜂鳴器發(fā)生進行報警。5流程圖:開始開始溫度檢測是否大于設(shè)定值聲報警1602液晶顯示結(jié)束否是6程序清單://將DS18B20所采集到的溫度實時顯示到1602上。//溫度超過閾值則報警#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ù){ _nop_(); //延時一個機器周期 ,包含在intrins.h文件中}voiddelayMs(uinta) //延時函數(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; //寫命令時LCDEN需給高電平 delayUs(); //延時一個機器周期 LCDEN=0; delayMs(1);}voidwriteData(uchardat)//寫數(shù)據(jù):RS=1,RW=0; { RS=1; //寫數(shù)據(jù)時RS=1 P0=dat; LCDEN=1; //寫數(shù)據(jù)時LCDEN=1 delayUs(); //延時一個機器周期 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ù)一個接著一個的寫入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--; //延時 ds=1; i=4; while(i>0)i--; //延時}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++; //起到延時作用 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); //位或運算,讀出的數(shù)據(jù)最低位在最前//面,這樣剛好一個字節(jié)在dat里 } returndat;}voidwriteByte(unsignedchardat) //向18b20寫一個字節(jié)數(shù)據(jù)函數(shù){ unsignedinti; unsignedcharj; bitb; for(j=0;j<8;j++) { b=dat&0x01; dat>>=1; //對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); //延時 writeByte(0xcc); //向18b20寫一個字節(jié)數(shù)據(jù)函數(shù),寫跳過讀ROM指令 writeByte(0x44); //向18b20寫一個字節(jié)數(shù)據(jù)函數(shù),寫溫度轉(zhuǎn)換指令}voidsendReadCmd() //讀取寄存器中存儲的溫度數(shù)據(jù){ dsInit(); //DS18B20溫度初值 dsWait(); //等待函數(shù) delayMs(1); //延時 writeByte(0xcc); writeByte(0xbe);}intgetTmpValue(){ unsignedinttmpvalue; intvalue; floatt; unsignedcharlow,high; sendReadCmd(); low=readByte(); high=readByte(); tmpvalue=high; tmpvalue<<=8; tmpvalue|=low; //按位進行或運算 tmpvalue=(tmpvalue|low) value=tmpvalue; t=value*0.0625; value=t*100+(value>0?0.5:-0.5);//大于0加0.5,小于0減0.5 returnvalue;}voiddisplay(intv){ unsignedcharcount; unsignedchardatas[]={0,0,0,0,0}; tmp=abs(v); datas[0]=tmp/10000; datas[1]=tmp%10000/1000; datas[2]=tmp%1000/100; datas[3]=tmp%100/10; datas[4]=tmp%10; aa=datas[2]; writeComm(0xc0+3); if(v<0) { writeString("-",2); } else { writeString("+",2); } if(datas[0]!=0) { writeData('0'+datas[0]); } for(count=1;count!=5;count++) { writeData('0'+datas[count]); if(count==2) { writeData('.'); } }}voidmain(){ uchartable[]="xianzaiwendu:"; //定義數(shù)組table,16字節(jié) sendChangeCmd(); init(); writeComm(0x80); writeString(table,16); //將table數(shù)組中數(shù)據(jù)寫入到1602的第一行中 while(1) { delayMs(1000);//溫度轉(zhuǎn)換時間需要750ms以上 writeComm(0xc0); display(getTmpValue()); sendChangeCmd(); if(aa>2) {beep=0; delayMs(2000); beep=1; } }}PAGE課程設(shè)計成績考核表課程設(shè)計成績考核表學院計算機科學與工程學院專業(yè)電子信息工程班級140405姓名李延琦學號20141329課程名稱單片機原理及應用課程設(shè)計課程設(shè)計題目酒精測試儀考核項目滿分值得分1.獨立完成設(shè)計任務202.設(shè)計方案、說明書、圖紙、程序、計算等完成量303.創(chuàng)新與發(fā)揮104.答辯(口試)40合計得分成績指導教師簽字幾點說明此表由指導教師進行課程設(shè)計成績評定時填寫。、課程設(shè)計成績根據(jù)學生各項考核最后得分,按“優(yōu)”、“良”、“中”、“及格”、“不及格”五級評定。期中,90分以上為“優(yōu)”;80-89分為“良”;70-79分為“中”;60-69分為“及格”;60分以下為“不及格”。課程設(shè)計結(jié)束后,此表由指導教師放入課程設(shè)計資料袋,送承擔課程的教研室存檔。20**年1月6日畢業(yè)設(shè)計(論文)譯文及原稿譯文題目:51單片機在編程電路中的應用原稿題目:AT89C51In-CircuitProgramming原稿出處:/dyn/resources/prod_documents/doc0287.pdf浙江工業(yè)大學之江學院畢業(yè)設(shè)計(論文)外文翻譯PAGE1251單片機在編程電路中的應用本應用指南說明了AtmelAT89C51是可在線可編程的微控制器。它為電路編程提出了相應的例子,程序的修改需要在線編程的支持。這類顯示方法在應用程序中的AT89C51單片機可通過電話線遠程控制。該應用指南所描述的電路只支持5v電壓下編程。此應用軟件可以到Atmel進行下載??傉摦敳辉谶M行程序設(shè)計的時候,在電路設(shè)計中的AT89C51設(shè)計將變得透明化。在編程期間必須重視EA/VPP這一腳。在不使用外部程序存儲器的應用程序中,這腳可能會永久接到VCC。應用程序使用的外部程序存儲器要求這一腳為低電平才能正常運行。RST在編程期間必須為高電平。應該提供一種方法使得電路通入電源以后,使RST代替主要的復位電路起到復位的作用。在編程過程中,PSEN必須保持低電平,在正常運行期間絕不能使用。ALE/PROG在編程過程中輸出低電平,在正常運行期間絕不能使用。在編程過程中,AT89C51的I/O端口是用于模式應用程序,地址和數(shù)據(jù)選擇的,可能需要該控制器從應用的電路隔離。如何做到這一點取決于應用程序。輸入端口在編程過程中,控制器必須與應用電路的信號來源隔離。帶有三個輸出狀態(tài)的緩沖區(qū)會在應用程序之間插入電路和控制器,同時在編程時緩沖區(qū)輸出三種狀態(tài)。一個多路復用器可用于信號源之間進行選擇,適用于任何一方的應用電路或編程控制器電路的信號。輸出端口如果應用的電路可以允許端口在編程過程中的狀態(tài)變化,則不需要改變電路。如果應用電路的狀態(tài),必須事先在編程過程中的保持不變,可能在控制器和應用電路中插入鎖存。鎖存在編程期間是可用的,并保存應用程序的電路狀態(tài)。應用實例應用是該AT89C51一個移動的顯示情況。此應用程序有在電路重新編程時將結(jié)果以圖表的形式顯示的簡單能力。文本顯示被設(shè)計作為其硬件的一部分,不能在無改編情況下變化。顯示的文本可在4位DIP開關(guān)選擇兩種模式之一中進行。在第一種模式的時候,進入一個字符從右邊顯示和快速移動,通過每個元素顯示其在最后的裝配位置的左側(cè)。在第二個模式,信息在信息窗口中右到左移動顯示。這種模式與常常在股票價格的顯示器所使用的方法類似。輸出包括四個DL1414T,4位17段的積分解碼器和驅(qū)動程序的字母數(shù)字顯示器。這就產(chǎn)生了16名顯示元素,每個數(shù)字有0-9的顯示能力,是大寫字母,標點符號和一些字符??娠@示字符的ASCII碼,范圍為20H-5FH。上電復位電路和一個6MHz的晶體振蕩器完成應用軟件程序。無論外部程序存儲器或外部數(shù)據(jù)存儲器都時可用的。支持應用程序的修改據(jù)推測,編程器在休眠時,既不會驅(qū)動,也不會加載應用程序。由于應用程序不使用外部程序存儲器,EA/VPP腳接VCC電源。復位電路被兩種轉(zhuǎn)換器改變狀態(tài),此轉(zhuǎn)換器允許編程時RST接高電平。在基本應用時未使用的PSEN和ALE/PROG,是被程序員直接控制的。編程器的編程需要獲得所有數(shù)據(jù)表中記錄的AT89C51的I/O端口。編程器是與那些應用程序未使用的控制器的引腳相連的,而這些應用程序的引腳需要最低有效位的四所產(chǎn)生的地址是可獲得的,如下段所述。由編程器生成的最小的四位地址是與DIP轉(zhuǎn)換的數(shù)據(jù)在控制器的端口多路復用的請注意,加在開關(guān)上的四個電阻在基本應用中并不是必須的,因為AT89C51的端口上提供一個內(nèi)部上拉電阻。在應用程序的正常運作時,控制器端口0,1個分別在顯示器上提供數(shù)據(jù)和控制信號。在編程和程序驗證時,編程受端口0和端口2的一部分控制。程序設(shè)計器連接端口0和1,沒有緩沖,因為,在不活動時,它的存在不影響應用程序的正常運作。透明鎖存器被加在了控制器的兩個端口之間做輸入控制。鎖存持有的顯示控制信號在編程過程中不反應,從而消除端口0和2由于程序控制器的活動造成操作失誤。顯示數(shù)據(jù)輸入是不能被孤立的,因為數(shù)據(jù)應用到輸入被忽略時,控制信號無效。AT89C51單片機復位電路,輸入多路復用器和輸出鎖存器是由程序控制器生成一個單一的信號來控制的。在編程過程中,復位鍵生效,多路開關(guān)信號輸入,以及凍結(jié)顯示鎖存控制線。為確??刂凭€顯示在已知的狀態(tài)前鎖定,AT89C51的外部中斷是用來允許程序控制器在復位之前向應用程序發(fā)出信號。應用程序固件響應中斷顯示一條消息,關(guān)閉顯示控制線。編程后,當復位生效,當鎖存可視控制器端口輸出高電平。由于顯示控制輸入不為高電平,直到新的程序?qū)懭腼@示器內(nèi)部不被打亂。雖然這個應用程序是沒有必要的,它可能在某些應用中必須指出,在編程過程中不會擾亂外圍電路的狀態(tài)程序控制器程序控制器生成的地址,數(shù)據(jù)和控制信號,對嵌入到程序中的AT89C51有重要作用。程序控制器電路由一個AT89C51和一個RS-232電平轉(zhuǎn)換器組成。該控制器運行在11.0592兆HZ,此頻率允許串口運行在一個標準波特率下。一個MAXIMMAX232線路驅(qū)動器/接收器產(chǎn)生RS-232水平,而只需要5伏的電源系統(tǒng)。程序控制器所產(chǎn)生的信號許多只需直接連接到AT89C51,無需緩沖。這些信號,在不活動時,不再是三種狀態(tài),但被接高電平。AT89C51的端口1,2,3內(nèi)部有大約3000歐姆的上拉電阻,因為端口0沒有內(nèi)部上拉電阻,所以外部10千歐姆的上拉電阻已經(jīng)加上允許適當?shù)某绦蛘J證模式操作。示例應用程序在這種環(huán)境下可正常運行。如果有需要的應用程序兼容性,程序發(fā)出的信號可能在類似74xx125三態(tài)緩沖緩沖區(qū)內(nèi)緩沖。AT89C51的程序不使用外部程序或數(shù)據(jù)存儲器,這需要犧牲所需要的I/O引腳。這就要求程序代碼和I/O緩沖區(qū)保持足夠小以適合片上存儲器。商業(yè)電話線遠程編程編程器和前面描述的顯示應用是與通過調(diào)制解調(diào)器連接在遠程站點電話線相連的。使用鏈接調(diào)制解調(diào)器的個人電腦,用戶可以上傳包含一個新的消息的程序,這個信息被變成進了嵌入到應用程序的AT89C51中。當編程完成后,應用程序執(zhí)行新的程序,它顯示新信息。本地配置測試配置的本地配置包括一臺IBM個人電腦級的計算機連接到與Hayes兼容的,普羅米修斯1200波特的調(diào)制解調(diào)器。選擇此調(diào)制解調(diào)器,因為它是廉價可得。更快的調(diào)制解調(diào)器如果需要的話可使用更快速的調(diào)制解調(diào)器,盡管一旦該文件的傳輸時間低于1分鐘,進一步削減的傳輸時間不會進一步降低連接時間費用。更高的傳輸速度的可能優(yōu)勢是在某些高速調(diào)制解調(diào)器內(nèi)的自動錯誤檢測和糾正。ProcommPlus版本2.01,是一個商業(yè)數(shù)據(jù)通信軟件包,用于配置調(diào)制解調(diào)器,建立通訊設(shè)置參數(shù),并建立與遠程調(diào)制解調(diào)器的鏈接。ProcommPlus包括所謂的宏語言方面,它允許用戶編寫實現(xiàn)自定義的文件傳輸協(xié)議的腳本。一個簡單的腳本編寫用來讀取一個程序文件的內(nèi)容,并上傳到遠程編程器。文件傳輸協(xié)議(FTP)的實施,是一個簡單的發(fā)送和等待的,數(shù)據(jù)包導向的協(xié)議。FTP模式發(fā)送和接收的是用數(shù)字4和5,如流程圖所示。不在流程控制下發(fā)射器發(fā)送每個數(shù)據(jù)包,并等待響應。在計算校驗和時那個程序控制器(接收器)讀取并剖析了數(shù)據(jù)包。如果計算出的校驗和是有效的,程序員通過發(fā)送一個ACK承認此數(shù)據(jù)包。如果校驗和錯誤,程序員通過發(fā)送一個NAK來否定。當接收一個ACK后,發(fā)射器發(fā)送下一個數(shù)據(jù)包。如果傳送者接收到NAK,它重新發(fā)送相同的數(shù)據(jù)包。以這種方式傳輸,直到整個文件已被移交。程序控制器可能通過發(fā)送一個CAN來響應數(shù)據(jù)包,CAN表明一個不可恢復的錯誤發(fā)生,而發(fā)射機應立即中止文件傳輸。如果程序員沒有在有限的時間內(nèi)響應到一個數(shù)據(jù)包,發(fā)送器將重新發(fā)送相同的數(shù)據(jù)包。發(fā)射器將繼續(xù)重發(fā),直到接收到一個有效的反應,或者,超出文件傳輸被中止的時間。每個數(shù)據(jù)包接收和通過程序員驗證后,數(shù)據(jù)包中包含的數(shù)據(jù)被加載到的AT89C51單片機控制器編程。編程后,數(shù)據(jù)從控制器讀回并對接收的數(shù)據(jù)包進行驗證。成功的審查表明,成功的程序設(shè)計,使程序員發(fā)送ACK給傳送者。如果編程失敗,程序員發(fā)送CAN向傳送者發(fā)送信號中止文件傳輸。簡單的FTP減少了AT89C51的程序在編程時使用的內(nèi)存量。由于AT89C51的編程和擦除時間可以很容易地吸收,F(xiàn)TP發(fā)送和等待的性質(zhì)允許跨包延遲。對程序驗證的支持是透明的,不需要明確的命令或結(jié)果代碼,或轉(zhuǎn)讓的其他數(shù)據(jù)。上傳到程序控制器的文件是用英特爾MCS-51軟件開發(fā)包來創(chuàng)建的。在包中包括了MCS-51宏匯編,MCS-51單片機Relocator和連接器,以及一個有用的工具,OH。OH將8051絕對目標文件轉(zhuǎn)換為為等效的ASCII十六進制目標文件。遠程配置在測試配置中的遠程配置包括顯示應用程序和程序員電路,如前所述,連接到一個與Hayes兼容的普羅米修斯1200波特調(diào)制解調(diào)器。在正常操作時,應用程序執(zhí)行其內(nèi)部程序,而調(diào)制解調(diào)器和程序員監(jiān)測來電電話線。通話被檢測到并連接建立后,程序器強迫暫停其程序的執(zhí)行。新的程序就被下載并嵌入到應用程序中的AT89C51的編程。當編程完成后,應用軟件程序獲準開始其新的程序執(zhí)行,而程序控制器返回監(jiān)督下一個通話的電話線。程序控制輸出無效時程序控制器上電,允許應用程序正常運行。在配置調(diào)制解調(diào)器接聽來電后,程序控制器停止工作。是程序控制器不會影響到程序直到一個新的程序應用程序被下載。程序員通過發(fā)送控制在串行接口上的ASCII命令字符串來控制調(diào)制解調(diào)器,對此調(diào)制解調(diào)器響應海斯式調(diào)制解調(diào)器的ASCII數(shù)字代碼。該軟件是專為與海斯兼容使用的調(diào)制解調(diào)器,其中包括這里使用的1200普羅米修斯ProModem。串行接口,程序員通過它連接到調(diào)制解調(diào)器,它支持兩個握手信號,DTR和DSR。上電時,程序控制器判定DTR,斷定為DTR后調(diào)制解調(diào)器響應。如果調(diào)制解調(diào)器不響應任何命令,包括命令掛斷,程序控制器抬高DTR點位,強制調(diào)制解調(diào)器下降。當程序控制器停止工作后,監(jiān)測調(diào)制解監(jiān)聽電話線,等待來電呼叫。當檢測到輸入,調(diào)制解調(diào)器響應并試圖與輸入建立通信。如果建立了連接,調(diào)制解調(diào)器發(fā)送一個代碼,喚醒程序控制器。程序控制器驗證連接的代碼,并開始審查有效的數(shù)據(jù)包報頭。傳入數(shù)據(jù)包必須在少于30秒內(nèi)到達,否則調(diào)制解調(diào)器掛斷和程序控制器繼續(xù)停止工作,等待下一次呼叫。如果來電掛斷,在得到下一次呼叫之前,三十秒時間必須終止。在復位延遲時間傳入是被忽略的。如果復位延遲時間結(jié)束之前收到一個有效的數(shù)據(jù)包報頭,程序控制器將嘗試讀取和驗證傳入的數(shù)據(jù)包。在數(shù)據(jù)包的接收過程中的任何時間,無效字符,奇偶校驗錯誤或超時的時間內(nèi)接待字符將導致部分數(shù)據(jù)包被宣布無效,并丟棄。兩個數(shù)據(jù)包類型定義:數(shù)據(jù)和最終文件。數(shù)據(jù)包包含五個領(lǐng)域,除了包報頭,是一個可變長度的數(shù)據(jù)字段。數(shù)據(jù)字段包含程序的數(shù)據(jù)在應用程序中被寫入在AT89C51的控制器。負載地址字段中包含數(shù)據(jù)寫入的地址。末端文件包中包含與數(shù)據(jù)包相同的領(lǐng)域的文件,但該數(shù)據(jù)字段是空的。這包類型對程序控制器具有特殊的意義,如下所述。任何包含有效文種的數(shù)據(jù)包,記錄長度或校驗和無效。程序數(shù)據(jù)在一個無效的數(shù)據(jù)包被丟棄的處理過程中被積累。編程器給傳送者發(fā)送一個NAK作為信號數(shù)據(jù)包的接收和恢復為一個有效的數(shù)據(jù)包報頭審查的警示信號。第一個有效數(shù)據(jù)的接收引起編程器中斷應用程序控制器。該控制器的中斷響應放棄其正在運行的程序,并顯示一條消息,表明程序已經(jīng)被替代。如果這是由于接收了末端文件或者是電源觸發(fā)從而接收的第一個有效的數(shù)據(jù)包,運用必要的控制信號清除在應用控制器內(nèi)的記憶程序。然后編程器在程序模式中放置控制器。當接收到第一個和其后的有效數(shù)據(jù)程序包時,將它們分開,它們包含的數(shù)據(jù)被編程到程序包負載地址域中的地址中的應用控制器內(nèi)。編程后,從控制器內(nèi)將數(shù)據(jù)讀回并與接收到的數(shù)據(jù)包中的數(shù)據(jù)進行比較。成功的核查表明,方案是成功的,導致編程器向傳送者發(fā)送ACK信號。由于30秒的復位延遲,編程器重新對有效的數(shù)據(jù)包報頭進行測試。如果編程失敗,編程器向傳送者發(fā)送信號CAN中止文件傳輸。調(diào)制解調(diào)器掉線,程序器繼續(xù)休眠等待下一次呼叫。應用控制在程序模式中被保留,用以阻止它包含的不完整的或無效的程序。重要的是要注意,無效的數(shù)據(jù)包永遠不會規(guī)劃到應用程序控制器。這樣做將要求錯誤被糾正之前,編程器中的記憶程序被徹底抹掉,造成先前所有數(shù)據(jù)的不可恢復。根據(jù)末端文件的接收,編程器向閑置的狀態(tài)電源返回其控制輸出,允許應用程序控制器,開始執(zhí)行新的程序。然后編程器在三十秒延遲之下重新開始對一個數(shù)據(jù)包報進行審查。如果一個有效的數(shù)據(jù)包在30秒延遲之前接收,另一個只能被接受一個有效的末端文件而終止的程序循環(huán)開始執(zhí)行。如果復位在收有效末端文件之前終止,那么調(diào)制解調(diào)器會掉線,編程器停止工作,等待下一次傳入。在這種情況下應用控制器被保留在程序設(shè)計模式,以防止它執(zhí)行這個程序。要返回應用程序的正常運行,另一個傳入必須被接收,一個有效的程序文件被上傳,由末端文件包終止。AT89C51In-CircuitProgrammingThisapplicationnoteillustratesthein-circuitprogrammabilityoftheAtmelAT89C51Flash-basedmicrocontroller.Guidelinesfortheadditionofin-circuitprogrammabilitytoAT89C51applicationsarepresentedalongwithanapplicationexampleandthemodificationstoitrequiredtosupportin-circuitprogramming.AmethodisthenshownbywhichtheAT89C51microcontrollerintheapplicationcanbereprogrammedremotely,overacommercialtelephoneline.Thecircuitrydescribedinthisapplicationnotesupportsfivevoltprogrammingonly,requiringtheuseofanAT89C51-XX-5.ThestandardAT89C51requires12voltsforprogramming.ThesoftwareforthisapplicationmaybeobtainedbydownloadingfromAtmel’sGeneralConsiderationsCircuitryaddedtosupportAT89C51incircuitprogrammingshouldappeartransparenttotheapplicationwhenprogrammingisnottakingplace.EA/VPPmustbeheldhighduringprogramming.Inapplicationswhichdonotutilizeexternalprogrammemory,thispinmaybepermanentlystrappedtoVCC.Applicationsutilizingexternalprogrammemoryrequirethatthispinbeheldlowduringnormaloperation.RSTmustbeheldactiveduringprogramming.Ameansmustbeprovidedforoverridingtheapplicationresetcircuit,whichtypicallyassertsRSTonlybrieflyafterpowerisapplied.PSENmustbeheldlowduringprogramming,butmustnotbedrivenduringnormaloperation.ALE/PROGispulsedlowduringprogramming,butmustnotbedrivenduringnormaloperation.Duringprogramming,AT89C51I/Oportsareusedfortheapplicationofmodeselect,addressesanddata,possiblyrequiringthatthecontrollerbeisolatedfromtheapplicationcircuitry.Howthisisdoneisapplicationdependentandwillbeaddressedhereonlyingeneralterms.PortUsedforInputDuringprogramming,thecontrollermustbeisolatedfromsignalssourcedbytheapplicationcircuitry.Abufferwiththreestateoutputsmightbeinsertedbetweentheapplicationcircuitryandthecontroller,withthebufferoutputsthree-statedwhenprogrammingisenabled.Alternately,amultiplexermightbeusedtoselectbetweensignalsources,withsignalsappliedtothecontrollerbyeithertheapplicationcircuitryortheprogrammercircuitry.PortUsedforOutputNocircuitchangesarerequirediftheapplicationcircuitrycantoleratethestatechangeswhichoccurattheportduringprogramming.Ifthepriorstateoftheapplicationcircuitrymustbemaintainedduringprogramming,alatchmightbeinsertedbetweenthecontrollerandtheapplicationcircuitry.Thelatchisenabledduringprogramming,preservingthestateoftheapplicationcircuitry.AnApplicationExampleTheAT89C51applicationshowninFigure1isanimplementationofamovingdisplay.Thisapplicationwasselectedforitssimplicityandabilitytoshowgraphicallytheresultsofin-circuitreprogramming.Thetexttobedisplayedisprogrammedintothecontrolleraspartofitsfirmware,andcannotbechangedwithoutreprogrammingthedevice.Thedisplayedtextispresentedinoneoftwomodesselectedbythefour-positionDIPswitch.Inthefirstmode,onecharacteratatimeentersthedisplayfromtherightandmovesquicklytotheleftthrougheachelementofthedisplaytoitsfinalpositionintheassembledmessage.Inthesecondmode,themessagemovesthroughthedisplay,fromrighttoleft,withthedisplayactingasawindowontothemessage.Thismodeisfamiliarasthemethodoftenusedindisplaysofstockprices.TheoutputconsistsoffourDL1414T,four-digit,17-segmentalphanumericdisplayswithintegraldecodersanddrivers.Thisyields16totaldisplayelements,eachcapableofdisplayingdigits0-9,theuppercasealphabet,andsomepunctuationcharacters.ThedisplayablecharactercodesareASCII20H-5FH.Apower-onresetcircuitanda6-MHzcrystaloscillatorcompletetheapplication.Neitherexternalprogrammemorynorexternaldatamemoryisused.ModificationstotheApplicationtoSupportIn-CircuitProgrammingFigure2showstheapplicationmodifiedforin-circuitprogramming.Itisassumedthattheprogrammer,wheninactive,willneitherdrivenorexcessivelyloadtheapplication.Sincetheapplicationdoesnotuseexternalprogrammemory,EA/VPPonthecontrollerisconnectedtoVCC.Thismeetstherequirementforprogramming.Theresetcircuithasbeenmodifiedbytheadditionoftwotransistors,whichallowRSTonthecontrollertobeforcedhighbytheprogrammer.PSENandALE/PROG,unusedinthebasicapplication,areunderthedirectcontroloftheprogrammer.ProgrammingrequiresprogrammeraccesstoallofthefourAT89C51I/Oports,asdocumentedinthedatasheet.Theprogrammerisconnecteddirectlytothosecontrollerpinswhichareunusedbytheapplication,whileaccesstopinsusedbytheapplicationrequiresspecialtreatment,asexplainedinthefollowingparagraphs.TheleastsignificantfourbitsoftheaddressgeneratedbytheprogrammeraremultiplexedontoportoneofthecontrollerwiththedatafromtheDIPswitch.Notethatthefourresistorsaddedattheswitcharenotrequiredinthebasicapplication,sincetheAT89C51providesinternalpull-upsonportone.Duringthenormaloperationoftheapplication,controllerportszeroandtwoprovidedataandcontrolsignals(respectively)tothedisplays.Duringprogrammingandprogramverification,theprogrammerassertscontrolofportzeroandpartofporttwo.Theprogrammerisconnectedtoportszeroandtwowithoutbufferi

溫馨提示

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

最新文檔

評論

0/150

提交評論