基于STCSK單片機(jī)數(shù)字電壓表_第1頁
基于STCSK單片機(jī)數(shù)字電壓表_第2頁
基于STCSK單片機(jī)數(shù)字電壓表_第3頁
基于STCSK單片機(jī)數(shù)字電壓表_第4頁
基于STCSK單片機(jī)數(shù)字電壓表_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2信息與電氣工程學(xué)院單片機(jī)課程設(shè)計(jì)報(bào)告題 目: 專 業(yè): 班 級: 姓 名: 學(xué) 號: 指導(dǎo)教師: 信息與電氣工程學(xué)院課程設(shè)計(jì)任務(wù)書20 20 學(xué)年第 學(xué)期專業(yè): 班級: 學(xué)號: 姓名: 課程設(shè)計(jì)名稱: 設(shè)計(jì)題目: 完成期限:自 年 月 日至 年 月 日共 周設(shè)計(jì)依據(jù)、要求及主要內(nèi)容(可另加附頁):指導(dǎo)教師(簽字): 批準(zhǔn)日期: 年 月 日2目錄一、課程設(shè)計(jì)的目的4二、實(shí)驗(yàn)要求4三、設(shè)計(jì)方案的描述4四、硬件原理圖5五、基本原理和元器件說明51. ADC原理和內(nèi)部結(jié)構(gòu)52. TL431的功能與應(yīng)用63. 74HC595簡介7六、程序流程圖7七、源程序清單8八、心得體會12九、參考文獻(xiàn)12一、課程

2、設(shè)計(jì)的目的通過單片機(jī)原理與應(yīng)用這門課的課程設(shè)計(jì),學(xué)生應(yīng)能對STC15系列單片機(jī)有一個(gè)全面的認(rèn)識,掌握以STC15系列單片機(jī)為核心的電子電路的設(shè)計(jì)方法和應(yīng)用技術(shù)。(1) 1.進(jìn)一步掌握ADC轉(zhuǎn)換的原理和編程方法。 (2) 2.進(jìn)一步掌握TL431基準(zhǔn)電壓的原理及使用方法。 (3) 3.進(jìn)一步掌握中斷處理程序的編程方法。二、實(shí)驗(yàn)要求用STC15F2K60S2單片機(jī)和ADC0809構(gòu)成數(shù)字電壓表,測量0-5v的電壓,將所測電壓用4位數(shù)碼管動態(tài)顯示出來。三、設(shè)計(jì)方案的描述1.讀ADC測量外部電壓,使用外部TL431基準(zhǔn)計(jì)算電壓,計(jì)算公式為g = (u16)(u32)j * 2.5 / Bandgap)

3、,Bandgap為基準(zhǔn)電壓數(shù)字量,j為相應(yīng)按鍵模擬量逐次比較后對應(yīng)的數(shù)字量,g為測得的相應(yīng)按鍵電壓。2.用STC的MCU的IO方式控制74HC595驅(qū)動8位數(shù)碼管。3.用戶可以修改宏來選擇時(shí)鐘頻率。使用Timer0的16位自動重裝來產(chǎn)生1ms節(jié)拍,程序運(yùn)行于這個(gè)節(jié)拍下, 用戶修改MCU主時(shí)鐘頻率時(shí),自動定時(shí)于1ms。4.右邊4位數(shù)碼管顯示測量的電壓值,左邊4位數(shù)碼管顯示的是基準(zhǔn)電壓值。5.外部電壓從板上測溫電阻兩端輸入, 輸入電壓0VDD, 不要超過VDD或低于0V。 6.實(shí)際項(xiàng)目串一個(gè)1K的電阻到ADC輸入口, ADC輸入口再并一個(gè)電容到地。7.總體框圖如下圖1-1:四、硬件原理圖硬件原理圖

