日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

单片机 数字电压表(ADC0809)

發(fā)布時(shí)間:2023/12/31 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单片机 数字电压表(ADC0809) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

單片機(jī) 數(shù)字電壓表(ADC0809)

一、簡(jiǎn)述

????采用模數(shù)轉(zhuǎn)換的芯片ADC0809實(shí)現(xiàn)設(shè)計(jì)數(shù)字電壓表。例子中設(shè)計(jì)的數(shù)字電壓表可以測(cè)量0~5V范圍內(nèi)的輸入電壓值,并且通過4位LED數(shù)碼管顯示采集的電壓值,例子測(cè)量三個(gè)模擬值:4.995、2.5、0.005。

????ADC0809是可以將我們要測(cè)量的模擬電壓信號(hào)量轉(zhuǎn)換為數(shù)字量從而可以進(jìn)行存儲(chǔ)或顯示的一種轉(zhuǎn)換器件。

? ?文件打包:鏈接: https://pan.baidu.com/s/1F2E135Jw7TG3EmUVx3xKGg 提取碼: 5ttz

二、效果

三、工程文件

1、Keil工程

2、仿真電路圖

四、源文件

#include<reg51.h> #define uint unsigned int #define uchar unsigned char uchar code led[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//數(shù)碼管顯示0-9的電平碼 uint volt,vtime; //電壓值測(cè)定值 uchar addr;//測(cè)量地址位 sbit LW1=P2^3; //對(duì)應(yīng)第4個(gè)數(shù)碼管 sbit LW2=P2^2; //對(duì)應(yīng)第3個(gè)數(shù)碼管 sbit LW3=P2^1; //對(duì)應(yīng)第2個(gè)數(shù)碼管 sbit LW4=P2^0; //對(duì)應(yīng)第1個(gè)數(shù)碼管 sbit LW5=P1^4;//指示當(dāng)前顯示的是第幾個(gè)轉(zhuǎn)換值 sbit CLK=P2^4; //時(shí)鐘信號(hào) sbit START=P2^5; //轉(zhuǎn)換啟動(dòng)開關(guān) sbit EOC=P2^6; //轉(zhuǎn)換結(jié)束標(biāo)志 sbit OE=P2^7;//定義ADC0809各腳 /**********************************************************/ //函數(shù)名:delay(uint x) //功能:延時(shí)程序 改變測(cè)量地址 //調(diào)用函數(shù): //輸入?yún)?shù):x //輸出參數(shù): //說明:程序的延時(shí)時(shí)間為x乘以0.5ms 每5s改變測(cè)量地址位 /**********************************************************/ void delay(uint x) {uchar y,z;for(y=x;y>0;y--)for(z=250;z>0;z--);//該步運(yùn)行時(shí)間約為0.5msvtime++;if(vtime==1000){vtime=0;addr++;if(addr==3) //本例子一共有3個(gè)測(cè)量輸入值,輪流讀取這3個(gè)值并轉(zhuǎn)換顯示addr=0;//以上語句實(shí)現(xiàn)測(cè)量地址位的改變 } } /**********************************************************/ //函數(shù)名:ADC() //功能:數(shù)模轉(zhuǎn)換程序 //調(diào)用函數(shù): //輸入?yún)?shù): //輸出參數(shù): //說明:將轉(zhuǎn)換好的測(cè)定值保存在變量volt中 /**********************************************************/ void ADC() {EA=1;//開中斷//確保進(jìn)入正常AD轉(zhuǎn)換狀態(tài)?START=0;START=1;START=0;//ad開始轉(zhuǎn)換 while(EOC==0); //等待轉(zhuǎn)換結(jié)束OE=1; //輸出數(shù)據(jù)標(biāo)志為真EA=0;//關(guān)中斷volt=P3;//獲取轉(zhuǎn)換值保存到volt中,(P3為轉(zhuǎn)換后數(shù)據(jù))volt=volt*196;//轉(zhuǎn)換值處理 (例子的滿量程為5V,轉(zhuǎn)換分辯率為8位即最大值是255,5/255=196mV,即1代表196mV)OE=0;//輸出轉(zhuǎn)換結(jié)束 (要在獲取轉(zhuǎn)換值之后) } /**********************************************************/ //函數(shù)名:display() //功能:4位數(shù)碼管顯示 //調(diào)用函數(shù):delay(uint x) //輸入?yún)?shù): //輸出參數(shù): //說明:將處理后的電壓值顯示在4位數(shù)碼管上 /**********************************************************/ void display() {P0=0xff;//消隱 (相當(dāng)于全部滅燈,清除上次顯示效果)LW1=0;P0=~led[volt/10000]&0x7f;//帶小數(shù)點(diǎn)1伏顯示位delay(2);P0=0xff;LW1=1;LW2=0;P0=~led[(volt/1000)%10];//100毫伏顯示位delay(2);P0=0xff;LW2=1; LW3=0;P0=~led[(volt/100)%10];//10毫伏顯示位delay(2);P0=0xff;LW3=1;LW4=0;P0=~led[(volt/10)%10];//1毫伏顯示位delay(2);P0=0xff;LW4=1;LW5=0;P0=~led[addr+1];//顯示電壓測(cè)量位delay(2);LW5=1;//指示當(dāng)前顯示的是第幾個(gè)轉(zhuǎn)換值 } /**********************************************************/ //主程序 /**********************************************************/ void main() {EA=1;//開總中斷 TMOD=0x01;//設(shè)定定時(shí)計(jì)數(shù)工作方式//為定時(shí)器初賦值TH0=0XFF;TL0=0XB4;ET0=1;//開定時(shí)器0中斷 TR0=1;//開啟定時(shí)器0while(1){P1=addr;//裝入測(cè)量地址LW5=1;ADC();//調(diào)用模數(shù)轉(zhuǎn)換程序display();//調(diào)用顯示程序} } /**********************************************************/ //函數(shù)名:timer() interrupt 1 //功能:定時(shí)中斷0響應(yīng)程序 //調(diào)用函數(shù): //輸入?yún)?shù): //輸出參數(shù): //說明:為ADC提供時(shí)鐘信號(hào) /**********************************************************/ void timer() interrupt 1 {//初值重置TH0=0XFF;TL0=0XF0;CLK=~CLK;//取反 產(chǎn)生時(shí)鐘信號(hào) }

