導航:首頁 > 編程語言 > adc0834程序

adc0834程序

發布時間:2023-02-16 21:06:52

❶ ADC0832在單片機中程序

/*************************************************/
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
sbit CS=P3^5;
sbit Clk=P1^6; //時鍾
sbit DO=P3^7; //ADC0832輸出引腳
sbit DI=P3^6; //ADC0832輸入引腳
sbit key=P3^3; //按鍵
bit keydownflg; //操作位的定義
bit adc_flg;
uchar dat,channel;
uchar key_buffer;
uchar P2_buffer;
uchar Beep_cnt;
uchar disp_cnt;
uchar count4ms;
uchar disp_buff[5]; //數碼管顯示緩存
uchar codeTab1[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E}; //共陽數碼表
uchar code Tab[5]={0x7f,0xbf,0xdf,0xef,0xf7}; //數碼管位選表

uchar A_D(uchar CH) //AD函數
{
uchar i,adval,test; //定義局部變數並初始化
adval=0x00;
test=0x00;
Clk=0; //clk低電平
DI=1; //DI初始高電平在第一個時鍾脈沖的下降沿前保持高電平,表示啟動信號
_nop_();
CS=0; //片選
_nop_();
Clk=1; //clk上升沿,起始位寫入
_nop_();
if(CH==0x00) //選擇通道0
{
Clk=0; //clk低電平
DI=1;
_nop_();
Clk=1; //clk上升沿,通道0的第一位寫入
_nop_();
Clk=0;
DI=1;
_nop_();
Clk=1; //clk上升沿,通道0的第二位寫入
_nop_();
}
else
{
Clk=0;
DI=1;
_nop_();
Clk=1; //clk上升沿,通道1的第一位寫入
_nop_();
Clk=0;
DI=1;
_nop_(); //clk上升沿,通道1的第二位寫入
Clk=1;
_nop_();
}
Clk=0;
DI=1;
for(i=0;i<8;i++) //從高位向低位讀取八位AD值
{
_nop_();
adval<<=1;
Clk=1;
_nop_();
Clk=0;
if(DO)
adval|=0x01;
else
adval|=0x00;
}
for(i=0;i<8;i++)
{

test>>=1; //從低位向高位讀取八位AD值

if(DO)
test|=0x80;
else
test|=0x00;
_nop_();
Clk=1;
_nop_();
Clk=0;
}
if(adval==test) dat=test; //判斷兩個讀取值是否相等相等就把讀取的數賦值給DAT
_nop_();
CS=1;
DO=1;
Clk=1;
return dat;
}
void FillDispBuffer(void) //數碼管顯示緩存函數
{
disp_buff[0]=channel; //顯示通道
disp_buff[1]=12; //顯示"C"
disp_buff[2]=dat/51; //顯示個位
disp_buff[3]=dat%51*10/51; //顯示十分位
disp_buff[4]=((dat%51)*10%51)*10/51; //顯示百分位

}
void dealkey(void) //按鍵處理
{
if(keydownflg) return; //keydownflg控制位為1,不對按鍵進行處理
key_buffer=P2;
if((key_buffer&0x80)!=0x80) channel=0; //選擇通道0
if((key_buffer&0x40)!=0x40) channel=1; //選擇通道1
FillDispBuffer(); //數碼管顯示緩存
Beep_cnt=0;
keydownflg=1; //keydownflg控制位置1
}
void main(void) //主函數
{
P0=0xff; //初始化
P2=0xff;
dat=0x00;
disp_cnt=0;
count4ms=0;
channel=0;
TMOD=0x10;
TH0=(65535-4000)/256;
TL0=(65535-4000)%256;
EA=1;
TR0=1;
ET0=1;
while(1)
{

if(adc_flg) //ADC轉換控制位,防止輸入與輸出產生沖突
{
adc_flg=0;
A_D(channel); //ADC函數
FillDispBuffer(); //數碼管顯示緩存
}
if(!key) //按鍵
dealkey();
}
}
void T0_service(void)interrupt 1 //定時器0中斷子函數
{
TH0=(65535-4000)/256;
TL0=(65535-4000)%256;
P2_buffer=Tab[disp_cnt]; //查表,數碼管的位選擇
if(keydownflg) //蜂鳴器0.4s的短時間鳴叫
{
P2_buffer=P2_buffer&0xfe;
Beep_cnt++;
if(Beep_cnt==100) keydownflg=0;
}
P2=P2_buffer; //數碼管顯示數字元號
if(disp_cnt==2) //第三位數碼管顯示小數點
P0=Tab1[disp_buff[disp_cnt]]&0x7f;
else
P0=Tab1[disp_buff[disp_cnt]];
disp_cnt++; //
if(disp_cnt==5) disp_cnt=0;
count4ms++;
if(count4ms==50) //0.2s ADC轉換一次
{
adc_flg=1;
count4ms=0;
}
}