4、如下:圖 1-2 硬件原理圖五、基本原理和元器件說明1. ADC原理和內(nèi)部結(jié)構(gòu)STC15F2K60S2單片機(jī)ADC輸入通道與P1口復(fù)用,上電復(fù)位后P1口為弱上拉型I/O口,用戶可通過設(shè)置P1ASF特殊功能寄存器將8路中的任何一路設(shè)置為ADC輸入通道,不用作ADC輸入通道仍可作為一般I/O口使用。 圖 1-3 ADC原理圖STC15F2K60S2單片機(jī)ADC模塊的參考電壓源(VREF)就是輸入工作電源VCC,無專門ADC參考電壓輸入通道。如果VCC不穩(wěn)定,如電池的供電系統(tǒng)中,電壓常常在5.34.2V之間漂移,則可以在8路A/D轉(zhuǎn)換通道的任一通道上接一個(gè)基準(zhǔn)電源(如2.50V基準(zhǔn)電壓),以此計(jì)算出

5、此時(shí)的工作電壓VCC,再計(jì)算其它輸入通道的模擬輸入電壓。STC15F2K60S2單片機(jī)的A/D模塊主要是由P1ASF、ADC_CONTR、ADC_RES和ADC_RESL等四個(gè)特殊功能寄存器進(jìn)行控制與管理的。P1ASF的8個(gè)控制位與P1口的8個(gè)口線是一一對應(yīng)的,即P1ASF.7P1ASF.0對應(yīng)控制P1.7P1.0,為“1”,對應(yīng)P1口口線為ADC的輸入通道;為“0”,其它I/O口功能。 P1ASF的格式如下:圖 1-4 P1ASF寄存器本實(shí)驗(yàn)中利用了P1ASF寄存器的D4和D2亦即單片機(jī)上P1.2和P1.口,其中P1.2口用于獲取基準(zhǔn)電壓模擬值,P1.口用于獲取按鍵的模擬值。ADC0809是

6、10位的A/D轉(zhuǎn)換器。當(dāng)輸入電壓為5.00V時(shí),輸出的數(shù)據(jù)值為255(0FFH),因此最大分辨率為0.0196(5/255)。ADC0809具有8路模擬量輸入端口,可以輸出10位ADC 。通過3位地址輸入端能從8路中選擇一路進(jìn)行轉(zhuǎn)換。如每隔一段時(shí)間依次輪流改變3位地址輸入端的地址,就能依次對8 路輸入電壓進(jìn)行測量。LED數(shù)碼管顯示采用軟件譯碼動態(tài)顯示。通過按鍵選擇可對8路循環(huán)顯示,也可單路顯示,單路顯示可通過按鍵選擇顯示的通道數(shù)。圖 1-5 ADC結(jié)構(gòu)控制寄存器2. TL431的功能與應(yīng)用 TL431是輸出可調(diào)的基準(zhǔn)電壓源,在儀表中的作用是給模擬電路提供一個(gè)穩(wěn)定準(zhǔn)確的參考電壓源。這些

7、基準(zhǔn)的特性使他們能在數(shù)字電壓表、電源和運(yùn)放電路等許多應(yīng)用中代替齊納二極管。2.5V參考從5.0V邏輯電源可方便地獲得穩(wěn)定參考電壓。TL431塑料封裝外殼如圖1-6所示。管腳:1.參考 2.陽極 3.陰極圖 1-6 塑料封裝外殼及符號TL431為用于多方面的可編程精密參考。在需要非標(biāo)準(zhǔn)參考電壓的電路中它可作為參考電壓。其它用途包括驅(qū)動電壓監(jiān)視器、恒流源、橫流宿、串聯(lián)穩(wěn)壓器和電源中的光耦合器的反饋控制。在每項(xiàng)上述應(yīng)用中在各種工作電流和負(fù)載電容情況下保持器件穩(wěn)定性相當(dāng)關(guān)鍵。3. 74HC595簡介8位串行輸入 /8位串行或并行輸出 存儲狀態(tài)寄存器。并行輸出,總線驅(qū)動; 串行輸入;