五、總結(jié)

????ADC0809是一種有8路模擬輸入、8位并行數(shù)字輸出的逐次逼近式A/D器件。

1、主要技術(shù)指標(biāo)和特性
????(1) 分辨率:8位;
????(2) 轉(zhuǎn)換時(shí)間:取決于芯片的時(shí)鐘頻率,轉(zhuǎn)換1次所需時(shí)間;
????(3) 單一電源:+5V;

????(4) 模擬輸入電壓范圍:單級(jí)性為0~+5V。

2、引腳介紹

管腳功能說明:
IN0-IN7:模擬量輸入通道。就是說它可以分時(shí)地分別對(duì)八個(gè)模擬量進(jìn)行測(cè)量轉(zhuǎn)換。
ADDA-C:地址線。也就是通過這三根地址線的不同編碼來選擇對(duì)哪個(gè)模擬量進(jìn)行測(cè)量轉(zhuǎn)換。
ALE:地址鎖存允許信號(hào)。在低電平時(shí)向ADDA-C寫地址,當(dāng)ALE跳至高電平后ADDA-C上的數(shù)據(jù)被鎖存
START:啟動(dòng)轉(zhuǎn)換信號(hào)。當(dāng)它為上升沿后,將內(nèi)部寄存器清0。當(dāng)它為下降沿后,開始A/D轉(zhuǎn)換。
D0-D7:數(shù)據(jù)輸出口。轉(zhuǎn)換后的數(shù)字?jǐn)?shù)據(jù)量就是從這輸出給S52的。
OE:輸出允許信號(hào),是對(duì)D0-D7的輸出控制端,OE=0,輸出端呈高阻態(tài),OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)。
CLOCK:時(shí)種信號(hào)。ADC0809內(nèi)部沒有時(shí)鐘電路,需由外部提供時(shí)鐘脈沖信號(hào)。
EOC:轉(zhuǎn)換結(jié)束狀態(tài)信號(hào)。EOC=0,正在進(jìn)行轉(zhuǎn)換。EOC=1,轉(zhuǎn)換結(jié)束,可以進(jìn)行下一步輸出操作

Vref(+)、Vref(-):參考電壓。參考電壓用來與輸入的模擬量進(jìn)行比較,作為測(cè)量的基準(zhǔn)。一般Vref(+)=5v ,Vref(-)=0V。

3、時(shí)序圖與工作過程

? ? 時(shí)序圖:

工作過程:

