單片機(jī)數(shù)字電壓表設(shè)計(jì)LED顯示含C源代碼_第1頁
單片機(jī)數(shù)字電壓表設(shè)計(jì)LED顯示含C源代碼_第2頁
單片機(jī)數(shù)字電壓表設(shè)計(jì)LED顯示含C源代碼_第3頁
單片機(jī)數(shù)字電壓表設(shè)計(jì)LED顯示含C源代碼_第4頁
單片機(jī)數(shù)字電壓表設(shè)計(jì)LED顯示含C源代碼_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選文檔1.緒論31.1 課程設(shè)計(jì)要求31.2 數(shù)字電壓表介紹32.硬件單元電路設(shè)計(jì)32.1數(shù)字電壓表結(jié)構(gòu)框圖32.1.1 AT89C51單片機(jī)簡介42.1.2 ADC0832轉(zhuǎn)換器簡介42.1.3 時(shí)鐘電路62.1.4 復(fù)位電路62.1.5 LED顯示電路73.軟件單元電路設(shè)計(jì)73.1 主程序流程圖73.2顯示子程序流程圖83.3 A/D轉(zhuǎn)換子程序流程圖93.4 數(shù)據(jù)處理子程序流程圖94.數(shù)字電壓表仿真設(shè)計(jì)圖與實(shí)物圖104.1 仿真圖104.2 器件清單104.3 硬件電路實(shí)物圖115.程序代碼126.項(xiàng)目設(shè)計(jì)總計(jì)197.參考文獻(xiàn)191. 緒論1.1 課程設(shè)計(jì)要求使用單片機(jī)AT89C51和A

2、DC0832設(shè)計(jì)一個(gè)數(shù)字電壓表,能夠測(cè)量05V之間的直流電壓值,兩位數(shù)碼顯示。在單片機(jī)的作用下,能監(jiān)測(cè)兩路的輸入電壓值,用8位串行A/D轉(zhuǎn)換器,8位辨別率,逐次靠近型,基準(zhǔn)電壓為 5V;能用兩位LED進(jìn)行輪番顯示或單路選擇顯示,顯示精度0.1伏。1.2 數(shù)字電壓表介紹數(shù)字電壓表簡稱DVM,數(shù)字電壓表基本原理是將輸入的模擬電壓信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),再進(jìn)行輸出顯示。而A/D轉(zhuǎn)換器的作用是將連續(xù)變化的模擬信號(hào)量轉(zhuǎn)化為離散的數(shù)字信號(hào),器基本結(jié)構(gòu)是由采樣保持,量化,編碼等幾部分組成。因此AD轉(zhuǎn)換是此次設(shè)計(jì)的核心元件。輸入的模擬量經(jīng)過AD轉(zhuǎn)換器轉(zhuǎn)換,再由驅(qū)動(dòng)器驅(qū)動(dòng)顯示器輸出,便得到測(cè)量的數(shù)字電壓。2. 硬件

3、單元電路設(shè)計(jì)2.1數(shù)字電壓表結(jié)構(gòu)框圖結(jié)構(gòu)如(圖1)所示 圖12.1.1 AT89C51單片機(jī)簡介AT89C51是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件接受ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中心處理器和ISP Flash存儲(chǔ)單元,AT89C51在眾多嵌入式把握應(yīng)用系統(tǒng)中得到廣泛應(yīng)用。51單片機(jī)內(nèi)包含以下幾個(gè)部件:1) 8位微處理器(CPU)。2) 數(shù)據(jù)存儲(chǔ)器(12

4、8B RAM)。3) 程序存儲(chǔ)器(ROM/EPROM)。4) 4個(gè)8位可編程并行I/O口(P0口,P1口,P2口,P3口)。5) 1個(gè)全雙工的異步串行口。6) 2個(gè)16定時(shí)器/計(jì)數(shù)器。7) 中斷系統(tǒng)。8) 特殊功能寄存器(SFR)。圖2單片機(jī)片內(nèi)結(jié)構(gòu)如(圖2)所示: 2.1.2 ADC0832轉(zhuǎn)換器簡介ADC0832 是美國國家半導(dǎo)體公司生產(chǎn)的一種8 位辨別率、雙通道A/D轉(zhuǎn)換芯片。由于它體積小,兼容性強(qiáng),性價(jià)比高而深受單片機(jī)愛好者及企業(yè)歡迎,其目前已經(jīng)有很高的普及率。學(xué)習(xí)并使用ADC0832 可是使我們了解A/D轉(zhuǎn)換器的原理,有助于我們單片機(jī)技術(shù)水平的提高。芯片如下(圖3)所示:圖3芯片接口

