用lcd1602和adc0808設(shè)計(jì)的數(shù)字電壓表_第1頁(yè)
用lcd1602和adc0808設(shè)計(jì)的數(shù)字電壓表_第2頁(yè)
用lcd1602和adc0808設(shè)計(jì)的數(shù)字電壓表_第3頁(yè)
用lcd1602和adc0808設(shè)計(jì)的數(shù)字電壓表_第4頁(yè)
用lcd1602和adc0808設(shè)計(jì)的數(shù)字電壓表_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、學(xué)習(xí)情境6-數(shù)字電壓表的設(shè)計(jì)之 用lcd1602和adc0808設(shè)計(jì)的數(shù)字電壓表 點(diǎn)名,復(fù)習(xí)1、 ADC0832的引腳及其功能,以及與單片機(jī)的硬件連接?引言:數(shù)字電壓表的基本工作原理是利用A/D轉(zhuǎn)換電路將待測(cè)的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),通過(guò)相應(yīng)換算后將測(cè)試結(jié)果以數(shù)字形式顯示出來(lái)的一種電壓表。較之于一般的模擬電壓表,數(shù)字電壓表具有精度高、測(cè)量準(zhǔn)確、讀數(shù)直觀、使用方便等優(yōu)點(diǎn)。數(shù)字電壓表的核心部件是A/D轉(zhuǎn)換器,由于各種不同的A/D轉(zhuǎn)換原理構(gòu)成了各種不同類(lèi)型的DVM。一般說(shuō)來(lái),A/D轉(zhuǎn)換的方式可分為兩類(lèi):積分式和逐次逼近式。積分式A/D轉(zhuǎn)換器是先用積分器將輸入的模擬電壓轉(zhuǎn)換成時(shí)間或頻率,再將其數(shù)字化。

2、根據(jù)轉(zhuǎn)化的中間量不同,它又分為U-T(電壓-時(shí)間)式和U-F(電壓-頻率)式兩種。逐次逼近式A/D轉(zhuǎn)換器分為比較式和斜坡電壓式,根據(jù)不同的工作原理,比較式又分為逐次比較式及零平衡式等。斜坡電壓式又分為線性斜坡式和階梯斜坡式兩種。在高精度數(shù)字電壓表中,常采用由積分式和比較式相結(jié)合起來(lái)的復(fù)合式A/D轉(zhuǎn)換器。本設(shè)計(jì)以AT89C51單片機(jī)為核心,以逐次比較型A/D轉(zhuǎn)換器ADC0808、液晶顯示器LCD1602為主體,構(gòu)造了一款簡(jiǎn)易的數(shù)字電壓表,能夠測(cè)量1路05V直流電壓,最小分辨率0.02V。 新課講授6.2基于LCD1602和ADC0808設(shè)計(jì)的數(shù)字電壓表逐次逼近型A/D轉(zhuǎn)換器屬于直接型A/D轉(zhuǎn)換器

3、,它能把輸入的模擬電壓直接轉(zhuǎn)換為輸出的數(shù)字代碼,而不需要經(jīng)過(guò)中間變量。主要由比較器、環(huán)形分配器、控制門(mén)、寄存器與D/A轉(zhuǎn)換器組成。6.21 ADC0808簡(jiǎn)介1、主要技術(shù)指標(biāo)和特性(1)分辨率: 8位。(2)總的不可調(diào)誤差: ADC0808為±LSB,ADC 0809為±1LSB。(3)轉(zhuǎn)換時(shí)間: 取決于芯片時(shí)鐘頻率,如CLK=500kHz時(shí),TCONV=128s。(4)單一電源: +5V。(5)模擬輸入電壓范圍: 單極性05V;雙極性±5V,±10V(需外加一定電路)。(6)具有可控三態(tài)輸出緩存器。(7)啟動(dòng)轉(zhuǎn)換控制為脈沖式(正脈沖),上升沿使所有內(nèi)部

