|
實(shí)物就這么接的因?yàn)榉抡胬餂]有stc90c58ad 這種內(nèi)部轉(zhuǎn)換的 實(shí)物要怎么驗(yàn)證呢 放大器出來ad轉(zhuǎn)換口我直接了一個(gè)還是沒反應(yīng)。求大神指導(dǎo)啊
#include <reg52.H>
//定義與ADC有關(guān)的特殊功能寄存器
sfr ADC_CONTR =0xC5;
sfr ADC_DATA =0xC6;
sfr ADC_LOW2 =0xBE;
sfr P1M0 =0x91;
sfr P1M1 =0x92;
sbit P24 = P0^0; //個(gè)位
sbit P25 = P0^1; //十位
sbit P26 = P0^2; //百位
sbit P27 = P0^3; //千位
sbit P07 = P2^7; //小數(shù)點(diǎn)
int DATA_LED[11] =
{
0X3F,/*0*/
0X06,/*1*/
0X5B,/*2*/
0X4F,/*3*/
0X66,/*4*/
0X6D,/*5*/
0X7D,/*6*/
0X07,/*7*/
0X7F,/*8*/
0X6F,/*9*/
0xFF
};
void delay(int timer) //延時(shí)函數(shù)
{
while(timer--);
}
void led(int n) //數(shù)碼管顯示及數(shù)據(jù)處理程序
{
// P2 = 0x39; //C
P2 = DATA_LED[n % 10]; //個(gè)位
P07=0;
P27 = 1;
delay(500);
P27 = 0;
P2 = 0xFF;
P2 = DATA_LED[n / 10 % 10]; //十位
P07=0;
P26 = 1;
delay(500);
P26 = 0;
P2 = 0xFF;
P2 = DATA_LED[n / 100 % 10]; //百位
P07=1;
P25 = 1;
delay(500);
P25 = 0;
P2 = 0xff;
P2 = DATA_LED[n / 1000 % 10]; //千位
P07=0;
P24 = 1;
delay(500);
P24 = 0;
}
int Ad_Change(char channel) //AD轉(zhuǎn)換
{
int AD_Result_Temp = 0 ;
P1 = 0xff; //將P1口置高,為A/D轉(zhuǎn)換作準(zhǔn)備
ADC_CONTR = ADC_CONTR|0x80; //1000,0000打開A/D轉(zhuǎn)換電源
P1M0 = 0x03; //0000,0011用于A/D轉(zhuǎn)換的P1.x口,先設(shè)為開漏
P1M1 = 0x03; //0000,0011P1.0--P1.1先設(shè)為開漏。斷開內(nèi)部上拉電阻
delay(20); //20
ADC_CONTR = ADC_CONTR&0xE0; //1110,0000 清ADC_FLAG,ADC_START位和低3位
ADC_CONTR = ADC_CONTR|(channel); //設(shè)置當(dāng)前通道號(hào)
delay(1); //延時(shí)使輸入電壓達(dá)到穩(wěn)定
ADC_DATA = 0; //清A/D轉(zhuǎn)換結(jié)果寄存器
ADC_LOW2 = 0;
ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,啟動(dòng)轉(zhuǎn)換
do { ; }
while((ADC_CONTR & 0x10)==0); //0001,0000等待A/D轉(zhuǎn)換結(jié)束
ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D轉(zhuǎn)換
AD_Result_Temp = 0 ;
AD_Result_Temp = ((AD_Result_Temp|ADC_DATA)<<2)|(ADC_LOW2&0x03);
//保存返回AD轉(zhuǎn)換的 結(jié)果
delay(1); //
return AD_Result_Temp;
}
main()
{
int ADC_result;
while(1)
{
ADC_result = Ad_Change(0); //通道P1.0
ADC_result = ADC_result*4.6 ; //顯示數(shù)值。AD轉(zhuǎn)換系數(shù):原公式是ADC_result/(2^10)*5000mV
led(ADC_result);led(ADC_result);led(ADC_result);
led(ADC_result);led(ADC_result);led(ADC_result);
}
} |
|