單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)_第1頁(yè)
單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)_第2頁(yè)
單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)_第3頁(yè)
單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)_第4頁(yè)
單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)原理及應(yīng)用課程設(shè)計(jì)報(bào)告 學(xué) 院: 源與動(dòng)力工程學(xué)院_ 班 級(jí):_建電1001_ 學(xué) 號(hào):_101605121_ 姓 名:_劉茲平_時(shí) 間:2012-12-17 2012-12-21目 錄任務(wù)書(shū)1第一章方案設(shè)計(jì)2第二章硬件系統(tǒng)設(shè)計(jì)3第三章軟件設(shè)計(jì)7第四章系統(tǒng)調(diào)試10小 結(jié)11附錄1:原理圖13附錄2:源程序14單片機(jī)原理及應(yīng)用課程設(shè)計(jì)任務(wù)書(shū)1、題 目:基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)2、設(shè)計(jì)要求: (1)利用單片機(jī)及ADC0809構(gòu)成一個(gè)電壓采集系統(tǒng),實(shí)現(xiàn)8通道循環(huán)采樣,循環(huán)顯示。 (2)顯示采用ZLG7290,顯示精度到小數(shù)點(diǎn)后一位。第一章 方案設(shè)計(jì) 1、總體設(shè)計(jì)方案本設(shè)計(jì)使用ADC0809對(duì)

2、模擬信號(hào)進(jìn)行轉(zhuǎn)換,然后經(jīng)過(guò)AT89C51轉(zhuǎn)換后的結(jié)果來(lái)進(jìn)行運(yùn)算和處理,然后由數(shù)碼管直接顯示數(shù)字電壓信號(hào),其中分辨率為0.02v。用電位器控制輸入電壓,經(jīng)ADC0809模數(shù)轉(zhuǎn)換,然后數(shù)據(jù)被單片機(jī)采集,并經(jīng)過(guò)單片機(jī)利用相應(yīng)的算法進(jìn)行調(diào)整,最后利用串口將處理好的數(shù)據(jù)輸出至數(shù)碼管。其中ADC0809通過(guò)IN0IN7采集模擬電壓信號(hào)送給單片機(jī),單片機(jī)將采集來(lái)的信號(hào)通過(guò)一定的處理然后通過(guò)串口輸出至共陽(yáng)極的LED數(shù)碼管顯示采集到的電壓值。2、總體設(shè)計(jì)框圖時(shí)鐘電路 復(fù)位電路A/D轉(zhuǎn)換電路測(cè)量電壓輸入顯示系統(tǒng)AT89C51 P1 P2 P2 P0 第二章 硬件系統(tǒng)設(shè)計(jì)1、 硬件系統(tǒng)設(shè)計(jì)思路 8路數(shù)字電壓表應(yīng)用系

3、統(tǒng)硬件電路由單片機(jī)、A/D轉(zhuǎn)換器、數(shù)碼管顯示電路等組成。ADC0809具有8路模擬量輸入通道IN0-IN7,通過(guò)3位地址輸入端C、B、A(引腳23-25)進(jìn)行選擇。引腳22為地址鎖存控制端ALE,當(dāng)輸入為高電平時(shí),C、B、A引腳輸入的地址鎖存于ADC0809內(nèi)部是鎖存器中,經(jīng)內(nèi)部譯碼電路譯碼選中相應(yīng)的模擬通道。引腳6為啟動(dòng)轉(zhuǎn)換控制端START,當(dāng)輸入一個(gè)2s寬的高電平脈沖時(shí),就啟動(dòng)ADC0809開(kāi)始對(duì)輸入通道的模擬量進(jìn)行轉(zhuǎn)換。引腳7為A/D轉(zhuǎn)換器,當(dāng)開(kāi)始轉(zhuǎn)換時(shí),EOC信號(hào)為低電平,經(jīng)過(guò)一段時(shí)間,轉(zhuǎn)換結(jié)束,轉(zhuǎn)換結(jié)束信號(hào)EOC輸出高電平,轉(zhuǎn)換結(jié)果存放于ADC0809內(nèi)部的輸出數(shù)據(jù)寄存器中。引腳9腳

4、為A/D轉(zhuǎn)換數(shù)據(jù)輸出允許控制端OE,當(dāng)OE為高電平時(shí),存放于輸出數(shù)據(jù)鎖存器中的數(shù)據(jù)通過(guò)ADC0809的數(shù)據(jù)線D0D7輸出。引腳10為ADC0809的時(shí)鐘信號(hào)輸入端CLOCK。在連接時(shí),ADC0809的數(shù)據(jù)線D0D7與AT89S52的P0口相連接,ADC0809的地址引腳、地址鎖存端ALE、啟動(dòng)信號(hào)START、數(shù)據(jù)輸出允許控制端OE分別與AT89S52的P2口相連接,轉(zhuǎn)換結(jié)束信號(hào)EOC與AT89S52的P3.7相連接。時(shí)鐘信號(hào)輸入端CLOCK信號(hào),由單片機(jī)的地址鎖存信號(hào)ALE得到。2、 模塊分析 (1)AT89C51單片機(jī) P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門電流。

