?? adc0831實驗.c
字號:
/*****************************************************************************
程 序 名:51AVR實驗板配套程序 - AD轉換器實驗
開發環境:Keil
編 寫 者:www.01mcu.net
功能簡述:控制并讀取ADC0831測量到的模擬數據,顯示到數碼管上
硬件說明:P0.2-0.5為數碼管顯示的位選,拉低為對應位提供電源,P1為數碼管數據輸出,拉低后點亮對應顯示段
本實驗要將實驗座的21-28腳(P2.0-2.7)跳線接到內側DIP0-DIP8上;
★注意:ADC0831芯片的 VCC/REF要用杜邦線連接到VCC!VIN+連接到AIN0上;
更詳細見說明書中相關說明和圖片★
將選購件ADC0831 插裝到多用8腳IC座 U2 上,ADC0831各腳定義如下:
|-------\_/-------|
| 1 cs VCC 8 |
| 2 VIN+ CLK 7 |
| 3 VIN- DO 6 |
| 4 GND REF 5 |
-----------------
晶體為12MHz
其它說明:關于ADC0831詳情,請參閱實驗目錄下的器件手冊
完成日期:2008.06.23
******************************************************************************/
#include <reg51.h>
//定義位操作--------------------------------
sbit ls1=P0^2; //個位公共極
sbit ls2=P0^3; //十位公共極
sbit ls3=P0^4; //百位公共極
#define Out P1 //數據輸出端
//多用8腳IC座腳位分配-----------------------
// 單片機IO 轉換器IO 連接情況
sbit CS=P2^0; //ADC CS, 對應DIP1,片選
// INN //ADC_IN+, 對應DIP2,◆使用時用杜邦線連接到AIN0模擬信號輸入端
sbit INP=P2^2; //ADC_IN- ,對應DIP3,使用時拉低=接地
sbit GND=P2^3; //ADC_GND ,對應DIP4,使用時拉低=接地
// REF //ADC_REF ,對應DIP5,◆使用時用杜邦線連接到VCC,或自定義的參考電壓
sbit DAT=P2^5; //ADC_DO , 對應DIP6,數據輸出
sbit CLK=P2^6; //ADC_CLK ,對應DIP7,時鐘
// VCC //ADC_VCC ,對應DIP8,◆使用時用杜邦線連接到VCC
unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共陽
unsigned char DS1,DS2,DS3; //顯存
//延時----------------------------
Delay(unsigned int t)
{
while(t--);
}
//顯示----------------------------
void Display(unsigned int mun)
{
unsigned char i=0,j;
DS3=mun/100;
i=mun%100;
DS2=i/10;
DS1=i%10;
for(j=0;j<50;j++)
{
Out=tab[DS1];
ls1=0;
Delay(100);
ls1=1;
Out=tab[DS2];
ls2=0;
Delay(100);
ls2=1;
Out=tab[DS3];
ls3=0;
Delay(100);
ls3=1;
}
}
//---------------------------------------------
void Del(void)
{unsigned char i;
for(i=0;i<10;i++); //與時鐘有關,本程序晶體12MHz
}
//ADC采集-----------------------------
unsigned char ReadADC()
{
unsigned char i,j;
CLK=0;
Del();
CS=0;
Del(); //拉低片選進入轉換
CLK=1;Del();
CLK=0;Del();
CLK=1;Del();
CLK=0;Del();
for(i=0;i<8;i++) //循環讀8位轉換后的數據
{
DAT=1;Del();
j<<=1;
j|=(bit)DAT; //讀1位
Del();
CLK=1;Del();
CLK=0;Del();
}
CS=1;
return(j);
}
//主程序--------------------------
main()
{
unsigned int p,d;
//ADC0831管腳,
INP=0; //負端接地,形成單端輸入
GND=0; //接地
while(1)
{
Display(d);
p++;
if(p>3) //顯示3次讀一次AD數據
{p=0;
d=ReadADC();
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -