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

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上成績.課程設(shè)計(jì)報(bào)告華中師范大學(xué)武漢傳媒學(xué)院傳媒技術(shù)學(xué)院電子信息工程2011僅發(fā)布百度文庫,版權(quán)所有.AD轉(zhuǎn)換要求:A.使用單片機(jī)實(shí)現(xiàn)AD轉(zhuǎn)換B.可以實(shí)現(xiàn)一位AD轉(zhuǎn)換,并顯示(保留4位數(shù)字)設(shè)計(jì)框圖:外部模擬電壓信號模數(shù)轉(zhuǎn)換處理器(STC89C52)外部顯示器方案設(shè)計(jì):AD轉(zhuǎn)換時(shí)單片機(jī)設(shè)計(jì)比較重要的實(shí)驗(yàn)。模數(shù)轉(zhuǎn)換芯片種類多,可以滿足不同用途和不同精度功耗等。外部模擬量選擇的是簡單的電位器,通過控制電位器來改變模擬電壓。顯示電壓值采用一般的四位七段數(shù)碼管。而AD轉(zhuǎn)換芯片采用使用最廣的ADC0809ADC0809芯片有28條引腳,采用雙列直插式,如圖所示。下面說明各引腳功能

2、:· IN0IN7:8路模擬量輸入端。· 2-12-8:8位數(shù)字量輸出端。· ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路。· ALE:地址鎖存允許信號,輸入端,高電平有效。· START: A/D轉(zhuǎn)換啟動(dòng)脈沖輸入端,輸入一個(gè)正脈沖(至少100ns寬)使其啟動(dòng)(脈沖上升沿使0809復(fù)位,下降沿啟動(dòng)A/D轉(zhuǎn)換)。· EOC: A/D轉(zhuǎn)換結(jié)束信號,輸出端,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端輸出一個(gè)高電平(轉(zhuǎn)換期間一直為低電平)。· OE:允許信號,輸入端,高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端輸入一個(gè)高電平,才

3、能打開輸出三態(tài)門,輸出數(shù)字量。· CLK:時(shí)鐘脈沖輸入端。要求不高于640KHz。· REF(+)、REF(-):基準(zhǔn)電壓。· Vcc:電源,單一+5V。· GND:地工作原理:首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿啟動(dòng) A/D轉(zhuǎn)換,之后EOC輸出信號變低,指示轉(zhuǎn)換正在進(jìn)行。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖剑甘続/D轉(zhuǎn)換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個(gè)信號可用作中斷申請。當(dāng)OE輸入高電平 時(shí),輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。本

4、次實(shí)驗(yàn)采用中斷方式把表明轉(zhuǎn)換完成的狀態(tài)信號(EOC)作為信號,以中斷方式進(jìn)行數(shù)據(jù)傳送。不管使用上述哪種方式,只要一旦確定轉(zhuǎn)換完成,即可通過指令進(jìn)行數(shù)據(jù)傳送。首先送出口地址并以信號有效時(shí),OE信號即有效,把轉(zhuǎn)換數(shù)據(jù)送上,供接受。采用中斷可以減輕單片機(jī)負(fù)擔(dān)。并可以使程序有更多的空間作二次開發(fā)。硬件原理圖:程序流程圖:開始初始化啟動(dòng)AD轉(zhuǎn)換有中斷請求是接受并分解電壓數(shù)據(jù)數(shù)碼管顯示電壓值仿真圖:制作實(shí)物圖:AD轉(zhuǎn)換模塊:最小系統(tǒng)及顯示:整體效果:調(diào)試:調(diào)試最多的是數(shù)碼管顯示問題掃描太慢顯示會(huì)太暗和有閃爍問題,通過不斷改變延遲來調(diào)整達(dá)到最佳狀態(tài)。心得體會(huì):通過這次的實(shí)驗(yàn)設(shè)計(jì)特別是前期的電路設(shè)計(jì),和芯片選

5、擇以及后期的實(shí)物焊接。對我們專業(yè)的電路認(rèn)識了很多,學(xué)到了很多。做一個(gè)東西要選擇你要的芯片的,你必須要先了解一些大體的東西當(dāng)你選擇好后你更要全面了解它的性能。對于單片機(jī)硬件來說要了解芯片,你要如何去驅(qū)動(dòng)他來滿足你的要求。這對于編程和看懂芯片的時(shí)序有著高要求。畢竟現(xiàn)在硬件更新?lián)Q代太快,必須要學(xué)習(xí)怎么去設(shè)計(jì)去編寫你要的程序來控制它。這是我這次實(shí)驗(yàn)最深刻的理解。這次實(shí)驗(yàn)也培養(yǎng)了我團(tuán)隊(duì)合作能力積極主動(dòng)溝通,遇到問題一起解決。對于現(xiàn)在的我們即將走出校門的人來說意義重大。同時(shí)這次實(shí)驗(yàn)也大大拓寬了我的視野我還有很多東西要去理解去學(xué)習(xí)。原程序:#include <reg51.h> / 引用標(biāo)準(zhǔn)庫的頭