5、當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/ 地址的第八位。在這里P0口作為輸入與輸出分別與ADC0808的輸出端和LCD顯示的輸入端相連,且P0外部被阻值為1K的電阻拉高。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八

6、位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。這里只用到了P2.0P2.3四個(gè)端口,其中P2.1P2.3都是作為輸出端口控制顯示電路的寄存器選擇、讀寫信號(hào)和使能端口。 P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為AT89C51的一些特殊功能口,在這里用到了P3.3 /INT1(外部中斷1)、 P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)、P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)。 (2)A/D轉(zhuǎn)

7、換IN0IN7為8路模擬量輸入端,這里只接一路電壓信號(hào),其輸入信號(hào)是由直流電源及可調(diào)電阻提供。 OUT1OUT8為8位二進(jìn)制數(shù)字量輸出端,其另一端連接到AT89C51單片機(jī)進(jìn)行數(shù)值轉(zhuǎn)換。 ADDA、ADDB、ADDC為3位片選地址輸入線,用于選通8路模擬輸入中的一路。 ALE為地址鎖存允許信號(hào),由單片機(jī)P3.6口寫信號(hào)與P2.0口相或取反輸入,高電平有效。 START為 AD轉(zhuǎn)換啟動(dòng)脈沖輸入端,由單片機(jī)P3.6口寫信號(hào)與P2.0口相或取反輸入一個(gè)正脈沖使其啟動(dòng)(脈沖上升沿使0808復(fù)位,下降沿啟動(dòng)A/D轉(zhuǎn)換)。 EOC為 AD轉(zhuǎn)換結(jié)束信號(hào),當(dāng)AD轉(zhuǎn)換結(jié)束時(shí),此端輸出一個(gè)高電平取反給P3.3口(

8、轉(zhuǎn)換期間一直為低電平)。 OE為數(shù)據(jù)輸出允許信號(hào),高電平有效。當(dāng)AD轉(zhuǎn)換結(jié)束時(shí),此端由單片機(jī)P3.7讀信號(hào)與P2.0口相或后取反輸入一個(gè)高電平,才能打開(kāi)輸出三態(tài)門,輸出數(shù)字量。 (3)顯示電路 RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。由單片機(jī)P2.1口控制R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。由單片機(jī)P2.2口控制E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。由單片機(jī)P2.3口控制D0D7為

9、8位雙向數(shù)據(jù)線。由單片機(jī)P0口輸入,經(jīng)過(guò)阻值為1K的上拉電阻連接。第三章 軟件設(shè)計(jì)1、 設(shè)計(jì)說(shuō)明本實(shí)驗(yàn)采用AT89C51 單片機(jī)芯片配合 ADC0809 模/數(shù)轉(zhuǎn)換芯片構(gòu)成一個(gè)簡(jiǎn) 易的數(shù)字電壓表,原理電路如圖1-1 所示。該電路通過(guò) ADC0809 芯片采樣輸入口 AI0 輸入的05V 的模擬量電壓,經(jīng)過(guò)模/數(shù)轉(zhuǎn)換后,產(chǎn)生相應(yīng)的數(shù)字量經(jīng)過(guò)其輸出通道D0D7 傳送給 AT89C51 芯片的F0口。AT89C51負(fù)責(zé)把接收到的數(shù)字量經(jīng)過(guò)數(shù)據(jù)處理,產(chǎn)生正確的7段數(shù)碼管的顯示段碼,并通過(guò)P1 口傳送給數(shù)碼管。同時(shí)它還通過(guò)其三位 I/O 口 P3.0、P3.1、P3.2 產(chǎn)生位片選信號(hào),控制數(shù)碼管的亮滅

10、。另外,AT89C51 還控制著 ADC0809 的工作。其ALE管腳為 ADC0809提供了 1MHZ 工作的時(shí)鐘脈沖;P2.3 控制 ADC0809 的地址鎖存端(ALE); P2.4 控制 ADC0809 的啟動(dòng)端(START); P2.5 控制 ADC0809 的輸出允許端(OE); P3.7 控制 ADC0809 的轉(zhuǎn)換結(jié)束信號(hào)(EOC)。2、 主程序設(shè)計(jì)主程序包含初始化部分、調(diào)用A/D轉(zhuǎn)換子程序和調(diào)用顯示程序,如圖所示。初始化部分包含存放通道數(shù)據(jù)緩沖區(qū)初始化和顯示緩沖區(qū)初始化。3、 A/D轉(zhuǎn)換子程序設(shè)計(jì) A/D轉(zhuǎn)換子程序用于對(duì)ADC0809的8路輸入模擬電壓進(jìn)行A/D轉(zhuǎn)換,并將轉(zhuǎn)換

