版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計 說 明 書</p><p> 課程名稱 _單片機原理__________</p><p> 題 目 __數(shù)字電壓表設(shè)計________</p><p> 院 系 _電子信息工程學(xué)院_________</p><p> 班 級 自動化085班__________</p
2、><p> 學(xué)生姓名 _____________</p><p> 指導(dǎo)教師 ______________</p><p> 設(shè)計題目 數(shù)字電壓表設(shè)計 </p><p><b> 課程設(shè)計目的</b></p>
3、<p> 培養(yǎng)學(xué)生文獻檢索的能力,如何利用Internet檢索需要的文獻資料。</p><p> 培養(yǎng)學(xué)生綜合分析問題、發(fā)現(xiàn)問題和解決問題的能力。</p><p> 培養(yǎng)學(xué)生綜合運用知識的能力和工程設(shè)計的能力。</p><p> 培養(yǎng)學(xué)生理論聯(lián)系實際的能力。</p><p> 提高學(xué)生課程設(shè)計報告撰寫水平。</p
4、><p><b> 設(shè)計內(nèi)容和設(shè)計要求</b></p><p><b> 1、設(shè)計內(nèi)容</b></p><p> 利用51單片機與ADC0808或ADC0809設(shè)計一個數(shù)字電壓表,能夠測量0-5V之間的直流電壓值,四位數(shù)碼顯示或LM1602液晶顯示,但要求使用的元器件數(shù)目最少。</p><p>
5、?。?)使用ADC0808或ADC0809芯片做為電壓輸入的AD模塊;</p><p> ?。?)使用外部按鍵控制方式讀取電壓信號;</p><p> ?。?) 使用4位共陰極動態(tài)LED數(shù)碼管或LM1602液晶顯示屏作為輸出顯示部分;</p><p> ?。?)軟件可用C語言或匯編語言,硬件可用實驗箱或Protues仿真軟件實現(xiàn)功完整的能演示。</p>
6、<p><b> 2、設(shè)計要求</b></p><p> ?。?)設(shè)計單片機最小系統(tǒng)(包括復(fù)位按鈕、晶振電路等);</p><p> ?。?)共陰極LED數(shù)碼管或LM1602液晶顯示。</p><p> ?。?)用定時器中斷方式定時刷新或按鍵控制讀取方式顯示,使用按鍵控制時要求使用外部中斷方式。</p><p&
7、gt; ?。?)繪制實現(xiàn)本設(shè)計內(nèi)容的硬件電路(原理圖),系統(tǒng)的組成框圖。</p><p> ?。?)給出ADC0808或ADC0809的功能說明與使用方法;</p><p> ?。?)編寫本課程設(shè)計內(nèi)容的軟件設(shè)計(包含程序流程圖和對程序注釋)。</p><p><b> 三、硬件設(shè)計原理</b></p><p><
8、;b> 模數(shù)轉(zhuǎn)換原理:</b></p><p> 試驗中,我們選用ADC0809作為模數(shù)轉(zhuǎn)換的芯片,其為逐次逼近式AD轉(zhuǎn)換式芯片,其工作時需要一個穩(wěn)定的時鐘輸入,根據(jù)查找資料,得到ADC0809的時鐘頻率在10khz~1200khz,我們選擇典型值640khz。課題要求測量電壓范圍是0到5V,又ADC0809的要求:Vref+<=Vcc,Vref->=GND,故我們?nèi)ref+=
9、+5V,Vref-=0V。由于ADC0809有8個輸入通道可供選擇,我們選擇IN6通道,直接使ADC0809的A接地,B、C接高電平可以了,在當ADC0809啟動時ALE引腳電平正跳變時變可以鎖存A、B、C上的地址信息。ADC0809可以將從IN6得到的模擬數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的二進制數(shù),由于ADC0809輸出為8位的二進制數(shù),轉(zhuǎn)換時將0到5V分為255等分,所以我們可以得到轉(zhuǎn)換公式為x/255*5化簡為:x/51,x為得到的模擬數(shù)據(jù)量,也就
10、是直接得到的電壓量。在AD轉(zhuǎn)換完成后,ADC0809將在EOC引腳上產(chǎn)生一個8倍于自身時鐘周期的正脈沖,以此來作為轉(zhuǎn)換結(jié)束的標志。然后當OE引腳上產(chǎn)生高電平時,ADC0809將允許轉(zhuǎn)換完的二進制數(shù)據(jù)輸出。</p><p><b> 數(shù)據(jù)處理原理:</b></p><p> 由ADC0809的轉(zhuǎn)換原理可以知道我們從其得到數(shù)據(jù)還只是二進制數(shù)據(jù),我們還需要進一步處理來的
11、到x的十進制數(shù),并且對其進行精度處理,也就是課題要求的的精確到小數(shù)點后兩位,在這里我們用51單片機對數(shù)據(jù)進行處理。我們處理數(shù)據(jù)的思路是:首先將得到的二進制數(shù)直接除以十進制數(shù)51,然后取整為x的整數(shù)部分,然后就是將得到的余數(shù)乘以10,然后再除以51,再取整為x的十分位,最后將得到的余數(shù)除以5得到x的百分位。</p><p><b> 硬件原理圖:</b></p><p&g
12、t;<b> 系統(tǒng)框圖:</b></p><p><b> 四、主要器件介紹</b></p><p><b> 1、AT89C51</b></p><p> AT89C51芯片模型</p><p> AT89C51芯片的各引腳功能為:</p><p
13、> P0口:8位,漏極開路的雙向I/O口。這組引腳共有8條,P0.0為最低位。這8個引腳有兩種不同的功能,分別適用于不同的情況。</p><p> P1口:8位,準雙向I/O口,具有內(nèi)部上拉電阻。這8個引腳和P0口的8個引腳類似,P1.7為最高位,P1.0為最低位,當P1口作為通用I/O口使用時,P1.0-P1.7的功能和P0口的第一功能相同,也用于傳送用戶的輸入和輸出數(shù)據(jù)。</p>&l
14、t;p> P2口:這組引腳的第一功能與上述兩組引腳的第一功能相同即它可以作為通用I/O口使用,它的第一功能和P0口引腳的第二功能相配合,用于輸出片外存儲器的高8位地址,共同選中片外存儲器單元,但并不是像P0口那樣傳送存儲器的讀/寫數(shù)據(jù)。</p><p> P3口:這組引腳的第一功能和其余三個端口的第一功能相同,第二功能為控制功能,每個引腳并不完全相同,如下表2所示:</p><p&g
15、t; ALE/PROG:地址鎖存允許信號,輸出。配合P0口的第二功能使用,在訪問外部存儲器時,89C51的CPU在P0.0-P0.7引腳線去傳送隨后而來的片外存儲器讀/寫數(shù)據(jù)。在不訪問片外存儲器時,89C51自動在ALE線上輸出頻率為1/6震蕩器頻率的脈沖序列。該脈沖序列可以作為外部時鐘源或定時脈沖使用。</p><p> /EA:片外存儲器訪問允許信號,低電平有效??梢钥刂?9C51使用片內(nèi)ROM或使用片外
16、ROM,若/EA=1,則允許使用片內(nèi)ROM, 若/EA=0,則只使用片外ROM。</p><p> /PSEN:片外ROM的選通信號低電平有效。在訪問片外ROM時,89C51自動在/PSEN線上產(chǎn)生一個負脈沖,作為片外ROM芯片的讀選通信號。</p><p> RST:復(fù)位線,可以使89C51處于復(fù)位(即初始化)工作狀態(tài)。通常89C51復(fù)位有自動上電復(fù)位和人工按鍵復(fù)位兩種。</p
17、><p> XTAL1和XTAL2:片內(nèi)震蕩電路輸入線,這兩個端子用來外接石英晶體和微調(diào)電容,即用來連接89C51片內(nèi)OSC(震蕩器)的定時反饋回路。</p><p> 2、ADC0808的功能說明與使用方法</p><p> ADC0808是一種典型的A/D轉(zhuǎn)換器。它是由8位A/D轉(zhuǎn)換器,一個8路模擬量開關(guān);8位模擬量地址鎖存譯碼器和一個三態(tài)數(shù)據(jù)輸出鎖存器組成;
18、+5V單電源供電,轉(zhuǎn)化時間在100us左右;內(nèi)部沒有時鐘電路,故需外部提供時鐘信號。芯片模型如下圖所示:</p><p> ADC0808芯片模型</p><p><b> 功能說明:</b></p><p> (1) IN0~IN7:8路模擬量輸入端。</p><p> (2) D0~D7:8位數(shù)字量輸出端口。
19、</p><p> (3) START:A/D轉(zhuǎn)換啟動信號輸入端。</p><p> (4) ALE:地址鎖存允許信號,高電平有效。</p><p> (5) EOC:輸出允許控制信號,高電平有效。</p><p> (6) OE: 輸出允許控制信號,高電平有效。</p><p> (7) CLK:時鐘信號輸
20、入端。</p><p> (8)ADDA、ADDB、ADDC:轉(zhuǎn)換通道地址,控制8路模擬通道的切換。ADDA、ADDB、ADDC分別與地址線或數(shù)據(jù)線相連,三位編碼對應(yīng)8個通道地址端口,ADDA、ADDB、ADDC=000~111分別對應(yīng)IN0~IN7通道的地址端口。</p><p><b> 使用方法:</b></p><p> ADC0
21、808采用逐次比較的方法完成A/D轉(zhuǎn)換,由單一的+5V電源供電。片內(nèi)帶有鎖存功能的8路選1的模擬開關(guān),由ADDA、ADDB、ADDC的編碼來決定所選的通道。ADC0808完成一次轉(zhuǎn)換需100μs左右,它具有輸出TTL三態(tài)鎖存緩沖器,可直接連接到AT89C51的數(shù)據(jù)總線上。通過適當?shù)耐饨与娐?,ADC0808可對0~5V的模擬信號進行轉(zhuǎn)換。</p><p><b> 五、部分電路介紹</b>&
22、lt;/p><p><b> 1、晶振電路</b></p><p> 本設(shè)計系統(tǒng)采用內(nèi)部時鐘方式,利用單片機內(nèi)部的高增益反相放大器,外部電路簡,只需要一個晶振和 2個電容即可,如下圖所示。</p><p><b> 晶振電路</b></p><p> 電路中的器件選擇可以通過計算和實驗確定,也可
23、以參考一些典型電路。參數(shù),電路中,電容器C1和C2對震蕩頻率有微調(diào)作用,通常的取值范圍是30±10pF,在這個系統(tǒng)中選擇了33pF;石英晶振選擇范圍最高可選24MHz,它決定了單片機電路產(chǎn)生的時鐘信號震蕩頻率,在本系統(tǒng)中選擇的是12MHz,因而時鐘信號的震蕩頻率為12MHz。</p><p><b> 2、復(fù)位電路</b></p><p> 單片機在啟動
24、運行時都需要復(fù)位,使CPU和系統(tǒng)中的其他部件都處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。MCS-51單片機有一個復(fù)位引腳RST,采用施密特觸發(fā)輸入。當震蕩器起振后,只要該引腳上出現(xiàn)2個機器周期以上的高電平即可確保時器件復(fù)位。復(fù)位完成后,如果RST端繼續(xù)保持高電平,MCS-51就一直處于復(fù)位狀態(tài),只要RST恢復(fù)低電平后,單片機才能進入其他工作狀態(tài)。</p><p><b> 復(fù)位電路</b&g
25、t;</p><p><b> 3、模擬輸入電路</b></p><p> 通過可變電阻一端接電源+5v,一端接地GND,通過改變電阻的阻值,從而改變所測電壓值,實現(xiàn)電壓的模擬信號輸入。</p><p><b> 模擬輸入電路</b></p><p><b> 六、軟件設(shè)計<
26、/b></p><p><b> 程序流程圖:</b></p><p><b> 主程序流程圖</b></p><p><b> A/D轉(zhuǎn)換流程圖</b></p><p><b> 源程序:</b></p><p>
27、 /*************************************</p><p> *程序功能:實現(xiàn)數(shù)模轉(zhuǎn)換,并將結(jié)果在*</p><p> *數(shù)碼管上顯示出來。 */</p><p> #include <reg51.h></p><p> #include<absac
28、c.h></p><p> #define LED_Data P2</p><p> #define A 10</p><p> #define U 11</p><p> sbit LED1=P3^0;</p><p> sbit LED2=P3^1;</p><p>
29、sbit LED3=P3^2;</p><p> sbit LED4=P3^3;</p><p> sbit dp=P3^5;</p><p> #define LED_slect P3</p><p> #define uchar unsigned char</p><p> #define uin
30、t unsigned int</p><p> static uchar dispdata[4];</p><p> unsigned char code num[]={</p><p> 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x3e</p><p> };
31、 //數(shù)字編碼</p><p><b> //AD0809</b></p><p> #define XBYTE ((unsigned char volatile xdata *) 0) </p><p> #define adin XBYTE[0x7ff9] //0809的外部地址&l
32、t;/p><p> void delayus(uint us)</p><p><b> {</b></p><p> while(us--);</p><p><b> }</b></p><p> uchar ad_action(uchar ch)//0~255代表
33、0~5V,所以V=out*5.0/255</p><p><b> {</b></p><p> uchar read_data;</p><p> adin=ch; //ch:通道號</p><p> delayus(6);</p><p> read_data
34、=adin; //????</p><p> return read_data; //0809的輸出,數(shù)字量</p><p><b> /*</b></p><p> LCALL ad_action(C:0463)</p><p> MOV DPTR,#0x7FFF</p>
35、<p> MOV A,R7</p><p> MOVX @DPTR,A</p><p> MOV R7,#0x06</p><p> MOV R6,#0x00</p><p> LCALL delayus(C:02D3)</p><p> MOVX
36、 A,@DPTR</p><p> MOV R7,A</p><p><b> RET </b></p><p><b> */</b></p><p><b> } </b></p><p><b> //數(shù)碼管
37、顯示控制</b></p><p> void decodenum(float adv,uchar ch) //ch: AD通道號</p><p><b> {</b></p><p> uint temp;</p><p> temp=(uint)(adv*1000);//若顯示3位: temp=(u
38、int)(adv*100)</p><p> dispdata[0]=temp/1000;</p><p> dispdata[1]=temp/100%10;</p><p> dispdata[2]=temp/10%10;</p><p> dispdata[3]=temp%10;</p><p> dis
39、pdata[3]=ch;//可在最后1位顯示通道號</p><p><b> }</b></p><p> void select(uchar LED)</p><p><b> {</b></p><p> switch(LED)</p><p><b>
40、 {</b></p><p> case 0:LED1=0;break;</p><p> case 1:LED2=0;break;</p><p> case 2:LED3=0;break;</p><p> case 3:LED4=0;break;</p><p> default: LED
41、_slect=0xff;</p><p><b> }</b></p><p><b> }</b></p><p> void dispone(uchar LED,bit ifpoint,uchar number) //,number 0--9</p><p><b> {
42、 </b></p><p> select(LED);</p><p> if(ifpoint)</p><p><b> dp=1;</b></p><p><b> else</b></p><p><b> dp=0;</b
43、></p><p> LED_Data=num[number]|0x80;</p><p> delayus(200);</p><p> LED_slect=0xff;</p><p><b> }</b></p><p> void disp()</p><
44、p><b> {</b></p><p><b> uchar i;</b></p><p> bit point;</p><p> for(i=0;i<4;i++)</p><p><b> {</b></p><p><
45、b> if(i==0)</b></p><p><b> point=1;</b></p><p><b> else</b></p><p><b> point=0;</b></p><p> dispone(i,point,dispdata[i
46、]);</p><p><b> }</b></p><p><b> } </b></p><p> #define addo (5.0/255.0)</p><p> #define zero 0.005 //用于校準AD的誤差 </p><p> void
47、 main()</p><p><b> {</b></p><p> uint cnt=0;</p><p> //ad_action(0); </p><p><b> while(1)</b></p><p><b> {</b><
48、;/p><p> switch(cnt++)</p><p><b> {</b></p><p> case 0: decodenum(ad_action(0)*addo+zero,0);break; </p><p> /* case 0: decodenum(ad_action(0)*
49、addo+zero,0);break; </p><p> case 70: decodenum(ad_action(1)*addo+zero,1);break;</p><p> case 140: decodenum(ad_action(2)*addo+zero,2);break;</p><p> case 210: decodenum(ad_acti
50、on(3)*addo+zero,3);break;</p><p> case 280: decodenum(ad_action(4)*addo+zero,4);break;</p><p> case 350: decodenum(ad_action(5)*addo+zero,5);break;</p><p> case 420: decodenum(ad
51、_action(6)*addo+zero,6);break;</p><p> case 490: decodenum(ad_action(7)*addo+zero,7);break;*/</p><p> case 560:cnt=0;break;</p><p><b> }</b></p><p><b
52、> disp();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 七、總結(jié)與體會</b></p><p> 經(jīng)過一周的努力終于設(shè)計成功,LED的顯示結(jié)果和直接用數(shù)字電壓表測試模擬量輸入所
53、得結(jié)果幾乎一致,誤差完全在合理的范圍之內(nèi)。由于儀器誤差,LED顯示最大值只能是5.005V,離標準最大值5.0V已經(jīng)不遠,達到預(yù)期目的,設(shè)計成功。 本設(shè)計參考了教材上第十一章89C51與ADC0809轉(zhuǎn)換的接口連線,設(shè)計出電路圖的連線,從并中理解了許多基本的知識和接線方法,在程序的設(shè)計與電壓表調(diào)試的過程中遇到了很多的問題,剛開始時四個數(shù)碼管根本不顯示,后來發(fā)現(xiàn)用的是共陽極的數(shù)碼管,而設(shè)計是共陰極的,更換后數(shù)碼管終于顯示,但問題又
54、出現(xiàn)了,單路顯示和循環(huán)顯示的開關(guān)不能控制電路的單路顯示和循環(huán)顯示,經(jīng)過仔細地檢查電路和修改程序,采用中斷的方法,產(chǎn)生一次外部中斷0,程序轉(zhuǎn)移到單路顯示,按一次單路顯示開關(guān),地址加一,轉(zhuǎn)換的模擬通道相應(yīng)的加一,如果按下循環(huán)按鍵就返回循環(huán)顯示的程序,功夫不負有心人,最后終于調(diào)試成功。</p><p> 在此再次向帶領(lǐng)我們這次課程設(shè)計的老師說聲:謝謝! </p><p><b>
55、八、參考文獻</b></p><p> 1.胡健.單片機原理及接口技術(shù).北京:機械工業(yè)出版社,2004年10月</p><p> 2. 魏立峰.單片機原理及應(yīng)用技術(shù).北京大學(xué)出版社,2005年</p><p> 3. 何立民.單片機中級教程-原理與應(yīng)用. 北京航空航天大學(xué)出版社</p><p> 4. 苗紅霞.單片機實現(xiàn)數(shù)
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設(shè)計---數(shù)字電壓表
- 單片機課程設(shè)計-數(shù)字電壓表
- 單片機(數(shù)字電壓表)課程設(shè)計
- 單片機課程設(shè)計----數(shù)字電壓表
- 單片機課程設(shè)計-數(shù)字電壓表
- 單片機課程設(shè)計--數(shù)字電壓表
- 單片機課程設(shè)計--數(shù)字電壓表
- 單片機課程設(shè)計---數(shù)字電壓表設(shè)計
- 單片機課程設(shè)計---數(shù)字電壓表設(shè)計
- 單片機課程設(shè)計---數(shù)字電壓表設(shè)計
- 單片機課程設(shè)計--簡易數(shù)字電壓表
- 單片機(數(shù)字電壓表)課程設(shè)計.rar
- 單片機課程設(shè)計數(shù)字電壓表
- 單片機數(shù)字電壓表課程設(shè)計.doc
- 單片機課程設(shè)計報告-- 數(shù)字電壓表設(shè)計
- 單片機(數(shù)字電壓表)課程設(shè)計.rar
- 單片機(數(shù)字電壓表)課程設(shè)計.rar
- 單片機課程設(shè)計---數(shù)字電壓表 (2)
- 單片機課程設(shè)計報告——數(shù)字電壓表
- 課程設(shè)計----單片機簡易數(shù)字電壓表
評論
0/150
提交評論