4、寄存器清零,下降沿使A/D轉(zhuǎn)換開(kāi)始。(8)使用時(shí)不需進(jìn)行零點(diǎn)和滿刻度調(diào)節(jié)。2、ADC0808引腳功能 圖6-2-1 ADC0808引腳圖(1)IN0IN78路模擬輸入,通過(guò)3根地址譯碼線ADDA、ADDB、ADDC來(lái)選通一路。(2)D7D0A/D轉(zhuǎn)換后的數(shù)據(jù)輸出端,為三態(tài)可控輸出,故可直接和微處理器數(shù)據(jù)線連接。8位排列順序是D7為最高位,D0為最低位。(3)ADDA、ADDB、ADDC模擬通道選擇地址信號(hào),ADDA為低位,ADDC為高位。地址信號(hào)與選中通道對(duì)應(yīng)關(guān)系如表11.3所示。(4)VR(+)、VR(-)正、負(fù)參考電壓輸入端,用于提供片內(nèi)DAC電阻網(wǎng)絡(luò)的基準(zhǔn)電壓。在單極性輸入時(shí),VR(+)

5、=5V,VR(-)=0V;雙極性輸入時(shí),VR(+)、VR(-)分別接正、負(fù)極性的參考電壓。表6-1-1 地址信號(hào)與選中通道的關(guān)系地 址選中通道ADDCADDBADDA000011110011001101010101IN0IN1IN2IN3IN4IN5IN6IN7(5)ALE地址鎖存允許信號(hào),高電平有效。當(dāng)此信號(hào)有效時(shí),A、B、C三位地址信號(hào)被鎖存,譯碼選通對(duì)應(yīng)模擬通道。在使用時(shí),該信號(hào)常和START信號(hào)連在一起,以便同時(shí)鎖存通道地址和啟動(dòng)A/D轉(zhuǎn)換。(6)STARTA/D轉(zhuǎn)換啟動(dòng)信號(hào),正脈沖有效。加于該端的脈沖的上升沿使逐次逼近寄存器清零,下降沿開(kāi)始A/D轉(zhuǎn)換。如正在進(jìn)行轉(zhuǎn)換時(shí)又接到新的啟動(dòng)脈

6、沖,則原來(lái)的轉(zhuǎn)換進(jìn)程被中止,重新從頭開(kāi)始轉(zhuǎn)換。(7)EOC轉(zhuǎn)換結(jié)束信號(hào),高電平有效。該信號(hào)在A/D轉(zhuǎn)換過(guò)程中為低電平,其余時(shí)間為高電平。該信號(hào)可作為被CPU查詢的狀態(tài)信號(hào),也可作為對(duì)CPU的中斷請(qǐng)求信號(hào)。在需要對(duì)某個(gè)模擬量不斷采樣、轉(zhuǎn)換的情況下,EOC也可作為啟動(dòng)信號(hào)反饋接到START端,但在剛加電時(shí)需由外電路第一次啟動(dòng)。(8)OE輸出允許信號(hào),高電平有效。當(dāng)微處理器送出該信號(hào)時(shí),ADC0808/0809的輸出三態(tài)門(mén)被打開(kāi),使轉(zhuǎn)換結(jié)果通過(guò)數(shù)據(jù)總線被讀走。在中斷工作方式下,該信號(hào)往往是CPU發(fā)出的中斷請(qǐng)求響應(yīng)信號(hào)。3、ADC0808內(nèi)部結(jié)構(gòu)圖逐次逼近型A/D轉(zhuǎn)換器ADC0808由八路模擬開(kāi)關(guān)、地

7、址鎖存與譯碼器、比較器、D/A轉(zhuǎn)換器、寄存器、控制電路和三態(tài)輸出鎖存器等組成。其內(nèi)部結(jié)構(gòu)如圖4所示。圖6-2-2 ADC0808內(nèi)部結(jié)構(gòu)4、工作時(shí)序與使用說(shuō)明 圖6-2-3 ADC0808工作時(shí)序ADC 0808/0809的工作時(shí)序如圖11.21所示。當(dāng)通道選擇地址有效時(shí),ALE信號(hào)一出現(xiàn),地址便馬上被鎖存,這時(shí)轉(zhuǎn)換啟動(dòng)信號(hào)緊隨ALE之后(或與ALE同時(shí))出現(xiàn)。START的上升沿將逐次逼近寄存器SAR復(fù)位,在該上升沿之后的2s加8個(gè)時(shí)鐘周期內(nèi)(不定),EOC信號(hào)將變低電平,以指示轉(zhuǎn)換操作正在進(jìn)行中,直到轉(zhuǎn)換完成后EOC再變高電平。微處理器收到變?yōu)楦唠娖降腅OC信號(hào)后,便立即送出OE信號(hào),打開(kāi)三