11、的數(shù)值存入8個(gè)相應(yīng)的存儲(chǔ)單元中,如圖所示。A/D轉(zhuǎn)換子程序每隔一定時(shí)間調(diào)用一次,即隔一段時(shí)間對(duì)輸入電壓采樣一次。4、 顯示子程序設(shè)計(jì) 顯示子程序采用動(dòng)態(tài)掃描法實(shí)現(xiàn)八位數(shù)碼管的數(shù)值顯示。高位數(shù)碼管顯示通道數(shù),低兩位顯示所測(cè)電壓數(shù)值。測(cè)量所得的A/D轉(zhuǎn)換數(shù)據(jù)放在70H內(nèi)存單元中,測(cè)量數(shù)據(jù)在顯示時(shí)需轉(zhuǎn)換成10進(jìn)制BCD碼放在66H6DH單元中。寄存器R1用作顯示數(shù)據(jù)地址指針。第四章 系統(tǒng)調(diào)試1、 由于單片機(jī)為8位處理器,當(dāng)輸入電壓為5.00V時(shí),輸出數(shù)據(jù)值為255(FFH)因此單片機(jī)最大的數(shù)值分辨率為0.0196V(5/255)。這就決定了該電壓表的最大分辨率(精度)只能達(dá)到0.0196V。測(cè)試時(shí)電

12、壓數(shù)值的變化一般以0.02的電壓幅度變化,如要獲得更高的精度要求,應(yīng)采用12位、13位的A/D轉(zhuǎn)換器或者使用雙字節(jié)指令。2、 由于實(shí)驗(yàn)箱只有兩個(gè)電位器接口,因此要實(shí)現(xiàn)八通道,可通過(guò)其它不用接線口串聯(lián)實(shí)現(xiàn)等電位,進(jìn)而實(shí)現(xiàn)模擬電壓八通道輸入。3、當(dāng)顯示過(guò)快時(shí)可通過(guò)改變程序設(shè)置跳轉(zhuǎn)時(shí)間,可便于觀察。小 結(jié)經(jīng)過(guò)一個(gè)多星期的不斷學(xué)習(xí)、不斷嘗試、不斷提問(wèn),單片機(jī)課程設(shè)計(jì)終于完成了。課題不是很難,但是由于是第一次接觸這種類型的學(xué)習(xí)過(guò)程,所以一開(kāi)始效率有點(diǎn)低,主要是無(wú)從下手,不知該做什么。課程設(shè)計(jì)前一天我在網(wǎng)上搜索了很多關(guān)于課題的文檔資料,有一定參照作用,但是也有很多不同之處,比如選用的單片機(jī)器件、A/D轉(zhuǎn)換

13、器件或者顯示器件的不同,往往會(huì)令我在設(shè)計(jì)時(shí)不知如何正確接線。本次課程設(shè)計(jì)是理論與實(shí)踐相結(jié)合的一次實(shí)用性學(xué)習(xí),要學(xué)會(huì)學(xué)以致用,將所學(xué)知識(shí)用到實(shí)處。這在編程調(diào)試時(shí)尤其突出重要,比如小數(shù)點(diǎn)的顯示,精度的提高,誤差的減小,這些內(nèi)容一部分取決于器件的優(yōu)劣,還有一部分來(lái)自于程序設(shè)計(jì)的好壞。所以,熟練匯編語(yǔ)言,熟練編程是我從此次課程設(shè)計(jì)中得到的一個(gè)重要啟示,因?yàn)檫@將是我們將來(lái)學(xué)以致用的關(guān)鍵。我的課題雖然是基于單片機(jī)的數(shù)字電壓表設(shè)計(jì),但是實(shí)際上就是一個(gè)數(shù)據(jù)采集的程序設(shè)計(jì),只不過(guò)這里數(shù)據(jù)采集的是模擬電壓罷了,采集后的數(shù)據(jù)然后通過(guò)ZLG7290顯示出來(lái)。顯示程序來(lái)源于以前的實(shí)驗(yàn),我的U盤里面正好有,因此節(jié)省了不少

