TYX-ADC0804是中山添翼興電子推出的一款ADC芯片,與(national semiconductor)的ADC0804芯片功能相似,多數情況下可以平替,無需更改程序,一次AD轉換時間不超過1mS。TYX-ADC0804提供SOP16封裝,可通過PCB轉換成與ADC0804引腳對應的DIP20封裝。TYX-ADC0804的功能引腳圖如下:
參考應用電路如下圖
轉為ADC0804引腳對應的DIP20封裝的原理圖如下:
參考程序如下(主控STC89C52RC,晶振11.0592M。如用高速單片機,可在操作時序加延時)
#include <reg51.h>
#include <intrins.h>
#define LED_DATA P1
#define AD_DATA P0
sbit DIG1= P3^4;//數碼管第1位
sbit DIG2= P3^5;//數碼管第2位
sbit DIG3= P3^6;//數碼管第3位
sbit DIG4= P3^7;//數碼管第4位
sbit ADC_CS= P2^0;
sbit ADC_RD= P2^1;
sbit ADC_WR= P2^2;
sbit INTR= P2^3;
unsigned charLED_data[4]={0xff,0xff,0xff,0xff};
unsigned char consttable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//0 1 2 3 4 5 6 7 8 9
void tm0_isr()interrupt 1
{
static unsigned char i=0;
TH0 = (65536 - 2000) / 256;
TL0 = (65536 - 2000) % 256;
switch(i)
{
case 0x01 :
{
DIG4 = 1;
LED_DATA = LED_data[0];
DIG1 = 0;
break;
}
case 0x02 :
{
DIG1 = 1;
LED_DATA = LED_data[1];
DIG2 = 0;
break;
}
case 0x03 :
{
DIG2 = 1;
LED_DATA = LED_data[2];
DIG3 = 0;
break;
}
case 0x04 :
{
DIG3 = 1;
LED_DATA = LED_data[3];
DIG4 = 0;
break;
}
}
i++;
if(i>4)i=1;
}
void main()
{
unsigned char temp;
//定時器0初始化
TMOD = TMOD & 0xf0;
TMOD = TMOD | 0x01;
TH0 = (65536 - 2000) / 256;
TL0 = (65536 - 2000) % 256;
TR0 = 1;
ET0 = 1;
EA=1;
while(1)
{
ADC_CS = 0;
_nop_();
ADC_WR = 0; //啟動AD轉換
_nop_();
ADC_WR = 1;
AD_DATA=0xff; //讀取P1口之前先給其寫全1
while(INTR);//等待轉換完成
ADC_RD = 0; //AD讀使能
temp = AD_DATA; //AD數據讀取賦給P1口
ADC_RD = 1;
ADC_CS = 1; //關閉ADCS
ADC_WR = 0;
LED_data[0] = table[temp/100];
LED_data[1] = table[temp%100/10];
LED_data[2] = table[temp%10];
LED_data[3] = 0xff;
}
}
|