❷ 求,光敏電阻和adc0832用單片機控制的c語言程序

//******************adc0832****************************// sbit CS=P1^; //使能。 sbit CLK=P1^1;//時鍾 sbit Do=P1^2; // 數據輸出 sbit Di=P1^2;//數據輸入 unsigned char CH=0x02;
//通道的選擇:0x02就是單通道0;0x03就是單通道1; //0x00就是雙通道ch0=「+」; ch0=「-」 //0x01就是雙通道ch0=「-」; ch0=「+」
//*****************************************************// unsigned char ADconv(void) {unsigned char i;
unsigned int data_f=0,data_c=0; Di=1; CS=1; _nop_(); CS=0;
Di=1; //晶元使能之前的初始化。第一個下降沿 CLK=1; _nop_(); _nop_();
/****************************************/ CLK=0; // 確定通道模式、第2個下降沿 _nop_(); _nop_(); CLK=1;
Di=(bit)(0x02&CH); //設定通道初始化 _nop_(); CLK=0; _nop_(); _nop_(); CLK=1;
Di=(bit)(0x01&CH); //設定通道初始化 .第3個下降沿 _nop_();

_nop_();
CLK=0; //AD轉化的初始化完成。 Di=1; CLK=1; _nop_(); _nop_(); CLK=0; _nop_(); CLK=1;
for(i=8;i>0;i--)//得到一個正常排序的8位數據 {
data_f|=Do; data_f<<=1; CLK=1; _nop_(); _nop_(); CLK=0; _nop_(); }
for(i=8;i>0;i--)//得到一個反序排列的8位數據 {
data_c<<=1; data_c|=Do; _nop_(); CLK=1; _nop_(); _nop_(); CLK=0; _nop_(); } CLK=0; _nop_();

_nop_(); CLK=1; _nop_(); _nop_(); CLK=0; _nop_(); _nop_(); CLK=1; _nop_(); CS=1; _nop_(); _nop_(); return data_f; }

閱讀全文

與adc0834程序相關的資料

熱點內容
630升級工程武器 瀏覽:936
用換機助手接收的軟體文件在哪找 瀏覽:282
閱達app一教一輔五年級有哪些 瀏覽:7
win10系統用f2調節音量 瀏覽:19
壓縮文件密碼器 瀏覽:840
線下活動數據分析有哪些 瀏覽:314
助聽器插片式編程線如何連接 瀏覽:293
怎麼刪除系統休眠文件 瀏覽:914
搜索文件內容中包含的文字並替換 瀏覽:542
微信相冊程序圖標 瀏覽:714
win8怎麼顯示文件格式 瀏覽:547
文件伺服器中毒 瀏覽:721
如何修改網站訪問次數 瀏覽:518
mdfldf是什麼文件 瀏覽:569
文件在桌面怎麼刪除干凈 瀏覽:439
馬蘭士67cd機版本 瀏覽:542
javaweb爬蟲程序 瀏覽:537
word中千位分隔符 瀏覽:392
迷你編程七天任務的地圖怎麼過 瀏覽:844
word2003格式不對 瀏覽:86

友情鏈接