模數轉換ADC0804的應用(含源程序及電路)
[實(shí)驗要求]
本文引用地址:http://dyxdggzs.com/article/187561.htm從ADC0804 的模擬量通道輸入0-5V 之間的模擬量,通過(guò)ADC0804 轉換成數字量送給單片機,經(jīng)單片機處理后在數碼管上以十進(jìn)制形成顯示出來(lái)。
[實(shí)驗目的]
學(xué)習如果用單片機控制ADC0804芯片進(jìn)行數模轉換,掌握數碼管動(dòng)態(tài)掃描顯示的原理。
動(dòng)態(tài)掃描:就六位數碼管顯示123456舉例說(shuō)明如下:先讓第一個(gè)數碼管顯示1,其余的全部不亮,1大約亮幾毫秒,然后熄滅,緊接著(zhù)立即讓第二個(gè)數碼管顯示2,其余的全部不亮,2同樣亮幾毫秒,依次這樣亮到第六個(gè)數碼管,然后再回來(lái)顯示1,如此這樣以很快的速度不斷循環(huán)下去,由于人眼的視覺(jué)暫留時(shí)間大約為20毫秒左右,所以是感覺(jué)不出有不亮的數碼管存在的,看見(jiàn)的是六個(gè)數碼管同時(shí)在顯示,數值是123456,如果我們把這個(gè)過(guò)程一點(diǎn)點(diǎn)放慢,看見(jiàn)的是從第一個(gè)數碼管顯1,然后移到第二個(gè)再顯2,。。。也就是說(shuō)在任一時(shí)刻只有一位數碼管是亮的。這就是數碼管動(dòng)態(tài)掃描顯示的原理
ADC0804: ADC0804是8位全MOS中速A/D 轉換器、它是逐次逼近式A/D 轉換器,片內有三態(tài)數據輸出鎖存器,可以和單片機直接接口。單通道輸入,轉換時(shí)間大約為100us。ADC0804 轉換時(shí)序是:當CS=0 許可進(jìn)行A/D 轉換。WR由低到高時(shí),A/D開(kāi)始轉換,一次轉換一共需要66-73 個(gè)時(shí)鐘周期。CS與WR同時(shí)有效時(shí)啟動(dòng)A/D轉換,轉換結束產(chǎn)生INTR 信號(低電平有效),可供查詢(xún)或者中斷信號。在CS和RD 的控制下可以讀取數據結果。本實(shí)驗沒(méi)有使用INTR信號。
[硬件電路]
[源代碼]
//擰動(dòng)AD旁邊的電位器,會(huì )在數碼管的前三位顯示0-255之間的數//值。這就是把模擬信號轉換成數字信號,即模數轉換。
#includereg51.h>
#include intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit adrd=P3^7;//IO口定義
sbit adwr=P3^6;
sbit diola=P2^5;
sbit dula=P2^6;
sbit wela=P2^7;
unsigned char j,k,adval;
void delay(unsigned char i)//延時(shí)程序
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,//數碼管編碼
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void display(uchar bai_c,uchar sh_c,uchar g_c)//顯示程序
{
P0=table[bai_c];//顯示百位
dula=1;
dula=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);
dula=0;
P0=table[sh_c];//顯示十位
dula=1;
dula=0;
wela=0;
P0=0xfd;
wela=1;
wela=0;
delay(5);
DIY機械鍵盤(pán)相關(guān)社區:機械鍵盤(pán)DIY
評論