6、文件 #include <intrins.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int uint temp=0; sbit ST=P36; /啟動(dòng)信號 sbit EOC=P33; /轉(zhuǎn)換結(jié)束信號,連到外部中斷1口,轉(zhuǎn)換結(jié)束后進(jìn)入外部中斷 sbit OE=P37; /輸出使能 /sbit ls=P27;sbit dig_hc595_sh_dr=P17; /數(shù)碼管的74HC595程序sbit dig_hc595_st_dr=P16; sbit dig_hc595_ds_

7、dr=P15;void initial_myself(); void initial_peripheral();void delay_short(unsigned int uiDelayShort);void delay_long(unsigned int uiDelayLong);/void display_service();void display_drive();void dis_service(int temp);/unsigned char ucDigShow8; /第8位數(shù)碼管要顯示的內(nèi)容/unsigned char ucDigShow7; /第7位數(shù)碼管要顯示的內(nèi)容/unsig

8、ned char ucDigShow6; /第6位數(shù)碼管要顯示的內(nèi)容/unsigned char ucDigShow5; /第5位數(shù)碼管要顯示的內(nèi)容unsigned char ucDigShow4; /第4位數(shù)碼管要顯示的內(nèi)容unsigned char ucDigShow3; /第3位數(shù)碼管要顯示的內(nèi)容unsigned char ucDigShow2; /第2位數(shù)碼管要顯示的內(nèi)容unsigned char ucDigShow1; /第1位數(shù)碼管要顯示的內(nèi)容unsigned char code dig_table17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07

9、,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼unsigned char ucDigShowTemp=0; /臨時(shí)中間變量unsigned char ucDisplayDriveStep=1; /動(dòng)態(tài)掃描數(shù)碼管的步驟變量void dig_hc595_drive(unsigned char ucLedStatusTemp16_09,unsigned char ucLedStatusTemp08_01);main() initial_myself();/初始化單片機(jī) delay_long(1

10、00); initial_peripheral();/初始化外圍 while(1) P0=0xff; ST=0;ST=1;ST=0;/ 啟動(dòng)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; void dis_service(int temp) int Tp=0; Tp=temp*1.0/255*500;ucDigShow1 = dig_tableTp / 1000;ucDigShow2 = dig_tableT

11、p % 1000 / 100 | 0x80;ucDigShow3 = dig_tableTp % 100 / 10 ;ucDigShow4 = dig_tableTp % 10 / 1;void display_drive()/顯示電壓值 uchar i=1; for(i=1;i<5;i+) switch(i) case 1: /顯示第1位 ucDigShowTemp=ucDigShow1; dig_hc595_drive(ucDigShowTemp,0xfe); break; case 2: /顯示第2位 ucDigShowTemp=ucDigShow2; dig_hc595_driv

12、e(ucDigShowTemp ,0xfd); break; case 3: /顯示第3位 ucDigShowTemp=ucDigShow3; dig_hc595_drive(ucDigShowTemp,0xfb); break; case 4: /顯示第4位 ucDigShowTemp=ucDigShow4; dig_hc595_drive(ucDigShowTemp,0xf7); break; /*case 5: /顯示第5位 ucDigShowTemp=ucDigShow5; dig_hc595_drive(ucDigShowTemp,0xef); break; case 6: /顯示第

13、6位 ucDigShowTemp=ucDigShow6; dig_hc595_drive(ucDigShowTemp,0xdf); break; case 7: /顯示第7位 ucDigShowTemp=ucDigShow7; dig_hc595_drive(ucDigShowTemp,0xbf); break; case 8: /顯示第8位 ucDigShowTemp=ucDigShow8; dig_hc595_drive(ucDigShowTemp,0x7f); break; */ /數(shù)碼管的74HC595驅(qū)動(dòng)函數(shù)void dig_hc595_drive(unsigned char ucD

14、igStatusTemp16_09,unsigned char ucDigStatusTemp08_01) unsigned char i; unsigned char ucTempData; 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; else dig_hc595_ds_dr=0; dig_hc595_sh_dr=0; /SH引腳的上升沿把數(shù)據(jù)送入寄存器 del

15、ay_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; else dig_hc595_ds_dr=0; dig_hc595_sh_dr=0; /SH引腳的上升沿把數(shù)據(jù)送入寄存器 delay_short(1); dig_hc595_sh_dr=1; delay_short(1); ucTemp

16、Data=ucTempData<<1; dig_hc595_st_dr=0; /ST引腳把兩個(gè)寄存器的數(shù)據(jù)更新輸出到74HC595的輸出引腳上并且鎖存起來 delay_short(1); dig_hc595_st_dr=1; delay_short(1); dig_hc595_sh_dr=0; /拉低,抗干擾就增強(qiáng) dig_hc595_st_dr=0; dig_hc595_ds_dr=0;void delay_short(unsigned int uiDelayShort) unsigned int i; for(i=0;i<uiDelayShort;i+) ; void delay_long(unsigned int uiDelayLong) unsigned int i; unsigned int j; for(i=0;i<uiDelayLong;i+) for(j=0;j<500;j+) ; void initial_myself() P0=0xff; P1=0xff; P2=0xff; P3=0xff; TMOD=0x02;/T1工作模式2 TH0=0x14; TL0=0x00;void initial_pe

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論