5、說明如下:CS_ 片選使能,低電平芯片使能。CH0 模擬輸入通道0,或作為IN+/-使用。CH1 模擬輸入通道1,或作為IN+/-使用。GND 芯片參考0 電位(地)。DI 數(shù)據(jù)信號(hào)輸入,選擇通道把握。DO 數(shù)據(jù)信號(hào)輸出,轉(zhuǎn)換數(shù)據(jù)輸出。CLK 芯片時(shí)鐘輸入。Vcc/REF 電源輸入及參考電壓輸入(復(fù)用)。工作原理如下:正常狀況下ADC0832 與單片機(jī)的接口應(yīng)為4條數(shù)據(jù)線,分別是CS、CLK、DO、DI。但由于DO端與DI端在通信時(shí)并未同時(shí)有效并與單片機(jī)的接口是雙向的,所以電路設(shè)計(jì)時(shí)可以將DO和DI 并聯(lián)在一根數(shù)據(jù)線上使用。當(dāng)ADC0832未工作時(shí)其CS輸入端應(yīng)為高電平,此時(shí)芯片禁用,CLK

6、和DO/DI 的電平可任意。當(dāng)要進(jìn)行A/D轉(zhuǎn)換時(shí),須先將CS使能端置于低電平并且保持低電平直到轉(zhuǎn)換完全結(jié)束。此時(shí)芯片開頭轉(zhuǎn)換工作,同時(shí)由處理器向芯片時(shí)鐘輸入端CLK 輸入時(shí)鐘脈沖,DO/DI端則使用DI端輸入通道功能選擇的數(shù)據(jù)信號(hào)。在第1 個(gè)時(shí)鐘脈沖的下沉之前DI端必需是高電平,表示啟始信號(hào)。在第2、3個(gè)脈沖下沉之前DI端應(yīng)輸入2 位數(shù)據(jù)用于選擇通道功能。當(dāng)此2 位數(shù)據(jù)為“1”、“0”時(shí),只對(duì)CH0 進(jìn)行單通道轉(zhuǎn)換。當(dāng)2位數(shù)據(jù)為“1”、“1”時(shí),只對(duì)CH1進(jìn)行單通道轉(zhuǎn)換。當(dāng)2 位數(shù)據(jù)為“0”、 “0”時(shí),將CH0作為正輸入端IN+,CH1作為負(fù)輸入端IN-進(jìn)行輸入。當(dāng)2 位數(shù)據(jù)為“0”、“1”

7、時(shí),將CH0作為負(fù)輸入端IN-,CH1 作為正輸入端IN+進(jìn)行輸入。到第3 個(gè)脈沖的下沉之后DI端的輸入電平就失去輸入作用,此后DO/DI端則開頭利用數(shù)據(jù)輸出DO進(jìn)行轉(zhuǎn)換數(shù)據(jù)的讀取。從第4個(gè)脈沖下沉開頭由DO端輸出轉(zhuǎn)換數(shù)據(jù)最高位DATA7,隨后每一個(gè)脈沖下沉DO端輸出下一位數(shù)據(jù)。直到第11個(gè)脈沖時(shí)發(fā)出最低位數(shù)據(jù)DATA0,一個(gè)字節(jié)的數(shù)據(jù)輸出完成。也正是從今位開頭輸出下一個(gè)相反字節(jié)的數(shù)據(jù),即從第11個(gè)字節(jié)的下沉輸出DATD0。隨后輸出8位數(shù)據(jù),到第19 個(gè)脈沖時(shí)數(shù)據(jù)輸出完成,也標(biāo)志著一次A/D轉(zhuǎn)換的結(jié)束。最終將CS置高電平禁用芯片,直接將轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行處理就可以了。2.1.3 時(shí)鐘電路XTAL