14、力氣。其次在調(diào)試程序仿真時(shí),需要認(rèn)真仔細(xì),隨機(jī)應(yīng)變。課程設(shè)計(jì)時(shí)間雖短暫,卻是另一種完全不同的學(xué)習(xí)過(guò)程,它讓我意識(shí)到理論聯(lián)系實(shí)踐的重要性以及應(yīng)用時(shí)可能會(huì)出現(xiàn)很多意想不到的問(wèn)題,這些東西不是書(shū)本上的知識(shí)可以學(xué)到的,而要通過(guò)實(shí)踐不斷積累經(jīng)驗(yàn),不斷虛心請(qǐng)教和學(xué)習(xí)才能真正掌握的,因此以后要積極實(shí)驗(yàn)、實(shí)踐,認(rèn)真學(xué)習(xí)這些課本之外的東西??偟膩?lái)說(shuō),課程設(shè)計(jì)還是讓我學(xué)到了不少新知識(shí),也有不少新領(lǐng)悟,當(dāng)然,對(duì)單片機(jī)也有了更深層次的認(rèn)識(shí),也讓我對(duì)單片機(jī)有了更高的興趣,希望學(xué)到更多關(guān)于單片機(jī)的知識(shí),做更多的實(shí)踐內(nèi)容。附錄1:原理圖附錄2:源程序SDABITP3.0;I2C總線定義SCLBITP3.1RSTBITP1.

15、7MTDEQU63H;發(fā)送數(shù)據(jù)緩沖器ZLG7290EQU70H;ZLG7290的器件地址ACKBIT10H;應(yīng)答標(biāo)志位SLADATA60H;器件的從地址SUBADATA61H;器件的子地址NUMBYTEDATA62H;讀/寫的字節(jié)數(shù)變量 ORG 00H SJMP MAIN ORG 00BH LJMP INT_T0 ORG 0003H LJMP INT_EX0ORG 030HMAIN: MOV SP,#70HMOV R2,#08H MOV TMOD, #01H MOV TL0, #0B0H MOV TH0, #3CH SETB EX0 SETB IT0 SETB ET0 SETB EA SETB

16、 TR0 MOV 66H,#0MOV 67H,#0MOV 68H,#0MOV 69H,#0MOV 6AH,#0MOV 6BH,#0MOV 6CH,#0MOV 6DH,#0MOV R1,#30HMOV R7,#20SJMP $INT_T0:MOV TL0, #0B0H MOV TH0, #3CHMOV DPTR,#0000HMOVX DPTR,AMOV R0,#30HMOV A,R1MOV B,#5DIV ABMOV B,#10DIV ABMOV 66H,BMOV B,#10DIV ABMOV 67H,BORL 67H,#80HMOV 68H,AMOV 6DH,R1ANL 6DH,#07HLCA

17、LL LEDDISPDJNZ R7,T0_ENDMOV R7,#20INC R1CJNE R1,#38H,T0_ENDMOV R1,#30HT0_END:RETIINT_EX0:MOVX A,DPTRMOV R0,A INC DPTRINC R0CJNE R0,#38H,LOPRETILOP: MOVX DPTR,ARETIleddisp:push psw push accsetb rs1setb rs0mov r0,#66Hmov r4,#8mov r5,#60hloop: MOV MTD,R5 MOV MTD+1,R0MOV SLA,#70HMOV SUBA,#07HMOV NUMBYTE

18、,#02HLCALL IWRNBYTELCALL DELY1INC R0INC R5DJNZ R4,LOOPPOP ACCPOP PSWRETre7290: clr rst lcall delysetb rstlcall delyretdely :mov r7,#80Hmin :djnz r7,ys500 retys500 :lcall ys500us ljmp minys500us:mov r6,#80h djnz r6,$retdely1 :mov r7,#40h djnz r7,$ret;啟動(dòng)I2C總線子程序 START: nop nop nop SETB SDA NOP SETB SC

19、L ;起始條件建立時(shí)間大于4.7us NOP NOP NOP NOP NOP CLR SDA NOP ;起始條件鎖定時(shí)大于4us NOP NOP NOP NOP CLR SCL ;鉗住總線,準(zhǔn)備發(fā)數(shù)據(jù) NOP nop nop RET;結(jié)束總線子程序STOP: NOP NOP NOP CLR SDA NOP SETB SCL ;發(fā)送結(jié)束條件的時(shí)鐘信號(hào) NOP ;結(jié)束總線時(shí)間大于4us NOP NOP NOP NOP SETB SDA ;結(jié)束總線 NOP ;保證一個(gè)終止信號(hào)和起始信號(hào)的空閑時(shí)間大于4.7us NOP NOP NOP nop nop RET;檢查應(yīng)答位子程序;返回值,ACK=1時(shí)表示有應(yīng)答CACK:NOP NOP NOPSETB SDA NOP NOP SETB SCL CLR ACK NOP NOP MOV C,SDA JC CEND SETB ACK ;判斷應(yīng)答位CEND:NOP CLR SCL NOPnopnop R

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論