51單片機課程設(shè)計AD轉(zhuǎn)換_第1頁
51單片機課程設(shè)計AD轉(zhuǎn)換_第2頁
51單片機課程設(shè)計AD轉(zhuǎn)換_第3頁
51單片機課程設(shè)計AD轉(zhuǎn)換_第4頁
51單片機課程設(shè)計AD轉(zhuǎn)換_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

..成績.課程設(shè)計報告華中師范大學XX傳媒學院

傳媒技術(shù)學院電子信息工程2011僅發(fā)布百度文庫,版權(quán)所有.AD轉(zhuǎn)換要求:A.使用單片機實現(xiàn)AD轉(zhuǎn)換B.可以實現(xiàn)一位AD轉(zhuǎn)換,并顯示〔保留4位數(shù)字設(shè)計框圖:外部模擬電壓信號模數(shù)轉(zhuǎn)換處理器外部模擬電壓信號模數(shù)轉(zhuǎn)換處理器〔STC89C52外部顯示器外部顯示器方案設(shè)計:AD轉(zhuǎn)換時單片機設(shè)計比較重要的實驗。模數(shù)轉(zhuǎn)換芯片種類多,可以滿足不同用途和不同精度功耗等。外部模擬量選擇的是簡單的電位器,通過控制電位器來改變模擬電壓。顯示電壓值采用一般的四位七段數(shù)碼管。而AD轉(zhuǎn)換芯片采用使用最廣的ADC0809ADC0809芯片有28條引腳,采用雙列直插式封裝,如圖所示。下面說明各引腳功能:IN0~IN7:8路模擬量輸入端。2-1~2-8:8位數(shù)字量輸出端。ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路。ALE:地址鎖存允許信號,輸入端,高電平有效。START:A/D轉(zhuǎn)換啟動脈沖輸入端,輸入一個正脈沖〔至少100ns寬使其啟動〔脈沖上升沿使0809復位,下降沿啟動A/D轉(zhuǎn)換。EOC:A/D轉(zhuǎn)換結(jié)束信號,輸出端,當A/D轉(zhuǎn)換結(jié)束時,此端輸出一個高電平〔轉(zhuǎn)換期間一直為低電平。OE:數(shù)據(jù)輸出允許信號,輸入端,高電平有效。當A/D轉(zhuǎn)換結(jié)束時,此端輸入一個高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。CLK:時鐘脈沖輸入端。要求時鐘頻率不高于640KHz。REF〔+、REF〔-:基準電壓。Vcc:電源,單一+5V。GND:地工作原理:首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復位。下降沿啟動A/D轉(zhuǎn)換,之后EOC輸出信號變低,指示轉(zhuǎn)換正在進行。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖?指示A/D轉(zhuǎn)換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個信號可用作中斷申請。當OE輸入高電平時,輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。本次實驗采用中斷方式把表明轉(zhuǎn)換完成的狀態(tài)信號〔EOC作為中斷請求信號,以中斷方式進行數(shù)據(jù)傳送。不管使用上述哪種方式,只要一旦確定轉(zhuǎn)換完成,即可通過指令進行數(shù)據(jù)傳送。首先送出口地址并以信號有效時,OE信號即有效,把轉(zhuǎn)換數(shù)據(jù)送上數(shù)據(jù)總線,供單片機接受。采用中斷可以減輕單片機負擔。并可以使程序有更多的空間作二次開發(fā)。硬件原理圖:程序流程圖:開始開始初始化初始化啟動AD轉(zhuǎn)換啟動AD轉(zhuǎn)換有中斷請求有中斷請求是接受并分解電壓數(shù)據(jù)接受并分解電壓數(shù)據(jù)數(shù)碼管顯示電壓值數(shù)碼管顯示電壓值仿真圖:制作實物圖:AD轉(zhuǎn)換模塊:最小系統(tǒng)及顯示:整體效果:調(diào)試:調(diào)試最多的是數(shù)碼管顯示問題掃描太慢顯示會太暗和有閃爍問題,通過不斷改變延遲來調(diào)整達到最佳狀態(tài)。心得體會:通過這次的實驗設(shè)計特別是前期的電路設(shè)計,和芯片選擇以及后期的實物焊接。對我們專業(yè)的電路認識了很多,學到了很多。做一個東西要選擇你要的芯片的,你必須要先了解一些大體的東西當你選擇好后你更要全面了解它的性能。對于單片機硬件來說要了解芯片,你要如何去驅(qū)動他來滿足你的要求。這對于編程和看懂芯片的時序有著高要求。畢竟現(xiàn)在硬件更新?lián)Q代太快,必須要學習怎么去設(shè)計去編寫你要的程序來控制它。這是我這次實驗最深刻的理解。這次實驗也培養(yǎng)了我團隊合作能力積極主動溝通,遇到問題一起解決。對于現(xiàn)在的我們即將走出校門的人來說意義重大。同時這次實驗也大大拓寬了我的視野我還有很多東西要去理解去學習。原程序:#include<reg51.h>//引用標準庫的頭文件#include<intrins.h>#include<stdio.h>#defineucharunsignedchar#defineuintunsignedintuinttemp=0;sbitST=P3^6;//啟動信號sbitEOC=P3^3;//轉(zhuǎn)換結(jié)束信號,連到外部中斷1口,轉(zhuǎn)換結(jié)束后進入外部中斷sbitOE=P3^7;//輸出使能//sbitls=P2^7;sbitdig_hc595_sh_dr=P1^7;//數(shù)碼管的74HC595程序sbitdig_hc595_st_dr=P1^6;sbitdig_hc595_ds_dr=P1^5;voidinitial_myself<>;voidinitial_peripheral<>;voiddelay_short<unsignedintuiDelayShort>;voiddelay_long<unsignedintuiDelayLong>;//voiddisplay_service<>;voiddisplay_drive<>;voiddis_service<inttemp>;//unsignedcharucDigShow8;//第8位數(shù)碼管要顯示的內(nèi)容//unsignedcharucDigShow7;//第7位數(shù)碼管要顯示的內(nèi)容//unsignedcharucDigShow6;//第6位數(shù)碼管要顯示的內(nèi)容//unsignedcharucDigShow5;//第5位數(shù)碼管要顯示的內(nèi)容unsignedcharucDigShow4;//第4位數(shù)碼管要顯示的內(nèi)容unsignedcharucDigShow3;//第3位數(shù)碼管要顯示的內(nèi)容unsignedcharucDigShow2;//第2位數(shù)碼管要顯示的內(nèi)容unsignedcharucDigShow1;//第1位數(shù)碼管要顯示的內(nèi)容unsignedcharcodedig_table[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼unsignedcharucDigShowTemp=0;//臨時中間變量unsignedcharucDisplayDriveStep=1;//動態(tài)掃描數(shù)碼管的步驟變量voiddig_hc595_drive<unsignedcharucLedStatusTemp16_09,unsignedcharucLedStatusTemp08_01>;main<>{initial_myself<>;//初始化單片機delay_long<100>;initial_peripheral<>; //初始化外圍while<1>{P0=0xff;ST=0; ST=1; ST=0; //啟動A/D轉(zhuǎn)換while<EOC==0>; OE=1; //EA=0; //temp=0xff;dis_service<temp>; //EA=0; display_drive<>;//顯示電壓值 //delay_long<1>; //EA=1; OE=0;}}voiddis_service<inttemp>{ intTp=0; Tp=temp*1.0/255*500; ucDigShow1=dig_table[Tp/1000]; ucDigShow2=dig_table[Tp%1000/100]|0x80; ucDigShow3=dig_table[Tp%100/10]; ucDigShow4=dig_table[Tp%10/1];}voiddisplay_drive<>//顯示電壓值{uchari=1;for<i=1;i<5;i++>{switch<i>{case1://顯示第1位ucDigShowTemp=ucDigShow1; dig_hc595_drive<ucDigShowTemp,0xfe>;break;case2://顯示第2位ucDigShowTemp=ucDigShow2;dig_hc595_drive<ucDigShowTemp,0xfd>;break;case3://顯示第3位ucDigShowTemp=ucDigShow3;dig_hc595_drive<ucDigShowTemp,0xfb>;break;case4://顯示第4位ucDigShowTemp=ucDigShow4;dig_hc595_drive<ucDigShowTemp,0xf7>;break;/*case5://顯示第5位ucDigShowTemp=ucDigShow5;dig_hc595_drive<ucDigShowTemp,0xef>;break;case6://顯示第6位ucDigShowTemp=ucDigShow6;dig_hc595_drive<ucDigShowTemp,0xdf>;break;case7://顯示第7位ucDigShowTemp=ucDigShow7;dig_hc595_drive<ucDigShowTemp,0xbf>;break;case8://顯示第8位ucDigShowTemp=ucDigShow8;dig_hc595_drive<ucDigShowTemp,0x7f>;break;*/}}}//數(shù)碼管的74HC595驅(qū)動函數(shù)voiddig_hc595_drive<unsignedcharucDigStatusTemp16_09,unsignedcharucDigStatusTemp08_01>{unsignedchari;unsignedcharucTempData;dig_hc595_sh_dr=0;dig_hc595_st_dr=0;ucTempData=ucDigStatusTemp16_09;//先送高8位for<i=0;i<8;i++>{if<ucTempData>=0x80>dig_hc595_ds_dr=1;elsedig_hc595_ds_dr=0;dig_hc595_sh_dr=0;//SH引腳的上升沿把數(shù)據(jù)送入寄存器delay_short<1>;dig_hc595_sh_dr=1;delay_short<1>;ucTempData=ucTempData<<1;}ucTempData=ucDigStatusTemp08_01;//再先送低8位for<i=0;i<8;i++>{if<ucTempData>=0x80>dig_hc595_ds_dr=1;elsedig_hc595_ds_dr=0;dig_hc595_sh_dr=0;//SH引腳的上升沿把數(shù)據(jù)送入寄存器delay_short<1>;dig_hc595_sh_dr=1;delay_short<1>;ucTempData=ucTempData<<1;}dig_hc595_st_dr=0;//ST引腳把兩個寄存器的數(shù)據(jù)更新輸出到74HC595的輸出引腳上并且鎖存起來delay_short<1>;dig_hc595_st_dr=1;delay_short<1>;dig_hc595_sh_dr=0;//拉低,抗干擾就增強dig_hc595_st_dr=0;dig_hc595_ds_dr=0;}voiddelay_short<unsignedintuiDelayShort>{unsignedinti;for<i=0;i<uiDelayShort;i++>{;}}voiddelay_long<unsignedi

溫馨提示

  • 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

提交評論