?①在IN0-IN7上可分別接上要測(cè)量轉(zhuǎn)換的8路模擬量信號(hào)。可只接一路。
?②將ADDA-ADDC端給上代表選擇測(cè)量通道的代碼。如000(B)則代表通道0;001(B)代表通道1;111則代表通道7。
?③將ALE由低電平置為高電平,從而將ADDA-ADDC送進(jìn)的通道代碼鎖存,經(jīng)譯碼后被選中的通道的模擬量送給內(nèi)部轉(zhuǎn)換單元。
?④給START一個(gè)正脈沖。當(dāng)上升沿時(shí),所有內(nèi)部寄存器清零。下降沿時(shí),開始進(jìn)行A/D轉(zhuǎn)換;在轉(zhuǎn)換期間,START保持低電平。
?⑤EOC為轉(zhuǎn)換結(jié)束信號(hào)。在上述的A/D轉(zhuǎn)換期間,可以對(duì)EOC進(jìn)行不斷測(cè)量,當(dāng)EOC為高電平時(shí),表明轉(zhuǎn)換工作結(jié)束。否則,表明正在進(jìn)行A/D轉(zhuǎn)換。
?⑥當(dāng)A/D轉(zhuǎn)換結(jié)束后,將OE設(shè)置為1,這時(shí)D0-D7的數(shù)據(jù)便可以讀取了。OE=0,D0-D7輸出端為高阻態(tài),OE=1,D0-D7端輸出轉(zhuǎn)換的數(shù)據(jù)。
????說明:ADC0809的轉(zhuǎn)換工作是在時(shí)鐘脈沖的條件下完成的,因此首先要在CLOCK端給它一個(gè)時(shí)鐘信號(hào),說明書上給出了可以接入的脈沖信號(hào)頻率是在10KHz-1280KHz,典型值是640KHz。我們這里取值50KHz。
? 時(shí)序圖上的teoc時(shí)長為:從START上升沿開始后的8個(gè)時(shí)鐘同期再加2微秒。這一點(diǎn)得注意,因?yàn)楫?dāng)START脈沖剛結(jié)束進(jìn)入轉(zhuǎn)換工作時(shí),EOC還沒有立即變?yōu)榈碗娖蕉沁^了8個(gè)時(shí)鐘周期后才進(jìn)入低電平的,所以再給出START脈沖后最好延時(shí)一會(huì)再進(jìn)行EOC的檢測(cè)。

? 一個(gè)通道的轉(zhuǎn)換時(shí)間一般為64個(gè)時(shí)鐘周期,如時(shí)鐘頻率為640KHz時(shí),時(shí)鐘周期為1.5625微秒,一個(gè)通道的轉(zhuǎn)換時(shí)間則為1.5625×64=100微秒,那么1秒種就可以轉(zhuǎn)換1000000÷100=10000次。

4、計(jì)算定時(shí)器初值:

????信號(hào)頻率取值50KHz,晶振頻率是12MHz。

????12MHz時(shí)鐘頻率下,12MHz = 12000KHz = 12000000Hz,一個(gè)時(shí)鐘振蕩周期就是1/12000000秒,亦即1/12微秒,標(biāo)準(zhǔn)MCS51系列單片機(jī)的一個(gè)機(jī)器周期是12個(gè)時(shí)鐘振蕩周期,也就是12 * (1/12) = 1微秒。

要輸出50KHz的矩形方波 周期 T = (1/50K)s 等寬 也就是占空比50% 高電平時(shí)間是(0.5/50K)s = 0.01 ms = 10us

?

然而,實(shí)際上仿真時(shí)這個(gè)頻率是太快了(不知道是否是計(jì)算方法錯(cuò)了),編程中沒有使用該初值。

六、Proteus相關(guān)操作

? ? ? 1、電壓探針元件(顯示電壓)

? ? ? ? ? ?

? ?2、自定義電源電壓

? ? ? ??

-------------------------------------------------以下是回復(fù)?Rainynightsunset?這位兄弟---------------------------

下載打包文件之后:

========================以下回復(fù) ?木子Jasmine?這位兄弟======================

手動(dòng)復(fù)位效果 (使用輪詢方式檢測(cè)按鍵有沒有按下,因?yàn)橥獠恐袛嘁_被使用了)

測(cè)試代碼以及仿真文件:鏈接: https://pan.baidu.com/s/1zC8uhzlbIFRBOkOWuWzAWQ 提取碼: wr39

?

?

===================以下回復(fù)?Leon. 這位兄弟=======================

將程序中的addr最值修改為8,如下:

在仿真上,添加5個(gè)模擬輸入

效果:(注:想要查看電壓,請(qǐng)加上電壓探針元件)

?

?

============== ===== 以下回復(fù) ? ?馨心愢忞 ? ========================

簡(jiǎn)單的測(cè)量20v(采用分壓法:先把電壓除以4再進(jìn)行轉(zhuǎn)換,得到轉(zhuǎn)換的值后再乘以4)

測(cè)試?yán)?#xff1a;鏈接: https://pan.baidu.com/s/10RzT9lFVbB8db4CO7at_0A 提取碼: zwem

測(cè)試效果:

分壓測(cè)量20V說明:

?

=======================以下回復(fù)?yikai0511和validatetoken==============================

以下例子是:按鍵設(shè)置最高電壓,當(dāng)前電壓大于等于最高電壓時(shí)蜂鳴器報(bào)警以及LED亮,測(cè)試環(huán)境為Win10

電壓為20V的可以自己設(shè)置的,上下限值同時(shí)設(shè)置暫時(shí)沒弄好(感覺引腳不夠用,需要復(fù)用引腳)

例子打包:鏈接: https://pan.baidu.com/s/1RY18AeWCCsXXqlgUBeTv_w 提取碼: pdf7

仿真截圖:

?

效果:

?

總結(jié)

以上是生活随笔為你收集整理的单片机 数字电压表(ADC0809)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。