8、標(biāo)準(zhǔn)中等規(guī)模集成電路。圖 1-7 74HC595六、程序流程圖圖 1-8 程序流程圖七、源程序清單/*本程序功能說明*讀ADC測量外部電壓,使用外部TL431基準(zhǔn)計(jì)算電壓.用STC的MCU的IO方式控制74HC595驅(qū)動8位數(shù)碼管。用戶可以修改宏來選擇時(shí)鐘頻率.使用Timer0的16位自動重裝來產(chǎn)生1ms節(jié)拍,程序運(yùn)行于這個(gè)節(jié)拍下, 用戶修改MCU主時(shí)鐘頻率時(shí),自動定時(shí)于1ms.右邊4位數(shù)碼管顯示測量的電壓值值.外部電壓從板上測溫電阻兩端輸入, 輸入電壓0VDD, 不要超過VDD或低于0V. 實(shí)際項(xiàng)目使用請串一個(gè)1K的電阻到ADC輸入口, ADC輸入口再并一個(gè)電容到地.*/#define MA

9、IN_Fosc22118400L/定義主時(shí)鐘#include"STC15Fxxxx.H"/*/#define DIS_DOT0x20#define DIS_BLACK0x10#define DIS_0x11#define P1n_pure_input(bitn)P1M1 |= (bitn),P1M0 &= (bitn)/* 用戶定義宏 */#defineCal_MODE 0/每次測量只讀1次ADC. 分辨率0.01V/#defineCal_MODE 1/每次測量連續(xù)讀16次ADC 再平均計(jì)算. 分辨率0.01V#defineTimer0_Reload(65536UL

10、 -(MAIN_Fosc / 1000)/Timer 0 中斷頻率, 1000次/秒/*本地常量聲明*/u8 code t_display=/標(biāo)準(zhǔn)字庫/0 1 2 3 4 5 6 7 8 9 A B C D E F0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,/black - H J K L No P U t G Q r M y0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6

11、e,0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46;/0. 1. 2. 3. 4. 5. 6. 7. 8. 9. -1u8 code T_COM=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;/位碼/*IO口定義*/sbitP_HC595_SER = P40;/pin 14SERdata inputsbitP_HC595_RCLK = P54;/pin 12RCLkstore (latch) clocksbitP_HC595_SRCLK = P43;/pin 11SRCLKShift data cl

12、ock/*本地變量聲明*/u8 LED88;/顯示緩沖u8display_index;/顯示位索引bitB_1ms;/1ms標(biāo)志u16msecond;u16Bandgap;u16Get_ADC10bitResult(u8 channel);/channel = 07/*/void main(void)u8i;u16j;P0M1 = 0;P0M0 = 0;/設(shè)置為準(zhǔn)雙向口P1M1 = 0;P1M0 = 0;/設(shè)置為準(zhǔn)雙向口P2M1 = 0;P2M0 = 0;/設(shè)置為準(zhǔn)雙向口P3M1 = 0;P3M0 = 0;/設(shè)置為準(zhǔn)雙向口P4M1 = 0;P4M0 = 0;/設(shè)置為準(zhǔn)雙向口P5M1 = 0;P

13、5M0 = 0;/設(shè)置為準(zhǔn)雙向口P6M1 = 0;P6M0 = 0;/設(shè)置為準(zhǔn)雙向口P7M1 = 0;P7M0 = 0;/設(shè)置為準(zhǔn)雙向口display_index = 0;P1ASF = (1<<2) + (1<<4);/P1.2 P1.4做ADCP1M1 |= (0xc0);P1M0 &= (0xc0);/P1.2 P1.4設(shè)置成高阻ADC_CONTR = 0xE0;/90T, ADC power onTimer0_1T();Timer0_AsTimer();Timer0_16bitAutoReload();Timer0_Load(Timer0_Reload)

14、;Timer0_InterruptEnable();Timer0_Run();EA = 1;/打開總中斷for(i=0; i<8; i+)LED8i = 0x10;/上電消隱while(1)if(B_1ms)/1ms到B_1ms = 0;if(+msecond >= 300)/300ms到msecond = 0;#if (Cal_MODE = 0)/= 只讀1次ADC, 10bit ADC. 分辨率0.01V Get_ADC10bitResult(2);/通道改變, 讀一次并丟棄結(jié)果, 內(nèi)部的采樣電容電壓等于輸入值.Bandgap = Get_ADC10bitResult(2);

15、/讀外部基準(zhǔn)TL431對應(yīng)的ADCGet_ADC10bitResult(4); /通道改變, 讀一次并丟棄結(jié)果, 內(nèi)部的采樣電容電壓等于輸入值.j = Get_ADC10bitResult(4); /讀外部電壓ADCj = (u16)(u32)j * 250 / Bandgap);/計(jì)算外部電壓, TL431電壓為2.50V, 測電壓分辨率0.01V#endif/=/= 連續(xù)讀16次ADC 再平均計(jì)算. 分辨率0.01V =#if (Cal_MODE = 1)Get_ADC10bitResult(2);/通道改變, 讀一次并丟棄結(jié)果, 內(nèi)部的采樣電容電壓等于輸入值.for(j=0, i=0;

16、i<16; i+)j += Get_ADC10bitResult(2);/讀外部基準(zhǔn)TL431對應(yīng)的ADCBandgap = j >> 4;/16次平均Get_ADC10bitResult(4);/通道改變, 讀一次并丟棄結(jié)果, 內(nèi)部的采樣電容電壓等于輸入值.for(j=0, i=0; i<16; i+)j += Get_ADC10bitResult(4);/讀外部電壓ADCj = j >> 4;/16次平均j = (u16)(u32)j * 250 / Bandgap);/計(jì)算外部電壓, TL431電壓為2.50V, 測電壓分辨率0.01V#endif/=

17、LED85 = j / 100 + DIS_DOT;/顯示外部電壓值LED86 = (j % 100) / 10;LED87 = j % 10;/j = Bandgap;/LED80 = j / 1000;/顯示Bandgap ADC值/LED81 = (j % 1000) / 100;/LED82 = (j % 100) / 10;/LED83 = j % 10; /*/=/ 函數(shù): u16Get_ADC10bitResult(u8 channel)/ 描述: 查詢法讀一次ADC結(jié)果./ 參數(shù): channel: 選擇要轉(zhuǎn)換的ADC./ 返回: 10位ADC結(jié)果./ 版本: V1.0, 20