8、1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時(shí),外部振蕩信號(hào)應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時(shí),時(shí)鐘發(fā)生器對(duì)振蕩脈沖二分頻,如晶振為12MHz,時(shí)鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內(nèi)選擇。電容取30PF左右。系統(tǒng)的時(shí)鐘電路設(shè)計(jì)是接受的內(nèi)部方式,即利用芯片內(nèi)部的振蕩電路如下(圖4)所示:圖42.1.4 復(fù)位電路由電容串聯(lián)電阻構(gòu)成,由圖并結(jié)合"電容電壓不能突變"的性質(zhì),可以知道,當(dāng)系統(tǒng)一上電,RST腳將會(huì)消滅高電平,并且,這個(gè)高電平持續(xù)的時(shí)間由電路的RC值來打算.典型的51單片機(jī)當(dāng)RST腳的高電平持續(xù)兩個(gè)機(jī)器周期以

9、上就將復(fù)位,所以,適當(dāng)組合RC的取值就可以保證牢靠的復(fù)位.一般教科書推舉C 取10u,R取8.2K.當(dāng)然也有其他取法的,原則就是要讓RC組合可以在RST腳上產(chǎn)生不少于2個(gè)機(jī)周期的高電平.至于如何具體定量計(jì)算,可以參考電路分析相關(guān)書籍.復(fù)位電路如下(圖5)所示。圖52.1.5 LED顯示電路本項(xiàng)目所用顯示屏為4位LED顯示屏。本LED顯示器為8段(DP為小數(shù)點(diǎn)段),每一段為一個(gè)發(fā)光二極管。發(fā)光二極管有共陽極和共陰極兩種。本顯示器的發(fā)光二極管為共陽極數(shù)碼管。發(fā)光二極管的陽極連接在一起,通常在此共陽極接正電壓,當(dāng)某個(gè)發(fā)光二極管的陰極接低電平常,發(fā)光二極管被點(diǎn)亮,相應(yīng)的段被顯示。通過給LED顯示器供應(yīng)

10、不同的代碼,是這些不同的LED顯示器相應(yīng)的段發(fā)光顯示不同的字型,這些代碼稱為段碼。本項(xiàng)目所用段碼值如下 (表 1) 所示:顯示字符0123456789共陽極段碼0x030x9f0x250x0d0x990x490x410x1f0x0109表13. 軟件單元電路設(shè)計(jì)3.1 主程序流程圖主程序流程圖如下(圖6)所示:圖63.2顯示子程序流程圖顯示子程序流程圖如下(圖7)所示:圖73.3 A/D轉(zhuǎn)換子程序流程圖A/D轉(zhuǎn)換子程序流程圖如下(圖8)所示: 圖83.4 數(shù)據(jù)處理子程序流程圖數(shù)據(jù)處理子程序流程圖,如下(圖9)所示:圖9 4. 數(shù)字電壓表仿真設(shè)計(jì)圖與實(shí)物圖4.1 仿真圖如下(圖10)所示:圖10

11、4.2 器件清單表2如下(表2)所示所用器件名稱型號(hào)及大小個(gè)數(shù)單片機(jī)開發(fā)板AT89C51一個(gè)滑動(dòng)變阻器10K兩個(gè)AD轉(zhuǎn)換器ADC0832一個(gè)LED共陽一個(gè)跳線插口-若干跳線-若干4.3 硬件電路實(shí)物圖圖11電路實(shí)物圖如下(圖11)所示:圖12電路實(shí)物圖如下(圖12)所示:5. 程序代碼#include <reg51.h>#include <intrins.h>/*端口定義*/sbit CS = P35;sbit Clk = P33;sbit DATI = P34;sbit DATO = P34;sbit P20=P24 ;/*定義全局變量*/unsigned char

12、dat = 0x00; /AD值unsigned char count = 0x00; /定時(shí)器計(jì)數(shù)unsigned char CH; /通道變量unsigned char dis = 0x00, 0x00,0x00; /顯示數(shù)值/*共陽LED段碼表*/unsigned char code tab=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09;char code tablewe= 0xfd,0xfb,0xf7,0xef,0xdf,0xfe ;/*函數(shù)功能:AD轉(zhuǎn)換子程序入口參數(shù):CH出口參數(shù):dat*/unsigned char adc08

