




已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單片機(jī)課程設(shè)計(jì)姓 名: 學(xué) 號(hào): 專 業(yè): 電子科學(xué)與技術(shù) 題 目: 單片機(jī)電壓采集裝置 專 題: AD轉(zhuǎn)換及編程實(shí)現(xiàn) 指導(dǎo)教師: 設(shè)計(jì)地點(diǎn): 實(shí)驗(yàn)樓 時(shí) 間: 20121220 2012 年 12月單片機(jī)課程設(shè)計(jì)任務(wù)書專業(yè)年級(jí) 電科 學(xué)號(hào) 學(xué)生姓名 任務(wù)下達(dá)日期:2012年 12 月20 日設(shè)計(jì)日期: 2012年12月1日 至 2012 年 12月20日設(shè)計(jì)題目: 單片機(jī)電壓采集裝置設(shè)計(jì)專題題目:AD轉(zhuǎn)換及編程實(shí)現(xiàn)設(shè)計(jì)主要內(nèi)容和要求:制作單片機(jī)電壓采集裝置基本要求1、 模擬通道0電壓采集功能 在ADC0809的輸入05V電壓,數(shù)碼管實(shí)時(shí)顯示被測電壓值(顯示精度0.001V,即顯示1位整數(shù),3位小數(shù))。2、 指定通道電壓采集功能通過模式選擇按鍵切換到“指定通道電壓采集功能”,利用+/-按鍵改變通道值,顯示同上。3、 8通道自動(dòng)循環(huán)電壓采集功能制作單片機(jī)電壓采集裝置通過模式選擇按鍵切換到“8通道自動(dòng)循環(huán)電壓采集功能”,默認(rèn)通道切換時(shí)間為2秒。擴(kuò)展要求1、 超限報(bào)警功能當(dāng)Vi超出程序預(yù)設(shè)報(bào)警限值時(shí),報(bào)警燈以1Hz速度閃爍顯示,并顯示提示符以區(qū)別上限或下限報(bào)警。2、 可修改上限和下限報(bào)警值的超限報(bào)警撥弄能可隨意設(shè)置上、下限報(bào)警值(步長0.1V,默認(rèn)下限為0V,上限為5V)。設(shè)置時(shí),當(dāng)下限上限(或上限下限)時(shí)予以提示,并拒絕接受數(shù)據(jù)。 指導(dǎo)教師簽字:摘要:此單片機(jī)電壓采集裝置使用AT89S52芯片和ADC0809芯片進(jìn)行電壓采集,實(shí)現(xiàn)AD轉(zhuǎn)換的基本功能。,鍵盤電路和8個(gè)LED數(shù)碼顯示電路。擴(kuò)展電路中包含了A/D轉(zhuǎn)換電路,AD轉(zhuǎn)換五種工作模式下對(duì)應(yīng)要實(shí)現(xiàn)的功能:即模式0下完成通道0的模擬信號(hào)采集;模式1時(shí)完成指定模擬通道電壓采集,按加、減(K2,K3)按鍵手動(dòng)實(shí)現(xiàn)模擬通道的切換, 此外,通過內(nèi)部定時(shí)器T1實(shí)現(xiàn)報(bào)警功能,即超過上限電壓4.999V時(shí)報(bào)警,同時(shí)點(diǎn)亮P1.1即L2發(fā)光LED小燈,低于下限電壓0.000V時(shí)也實(shí)現(xiàn)報(bào)警功能,只是報(bào)警的頻率改變,同時(shí)點(diǎn)亮P1.0即L1發(fā)光LED小燈;而模式2完成8通道模擬信號(hào)自動(dòng)循環(huán)采集功能,通過加入內(nèi)部定時(shí)器T0中斷,從而實(shí)現(xiàn)每隔1秒通道值自動(dòng)加1的功能;進(jìn)入模式3的時(shí)候,需要人為設(shè)置報(bào)警上限,此程序設(shè)定報(bào)警上限為4V,而報(bào)警上限默認(rèn)值為3.999V,通過按加、減(K2/K3)按鍵實(shí)現(xiàn)上限加減0.1V;模式4的時(shí)候設(shè)置報(bào)警下限電壓,默認(rèn)報(bào)警下限電壓為1.999V,本程序中設(shè)置的報(bào)警下限電壓為2V,通過加減(K2/K3)按鍵實(shí)現(xiàn)電壓加減0.1V的功能,最終實(shí)現(xiàn)電壓采集和擴(kuò)展功能。關(guān)鍵詞:AT89S52芯片 、ADC0809芯片 目 錄1 緒論11.1 系統(tǒng)設(shè)計(jì)方案11.1.1 系統(tǒng)設(shè)計(jì)原理框圖12 硬件電路設(shè)計(jì)32.1 單片機(jī)電路22.1.1 單片機(jī)最小系統(tǒng)32.1.2 顯示譯碼電路42.2 A/D轉(zhuǎn)換52.2.1 ADC0809轉(zhuǎn)換原理52.2.2 AD轉(zhuǎn)換電路 62.2.3 電路設(shè)計(jì)73 軟件設(shè)計(jì)83.1 設(shè)計(jì)任務(wù)83.1.1 基本任務(wù)83.2 程序設(shè)計(jì) 83.3.1 主程序框圖 83.3.2 AD信號(hào)采集 94 系統(tǒng)調(diào)試 175 總結(jié) 18參考文獻(xiàn): 19附錄一 電源印刷電路板布線圖20附錄二 單片機(jī)板電路原理圖21附錄三 單片機(jī)印刷電路板布線圖22附錄四 元件清單24 第20頁1 緒論1.1系統(tǒng)設(shè)計(jì)方案本次實(shí)驗(yàn)要求設(shè)計(jì)電壓采集裝置,課程設(shè)計(jì)分設(shè)計(jì)、制作和調(diào)試三個(gè)部分。設(shè)計(jì)選題以單片機(jī)為核心,基本內(nèi)容應(yīng)包括單片機(jī)最小系統(tǒng)、鍵盤和LED顯示電路,以及設(shè)計(jì)系統(tǒng)涉及的其他電路。系統(tǒng)硬件電路由標(biāo)準(zhǔn)電路和自制電路兩部分組成。標(biāo)準(zhǔn)電路包括單片機(jī)最小系統(tǒng)、8個(gè)LED數(shù)碼管電路和鍵盤電路,可根據(jù)設(shè)計(jì)需要進(jìn)行配置選用。自制電路需自行設(shè)計(jì)焊接,包含標(biāo)準(zhǔn)電路不具備的其他電路。設(shè)計(jì)中采用了模數(shù)轉(zhuǎn)換器,利用ADC0809型8位MOS型A/D轉(zhuǎn)換器??蓪?shí)現(xiàn)8路模擬信號(hào)的分時(shí)采集,片內(nèi)有8路模擬選通開關(guān),以及相應(yīng)的通道地址鎖存用譯碼電路,實(shí)現(xiàn)模擬信號(hào)到數(shù)字信號(hào)的轉(zhuǎn)換??刂撇糠植捎脝纹瑱C(jī)89C52來完成。顯示部分利用LED數(shù)碼管顯示模塊,來顯示采集到的電壓分量。1.2.1系統(tǒng)設(shè)計(jì)原理框圖2 硬件電路設(shè)計(jì)系統(tǒng)硬件電路由標(biāo)準(zhǔn)電路和自制電路兩部分組成。標(biāo)準(zhǔn)電路包括單片機(jī)最小系統(tǒng)、6個(gè)LED數(shù)碼管電路和鍵盤電路,可根據(jù)設(shè)計(jì)需要進(jìn)行配置選用。自制電路需自行設(shè)計(jì)焊接,包含標(biāo)準(zhǔn)電路不具備的其他電路。2.1單片機(jī)電路2.1.1單片機(jī)最小系統(tǒng) CPU原理圖該原理圖包含單片機(jī)以及外部連接譯碼,鎖存電路端口,其中的ALE,REST為高電平時(shí)用來啟動(dòng)ADC0809.P0、P2口控制數(shù)碼輸出顯示,P3口的P3.3、P3.4、P3.5控制按鍵,P1.1P1.3控制通道選擇。晶振采用12MHZ,該頻率有利于提高串口的通信可靠性,同時(shí)又保證單片機(jī)有較高的運(yùn)行速度。2.1.2 顯示譯碼電路LED顯示電路可提供8位LED顯示;可顯示P1(P3)口狀態(tài);也可顯示輸入按鍵狀態(tài)LED顯示電路顯示電路采用6位共陽極LED動(dòng)態(tài)掃描顯示,CD4511輸出所需字形,74LS138選擇字位。在動(dòng)態(tài)方式中,逐個(gè)地循環(huán)地點(diǎn)亮各位顯示器。 數(shù)碼管顯示電路顯示譯碼電路部分由P0口或P2口輸出顯示。顯示譯碼器采用CD4511芯片:輸入:BCD 輸出:七段碼 74LS138芯片是用來控制顯示時(shí)候的字位的,由于單片機(jī)的管腳是有限的通過使用138芯片可以避免少使用些單片機(jī)的管腳,當(dāng)輸入001時(shí),譯碼可得10111111:輸入:07 輸出:低電平 2.2 A/D轉(zhuǎn)換2.2.1 ADC0809轉(zhuǎn)換原理 當(dāng)單片機(jī)端的P3.3接低電平時(shí),可以使兩個(gè)非門打開(1)當(dāng)模擬量送至某一輸入通道后,CPU將標(biāo)識(shí)該通道編碼的三位地址信號(hào)經(jīng)數(shù)據(jù)線或地址線輸入到ADDC、ADDB、ADDA引腳上。 (2)地址鎖存允許ALE鎖存地址信號(hào),啟動(dòng)命令START啟動(dòng)A/D轉(zhuǎn)換。(3)轉(zhuǎn)換開始,EOC變低電平,轉(zhuǎn)換結(jié)束,EOC變?yōu)楦唠娖?。EOC可作為中斷請(qǐng)求信號(hào)。 (4)轉(zhuǎn)換結(jié)束后,可通過執(zhí)行IN指令,設(shè)法在輸出允許OE腳上形成一個(gè)正脈沖,打開三態(tài)緩沖器把轉(zhuǎn)換的結(jié)果輸入到DB,一次A/D轉(zhuǎn)換便完成。2.2.2 AD轉(zhuǎn)換電路轉(zhuǎn)換結(jié)束:EOC1IN0,通道0參考電壓:5V轉(zhuǎn)換時(shí)鐘:接單片機(jī)ALE輸出經(jīng)分頻后得到啟動(dòng)和地址鎖存信號(hào)輸出使能信號(hào)通道地址信號(hào)輸出數(shù)據(jù)/WR/RD片選信號(hào):P3.3=0/INT0CC4060_7AD_CS 2.2.3電路設(shè)計(jì)硬件資源分配數(shù)碼管顯示電路:用 P2 口:bcd 碼輸出P2.3P2.0;字位選擇 cba=P2.6P2.4 ;小數(shù)點(diǎn) P2.7鍵盤電路: P3口低四位1號(hào)按鍵P3.0-模式切換2號(hào)按鍵P3.1-通道、報(bào)警限加3號(hào)按鍵P3.2-通道、報(bào)警限減4號(hào)按鍵P3.3- 查詢法,接收ad轉(zhuǎn)換狀態(tài) (不作為按鍵使用) 中斷法,收ad結(jié)束中斷信號(hào)ADC0809電壓轉(zhuǎn)換電路控制信號(hào):/wr=p3.6 /rd=p3.7 eoc= p3.3 Cs= p3.5 轉(zhuǎn)換通道選擇地址線:CBA =P1(6-4)3 軟件設(shè)計(jì)3.1 設(shè)計(jì)任務(wù)3.1.1 基本任務(wù) 1、進(jìn)行電壓采集并顯示 3.1.2 擴(kuò)展任務(wù) 1、指定通道采集 2、循環(huán)采集顯示 ,默認(rèn)每通道顯示1秒鐘。3、報(bào)警設(shè)置 報(bào)警上限為4V報(bào)警下限為2V 3.2 程序設(shè)計(jì)3.2.1 主程序框圖 主程序框圖3.3.2 AD信號(hào)采集程序#include#define uchar unsigned char#define uint unsigned int#define zxma P0 /字型碼地址,通過P0口送字型碼#define zwma P2 /字位碼地址,通過P2口送字位碼sbit lowflag=P10; /下限報(bào)警LEDsbit highflag=P11; /上限報(bào)警LEDsbit ad_adda=P14; /ad0809地址端A,低位sbit ad_addb=P15; /ad0809地址端B,中位sbit ad_addc=P16; /ad0809地址端C,高位sbit key1=P30; /按鍵1sbit key2=P31; /按鍵2sbit key3=P32; /按鍵3sbit ad_eos=P33; /ad0809轉(zhuǎn)換結(jié)束標(biāo)志,1轉(zhuǎn)換完,0正在轉(zhuǎn)換sbit speeker=P34; /蜂鳴器報(bào)警sbit ad_cs=P35; /ad0809片選,低電平有效sbit ad_wr=P36; /ad0809寫入信號(hào),鎖存地址和啟動(dòng)adsbit ad_rd=P37; /ad0809讀出信號(hào),通過P0口讀回ad轉(zhuǎn)換結(jié)果uchar ad_data; /ad采集數(shù)據(jù)uchar pdata ad_start,ad_over; /兩個(gè)片外地址,用于產(chǎn)生讀寫信號(hào)uchar ad_td; /ad采集通道uchar ad_mode; /ad采集模式uchar key;uint ad_high=4000; /ad報(bào)警上限,設(shè)置為4Vuint ad_low=2000; /ad報(bào)警下限,設(shè)置為2Vuchar tt0=100; /定時(shí)1s(10ms,需要100次)sbit ad_clk=P17; /本程序利用P1.7產(chǎn)生方波來給ad0808提供脈沖, /*共陰極數(shù)碼管字形碼,共陽極數(shù)碼管取反即可*/uchar code zixing=0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71;/*共陽極數(shù)碼管字位碼,共陰極數(shù)碼管取反即可*/uchar code ziwei=0x01, 0x02, 0x04, 0x08,0x10, 0x20, 0x40, 0x80;void timer2int(); void delay(uint i); void disp(void);void ad_change(void);void keyscan(void);void keyanswer(void);void alarm(); void timer0int(void);void timer0chengxu(void);void timer1int(void);void timer1chengxu(void);void main(void) timer0int(); timer1int(); while(1) keyscan(); keyanswer(); ad_change(); alarm(); disp(); void keyscan(void) if(!key1) while(!key1)disp(); key=1;F0=1; if(!key2) while(!key2)disp(); key=2;F0=1; if(!key3) while(!key3)disp(); key=3;F0=1; void keyanswer(void) if(key=1&F0=1) ad_mode+; if(ad_mode=5)ad_mode=0; if(ad_mode=0) ad_td=0; if(ad_mode=1) if(key=2&F0=1) ad_td+; if(ad_td=8)ad_td=0; if(key=3&F0=1) ad_td-; if(ad_td=255)ad_td=7; if(ad_mode=2)TR0=1; else TR0=0; if(ad_mode=3) if(key=2&F0=1) ad_high=ad_high+100; if(key=3&F0=1) ad_high=ad_high-100; if(ad_mode=4) if(key=2&F0=1) ad_low=ad_low+100; if(key=3&F0=1) ad_low=ad_low-100; F0=0; void timer0int(void) TMOD=0x11; TH0=(65536-10000/1)/256; TL0=(65536-10000/1)%256; ET0=1; EA=1; TR0=0; void timer0chengxu(void) interrupt 1 TH0=(65536-10000/1)/256; TL0=(65536-10000/1)%256; tt0-; if (tt0=0) tt0=100; ad_td+; if(ad_td=8)ad_td=0; void timer1int() TMOD=0x11; TH1=(65536-500/1)/256; TL1=(65536-500/1)%256; ET1=1; EA=1; TR1=0; void timer1chengxu() interrupt 3 uint ad_dianya; if (ad_dianyaad_high|ad_dianyaad_low) TR1=1; /開放T1中斷 else TR1=0; /關(guān)閉T1中斷 void ad_change(void) ad_adda=0; ad_addb=0;ad_addc=0;P1=P1|(ad_td4);ad_cs=0; ad_start=0x00; while(ad_eos=1)disp(); ad_data=ad_over; void disp(void) uint ad_dianya; uchar j,k,l,m; if(ad_mode=0|ad_mode=1|ad_mode=2) ad_dianya=ad_data*19.60784; if(ad_mode=3) ad_dianya=ad_high; if(ad_mode=4) ad_dianya=ad_low; j=ad_dianya/1000; k=ad_dianya%1000/100; l=ad_dianya%100/10; m=ad_dianya%10; zwma=ziwei0; zxma=zixingad_mode; delay(1); zxma=0xFF; zwma=ziwei2; zxma=zixingad_td; delay(1); zxma=0xFF; zwma=ziwei4; zxma=zixingj&0x7f; delay(1); zxma=0xFF; zwma=ziwei5; zxma=zixingk; delay(1); zxma=0xFF; zwma=ziwei6; zxma=zixingl; delay(1); zxma=0xFF; zwma=ziwei7; zxma=zixingm; delay(1); zxma=0xFF; void delay(uint i) unsigned int j,k; for(j=0;ji;j+) for(k=0;k121;k+); void timer2int() C_T2=0; RCAP2H=(65536-100)/256; RCAP2L=(65536-100)%256; EA=1; ET2=1; TR2=1; void timer2pro(void) interrupt 5 using 0 TF2=0; ad_clk=ad_clk; 4 系統(tǒng)調(diào)試硬件焊接分為單片機(jī)板和擴(kuò)展版兩部分。在焊接單片機(jī)板的時(shí)候出現(xiàn)過虛焊和漏焊的現(xiàn)象,再其次就是在焊接擴(kuò)展板的時(shí)候,自己將排陣竟然全部焊接反了,由于自己的疏忽,導(dǎo)致杜邦線無法連接。然后自己又逐一將排陣全部焊接了一遍,再者就是電路板的布局問題,由于自己是第一次走線,導(dǎo)致板子背面的走線很不光滑而且混亂,沒有秩序,但最終在自己的努力下實(shí)現(xiàn)了功能。由于自己曾經(jīng)掌握一些簡單的匯編語言,例如VB,C,C+等匯編語言,所以開始的時(shí)候總想將匯編語言寫成C語言的格式,導(dǎo)致程序頻頻出現(xiàn)問題。而且由于自己起初對(duì)KEIL C軟件不是非常了解,所以很多時(shí)候出現(xiàn)問題自己不會(huì)改寫。但最終在老師和同學(xué)的幫助之下,悉心學(xué)習(xí)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 城市河道生態(tài)修復(fù)與護(hù)岸加固施工服務(wù)協(xié)議
- 工程項(xiàng)目管理沙盤答辯
- 軟件系統(tǒng)采購協(xié)議書
- 醫(yī)護(hù)人員職業(yè)素養(yǎng)課件
- 車輛搭乘免責(zé)協(xié)議書
- 門面房屋合同協(xié)議書
- 食品包裝安全協(xié)議書
- 減肥店合伙合同協(xié)議書
- 采購手機(jī)伴侶協(xié)議書
- 非婚子女領(lǐng)養(yǎng)協(xié)議書
- 大理石知識(shí)培訓(xùn)課件
- 2025年福建省廈門市中考數(shù)學(xué)二檢試卷
- 《擁抱健康拒絕煙草》課件
- 濟(jì)南幼兒師范高等??茖W(xué)校招聘真題2024
- 鼻咽癌口腔炎護(hù)理查房
- 療休養(yǎng)協(xié)議格式合同
- 2025航天知識(shí)競賽考試題庫(含答案)
- 人工智能技術(shù)在混合式日語教學(xué)中的應(yīng)用及效果評(píng)估
- 鄭州電子商務(wù)職業(yè)學(xué)院《文化創(chuàng)意產(chǎn)業(yè)管理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024建安杯信息通信建設(shè)行業(yè)安全競賽題庫(試題含答案1-464題)
- 基于動(dòng)態(tài)勢能獎(jiǎng)勵(lì)機(jī)制的雙足機(jī)器人穩(wěn)定行走控制研究
評(píng)論
0/150
提交評(píng)論