8、態(tài)門(mén),讀取轉(zhuǎn)換結(jié)果。 系統(tǒng)硬件設(shè)計(jì)從以上分析可知。ADC0808有8個(gè)模擬通道,本文的模擬量從0通道輸入,由ADC0808的模擬通道地址表可知,電路中應(yīng)當(dāng)把ADDC、ADDB、ADDA三個(gè)引腳全部接地。根據(jù)ADC0808的工作時(shí)序圖可知,START引腳在一個(gè)高電平后啟動(dòng)A/D轉(zhuǎn)換,當(dāng)EOC引腳出現(xiàn)一個(gè)低電平時(shí)轉(zhuǎn)換結(jié)束,然后由OE引腳控制,從并行輸出端讀取一個(gè)字節(jié)的轉(zhuǎn)換結(jié)果。轉(zhuǎn)換后的結(jié)果為0x00-0xFF,轉(zhuǎn)換過(guò)程中芯片所需的時(shí)鐘信號(hào)由單片機(jī)定時(shí)器中斷子程序提供。具體硬件結(jié)構(gòu)圖如圖6-2-4所示:圖6-2-4 系統(tǒng)硬件連接圖 系統(tǒng)軟件設(shè)計(jì)根據(jù)需要,可將系統(tǒng)軟件按照功能劃分為4個(gè)模塊,分別是主程

9、序模塊、A/D轉(zhuǎn)換模塊、液晶顯示模塊、中斷服務(wù)程序模塊(改變顯示的小數(shù)點(diǎn)位置)。編寫(xiě)系統(tǒng)軟件時(shí),可首先編寫(xiě)各模塊的底層驅(qū)動(dòng)程序,而后是系統(tǒng)聯(lián)機(jī)調(diào)試,最后編寫(xiě)上層主程序。1、 主程序設(shè)計(jì)主程序主要負(fù)責(zé)初始化工作:設(shè)置定時(shí)器、寄存器的初值,啟動(dòng)A/D轉(zhuǎn)換,讀取轉(zhuǎn)換結(jié)果,處理量程轉(zhuǎn)換響應(yīng),控制液晶實(shí)時(shí)顯示等,其流程圖如圖6-2-5所示。圖6-2-5主程序流程圖 2、A/D轉(zhuǎn)換程序圖6-2-6 A/D轉(zhuǎn)換程序流程圖A/D轉(zhuǎn)換程序的功能是采集數(shù)據(jù),在整個(gè)系統(tǒng)設(shè)計(jì)中占有很高的地位。當(dāng)系統(tǒng)設(shè)置好后,單片機(jī)掃描轉(zhuǎn)換結(jié)束管腳P1.7的輸入電平狀態(tài),當(dāng)輸入為高電平則轉(zhuǎn)換完成,將轉(zhuǎn)換的數(shù)值轉(zhuǎn)換并顯示輸出。若輸入為低

10、電平,則繼續(xù)掃描。程序流程圖如圖6-2-6所示。 程序如下:#include<reg52.h>#include <intrins.h>unsigned long dat_adc0808; uint adc0808_init() / AD初始化 START=0; OE=0; START=1; START=0; while(EOC=0); OE=1; dat_adc0808=P1; OE=0; return dat_adc0808; 得到ADC0808的轉(zhuǎn)換結(jié)果后,應(yīng)當(dāng)及時(shí)處理成LCD1602能夠顯示的數(shù)字字符。以下函數(shù)實(shí)現(xiàn)此功能,為ADC0808顯示刷新子程序: void

11、 Refresh_show() /刷新顯示 uint t=dat_adc0808*500.0/255;/ display_buffer17 = t/100+'0' /整數(shù)位 display_buffer19 = t/10%10+'0' /兩個(gè)小數(shù)位 display_buffer110 = t%10+'0' 課堂小結(jié)本節(jié)課我們主要學(xué)習(xí)了如何應(yīng)用ADC0808設(shè)計(jì)一個(gè)數(shù)字電壓表。知道了在硬件上ADC0808芯片和單片機(jī)的連接,在軟件方面,我們著重介紹了如何獲取A/D轉(zhuǎn)換結(jié)果函數(shù)的設(shè)計(jì),這需要我們從ADC0808芯片的技術(shù)資料中獲得設(shè)計(jì)程序的方法。通過(guò)