18、12-10-22/=u16Get_ADC10bitResult(u8 channel)/channel = 07ADC_RES = 0;ADC_RESL = 0;ADC_CONTR = (ADC_CONTR & 0xe0) | 0x08 | channel; /start the ADCNOP(4);while(ADC_CONTR & 0x10) = 0);/wait for ADC finishADC_CONTR &= 0x10;/清除ADC結(jié)束標(biāo)志return(u16)ADC_RES << 2) | (ADC_RESL & 3);/* 向HC59

19、5發(fā)送一個(gè)字節(jié)函數(shù) */void Send_595(u8 dat)u8i;for(i=0; i<8; i+)dat <<= 1;P_HC595_SER = CY;P_HC595_SRCLK = 1;P_HC595_SRCLK = 0;/* 顯示掃描函數(shù) */void DisplayScan(void)Send_595(T_COMdisplay_index); /輸出位碼Send_595(t_displayLED8display_index);/輸出段碼P_HC595_RCLK = 1;P_HC595_RCLK = 0;/鎖存輸出數(shù)據(jù)if(+display_index >

20、= 8)display_index = 0;/8位結(jié)束回0/* Timer0 1ms中斷函數(shù) */void timer0 (void) interrupt TIMER0_VECTORDisplayScan();/1ms掃描顯示一位B_1ms = 1;/1ms標(biāo)志八、心得體會通過這次單片機(jī)課程設(shè)利用STC15系列單片機(jī)制作數(shù)字電壓表,我對單片機(jī)有了跟深的理解,不僅僅是理論上、還有實(shí)際操作上,我都有長足的進(jìn)步,將理論很好地應(yīng)用到實(shí)際當(dāng)中去,可以說這次課程設(shè)計(jì),我學(xué)到了非常多的知識,其次,我還培養(yǎng)了了獨(dú)立思考的能力和創(chuàng)新意識,從而不斷地提高自己,超越自己,能夠很好的利用實(shí)驗(yàn)室的先進(jìn)設(shè)備供自己學(xué)習(xí),為自己所用,并成為自己的東西。這個(gè)設(shè)計(jì)過程中,我們通過在原有的系統(tǒng)進(jìn)行了改進(jìn),使其具有一次掃描和十六次掃描

溫馨提示

  • 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. 人人文庫網(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

提交評論