13、32(unsigned char CH) unsigned char i,test,adval; adval = 0x00; test = 0x00; Clk = 0; /初始化 DATI = 1; _nop_(); CS = 0; _nop_(); Clk = 1; _nop_(); if ( CH = 0x00 ) /通道選擇 Clk = 0; DATI = 1; /通道0的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 0; /通道0的其次位 _nop_(); Clk = 1; _nop_(); else Clk = 0; DATI = 1;

14、 /通道1的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 1; /通道1的其次位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 1; for( i = 0;i < 8;i+ ) /讀取前8位的值 _nop_(); adval <<= 1; Clk = 1; _nop_(); Clk = 0; if (DATO) adval |= 0x01; else adval |= 0x00; for (i = 0; i < 8; i+) /讀取后8位的值 test >>= 1; if

15、 (DATO) test |= 0x80; else test |= 0x00; _nop_(); Clk = 1; _nop_(); Clk = 0; if (adval = test) /比較前8位與后8位的值,假如不相同舍去。若始終消滅顯示為零,請(qǐng)將該行去掉 dat = test; nop_(); CS = 1; /釋放ADC0832 DATO = 1; Clk = 1; return dat;/*函數(shù)功能:延時(shí)子程序入口參數(shù):出口參數(shù):*/void delay(void) int k; for(k=10;k<500;k+);/*函數(shù)功能:將0-255級(jí)換算成0.00-5.00的電

16、壓數(shù)值入口參數(shù):i出口參數(shù):*/void convdata(unsigned char i) dis0 = i/51; /個(gè)位 dis1 = (i%51)*10/51; /小數(shù)點(diǎn)后第一位 dis2 = (i%51)*10%51)*10/51; /小數(shù)點(diǎn)后其次位/*函數(shù)功能:數(shù)碼管顯示子程序入口參數(shù):出口參數(shù):*/void display(void) P2=0xff; P0=tabdis0& 0xfe; /顯示個(gè)位和小數(shù)點(diǎn)11111110delay(); P2=0xdf; /11011111 delay(); P2=0xff; P0=tabdis1; /顯示小數(shù)點(diǎn)后第一位delay();

17、 P2=0xbf; /10111111 delay(); P2=0xff; P0=tabdis2; /顯示小數(shù)點(diǎn)后其次位delay(); P2=0x7f; /01111111 delay(); P2=0xff; P0=0xff; /顯示小數(shù)點(diǎn)后其次位delay(); P2=0xef; /11101111delay();/*函數(shù)功能:主程序入口參數(shù):出口參數(shù):*/void main(void) P2=0xff; /端口初始化 P0=0xff; delay();/延時(shí) CH = 0x00; /在這里選擇通道 0x00或0x01 TMOD = 0x01; /設(shè)置中斷 TH0=(65536-50000

18、)/256;/定時(shí)器1初值定時(shí)50msTL0=(65536-50000)%256; IE = 0x82; TR0 = 1; while(1) /主循環(huán) dat = adc0832(CH); convdata(dat); /數(shù)據(jù)轉(zhuǎn)換 display(); /顯示數(shù)值 /*函數(shù)功能:定時(shí)器中斷延時(shí)程序 這一段的作用時(shí)隔一段時(shí)間抽樣一次 否側(cè)顯示的最終一位會(huì)不穩(wěn)定入口參數(shù):出口參數(shù):*/void timer0(void) interrupt 1 TMOD = 0x01; TH0=(65536-50000)/256;/定時(shí)器1初值定時(shí)50msTL0=(65536-50000)%256; IE = 0x82; TR0 = 1; count+; if (count = 0x01) count = 0x00; dat = adc0832(CH); 6. 項(xiàng)目設(shè)計(jì)總計(jì)通過這次設(shè)計(jì),使我深化了解了AT89C51單片機(jī)和ADC0832(AD轉(zhuǎn)換器)的結(jié)構(gòu)和特點(diǎn)及數(shù)字電壓表的工作原理,加深了對(duì)課本理論學(xué)問的理解,熬煉了實(shí)踐動(dòng)手力

溫馨提示

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