12、和前面一個(gè)項(xiàng)目的對(duì)比可知,對(duì)于模數(shù)轉(zhuǎn)換芯片的使用,關(guān)鍵的一點(diǎn)就是我們必需明白A/D芯片的轉(zhuǎn)換機(jī)制,ADC0808轉(zhuǎn)換時(shí)和時(shí)鐘引腳的頻率有很大的關(guān)系,頻率設(shè)置不當(dāng),ADC0808就不能轉(zhuǎn)換,這一點(diǎn)同學(xué)們要特別注意。 完整程序代碼1、LCD1602.c源程序/液晶控制與顯示驅(qū)動(dòng)程序#include <reg52.h>#include <intrins.h>#include <string.h>#include "LCD1602.h"#include "ADC0808.h"/-忙檢查-/uchar LCD_Busy_Chec

13、k() uchar LCD_Status;RS = 0;RW = 1;E = 1;delay4us();LCD_Status = P0;E = 0;return LCD_Status;/-向LCD寫(xiě)入命令-/void Write_LCD_Command(uchar cmd) while(LCD_Busy_Check()& 0x80)=0x80); /忙等待RS = 0;RW = 0;E = 0;P0 = cmd;delay4us();E = 1;delay4us();E = 0;/-向LCD寫(xiě)入一個(gè)字節(jié)的數(shù)據(jù)函數(shù)-*/void Write_LCD_Data(uchar dat) whi

14、le(LCD_Busy_Check()&0x80)=0x80);RS = 1;RW = 0;E = 0;P0 = dat;delay4us();E = 1;delay4us();E = 0;/-LCD初始化-*/void Initialize_LCD1602() /液晶初始化函數(shù) Write_LCD_Command(0x38);delay50us(10); /功能設(shè)置,數(shù)據(jù)長(zhǎng)度為8位,雙行顯示,5×7點(diǎn)陣字體 Write_LCD_Command(0x0C);delay50us(10); / 顯示開(kāi),關(guān)光標(biāo) Write_LCD_Command(0x06);delay50us(1

15、0); /字符進(jìn)入模式:屏幕不動(dòng),字符后移 Write_LCD_Command(0x01);delay50us(10);/清屏/-在LCD上顯示字符串-*/void LCD_Display(uchar *str) uchar i; for(i=0;i<strlen(str);i+) Write_LCD_Data(stri); delay50us(100);2、lCD1602_H頭文件#ifndef _lCD1602_H_#define_LCD1602_H_#include <reg52.h>#define dat_port P0#define uchar unsigned c

16、har#define uint unsigned int#define delay4us() _nop_();_nop_();_nop_();_nop_();sbit RS=P20;/RS=1 數(shù)據(jù) RS=0 命令sbit RW=P21;/RW=1 讀取 RW=0 寫(xiě)入sbit E=P22;/E 使能信號(hào)uchar LCD_Busy_Check();/忙檢查void Write_LCD_Command(uchar cmd);/向LCD寫(xiě)入命令void Write_LCD_Data(uchar dat); /向LCD寫(xiě)入一個(gè)字節(jié)的數(shù)據(jù)函數(shù)void Initialize_LCD1602(); /液

17、晶初始化函數(shù)void LCD_Display(uchar *str);/在LCD上顯示字符串#endif3、ADC0808.C源程序#include<reg52.h>#include <intrins.h>#include "ADC0808.h"unsigned long dat_adc0808; uchar display_buffer16= "Current voltage:", " (CH) =0.00V"void delay50us(uint m) uint n,k; for(n=m;n>0;n-

18、) for(k=25;k>0;k-);uint adc0808_init() / AD初始化 START=0; OE=0; START=1; START=0; while(EOC=0); OE=1; dat_adc0808=P1; OE=0; return dat_adc0808;void Refresh_show() /刷新顯示 uint t=dat_adc0808*500.0/255;/ display_buffer17 = t/100+'0' /整數(shù)位 display_buffer19 = t/10%10+'0' /兩個(gè)小數(shù)位 display_buffer110 = t%10+'0'4、ADC0808.h 頭文件#ifndef _ADC0808_H_#define_ADC0808_H_#include <reg52.h>#define data_port P1#define uchar unsigned char#define uint unsigned intsbit START=P23;sb

溫馨提示

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