《電子技術應用》
您所在的位置:首頁 > 模拟设计 > 设计应用 > 模数转换ADC0804的应用(含源程序及电路)
模数转换ADC0804的应用(含源程序及电路)
摘要: 模数转换ADC0804的应用(含源程序及电路)[实验要求]从ADC0804的模拟量通道输入0-5V之间的模拟量,通过ADC0804转换成数字量送给单片机,经单片机处理后在数码管上以十进制形成显示出来。
Abstract:
Key words :

模數轉換ADC0804的應用(含源程序及電路)

[實驗要求]

從ADC0804 的模擬量通道輸入0-5V 之間的模擬量,通過ADC0804 轉換成數字量送給單片機,經單片機處理后在數碼管上以十進制形成顯示出來。

[實驗目的]

學習如果用單片機控制ADC0804芯片進行數模轉換,掌握數碼管動態掃描顯示的原理。

動態掃描:就六位數碼管顯示123456舉例說明如下:先讓第一個數碼管顯示1,其余的全部不亮,1大約亮幾毫秒,然后熄滅,緊接著立即讓第二個數碼管顯示2,其余的全部不亮,2同樣亮幾毫秒,依次這樣亮到第六個數碼管,然后再回來顯示1,如此這樣以很快的速度不斷循環下去,由于人眼的視覺暫留時間大約為20毫秒左右,所以是感覺不出有不亮的數碼管存在的,看見的是六個數碼管同時在顯示,數值是123456,如果我們把這個過程一點點放慢,看見的是從第一個數碼管顯1,然后移到第二個再顯2,。。。也就是說在任一時刻只有一位數碼管是亮的。這就是數碼管動態掃描顯示的原理

ADC0804: ADC0804是8位全MOS中速A/D 轉換器、它是逐次逼近式A/D 轉換器,片內有三態數據輸出鎖存器,可以和單片機直接接口。單通道輸入,轉換時間大約為100us。ADC0804 轉換時序是:當CS=0 許可進行A/D 轉換。WR由低到高時,A/D開始轉換,一次轉換一共需要66-73 個時鐘周期。CS與WR同時有效時啟動A/D轉換,轉換結束產生INTR 信號(低電平有效),可供查詢或者中斷信號。在CS和RD 的控制下可以讀取數據結果。本實驗沒有使用INTR信號。

[硬件電路]

[源代碼]

//擰動AD旁邊的電位器,會在數碼管的前三位顯示0-255之間的數//值。這就是把模擬信號轉換成數字信號,即模數轉換。

#include

#include

#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) //延時程序

{

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);

P0=table[g_c]; //顯示個位

dula=1;

dula=0;

P0=0xfb;

wela=1;

wela=0;

delay(5);

}

 

void main() // 主程序

{

uchar a,A1,A2,A2t,A3;

while(1)

{

wela=1;

P0=0; //選通ADCS

adwr=0; //AD寫入(隨便寫個什么都行,主要是為了啟動AD轉換)

_nop_();

adwr=1;

P0=0xff; //關閉ADCS

delay(10);

wela=0; //關閉有AD片選信號鎖存器的鎖存端以防止在操作數碼管時使AD的片選發生變化

for(a=20;a>0;a--) //需要注意的是ADC0804在寫和讀之間的時間間隔要足夠長否則無法讀出數據

 

{ //這里把顯示部分放這里的原因也是為了增加寫讀之間的時間隔

 

 

 

display(A1,A2,A3);

} //送去顯示各位。

wela=1; //重新打開有AD片選信號鎖存器的鎖存端

P1=0xff; //讀取P1口之前先給其寫全

P0=0; //選通ADCS

adrd=0; //AD讀使能

adval=P1; //AD數據讀取賦給P1口

adrd=1;

P0=0xff; //關閉ADCS

adwr=0;

P1=adval; //同時把AD的值送八個發光二極顯示

A1=adval/100; //分出百,十,和個位

A2t=adval%100;

A2=A2t/10;

A3=A2t%10;

};

}

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产精品一区二区不卡视频| 国产午夜精品在线| 欧美久久综合性欧美| 久久本道综合色狠狠五月| 精品国产一区二区在线| 视频在线一区二区| 国产福利视频一区| 国产精品爽爽爽| 国产欧美日韩综合一区在线观看| 97精品在线视频| 国产精品视频不卡| 国产综合欧美在线看| 国产一区二区在线免费视频v| 日韩av免费网站| 色综合天天综合网国产成人网| 91国自产精品中文字幕亚洲| 国产精品美女久久久免费| 国产欧美日韩综合一区在线观看| 国产欧美综合一区| 国产精品久久久久久久久久免费| 国产日韩欧美在线观看| 国产亚洲综合视频| 国产精品热视频| 国产福利精品视频| 国产高潮呻吟久久久| 亚洲午夜精品久久久久久人妖| 午夜精品一区二区三区在线| 午夜视频久久久| 欧美 日韩 国产 在线观看| 久久久亚洲精品无码| 激情五月六月婷婷| 国产精品久久亚洲7777| 91极品视频在线| 欧美亚洲日本网站| 精品视频一区在线| 国产精品毛片一区视频| 91免费欧美精品| 日韩人妻一区二区三区蜜桃视频| 欧美日韩视频在线一区二区观看视频| 欧美精品自拍视频| 国产亚洲二区|