|
下面是程序,程序編譯沒問題但是仿真就是讀取不了數(shù)據(jù),兩個數(shù)據(jù)都是0
*********************************************************/// ADC0832的時鐘脈沖/*********************************************************/void WavePlus(){ _nop_(); ADC_CLK = 1; _nop_(); ADC_CLK = 0;}/*********************************************************/// 獲取指定通道的A/D轉(zhuǎn)換結(jié)果/*********************************************************/uchar Get_ADC0832(){ uchar i; uchar dat1=0; uchar dat2=0; ADC_CLK = 0; // 電平初始化 ADC_DAT = 1; _nop_(); ADC_CS = 0; WavePlus(); // 起始信號 ADC_DAT = 1; WavePlus(); // 通道選擇的第一位 ADC_DAT = 1; for(i=0;i<8;i++) // 第一次讀取 { dat1<<=1; WavePlus(); if(ADC_DAT) dat1=dat1|0x01; else dat1=dat1|0x00; } for(i=0;i<8;i++) // 第二次讀取 { dat2>>= 1; if(ADC_DAT) dat2=dat2|0x80; else dat2=dat2|0x00; WavePlus(); } _nop_(); // 結(jié)束此次傳輸 ADC_DAT = 1; ADC_CLK = 1; ADC_CS = 1; if(dat1==dat2) // 返回采集結(jié)果 return dat1; else return 0;} uchar Get_ADC08322(){ uchar i; uchar dat1=0; uchar dat2=0; ADC_CLK = 0; // 電平初始化 ADC_DAT = 1; _nop_(); ADC_CS = 0; WavePlus(); // 起始信號 ADC_DAT = 1; WavePlus(); // 通道選擇的第一位 ADC_DAT = 1; for(i=0;i<8;i++) // 第一次讀取 { dat1<<=1; WavePlus(); if(ADC_DAT) dat1=dat1|0x01; else dat1=dat1|0x00; } for(i=0;i<8;i++) // 第二次讀取 { dat2>>= 1; if(ADC_DAT) dat2=dat2|0x80; else dat2=dat2|0x00; WavePlus(); } _nop_(); // 結(jié)束此次傳輸 ADC_DAT = 1; ADC_CLK = 1; ADC_CS = 1; if(dat1==dat2) // 返回采集結(jié)果 return dat1; else return 0;}
light=Get_ADC08322(); // 讀取光照強度
sd=Get_ADC0832();
sd=sd/2.5;
light=light/2.5; // 縮小光照檢測結(jié)果(在0-99)
if(light>99) // 如果大于99
light=99; // 則依然保持99
LcdGotoXY(1,14); // 光標定位
LcdPrintNum(light); // 顯示光照強度
LcdGotoXY(1,9); // 光標定位
LcdPrintNum(sd); // 顯示濕度
|
|