51單片機使用ADC0832進行數模轉換在Project中進行仿真模擬
VeryCapture_20220411212800.jpg (423.99 KB, 下載次數: 60)
下載附件
2022-4-11 21:35 上傳
單片機源程序如下:
- #include <REGX52.H>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- //ADC0832綁定引腳
- sbit ADCS=P1^3;
- sbit ADDI=P1^5;
- sbit ADCLK=P1^4;
- /**
- * @brief ADC083初始化,在程序的開頭調用
- * @param 無
- * @retval 無
- */
- void ADC0832_Init()
- {
- ADCS=1;
- }
- /**
- * @brief ADC083獲取無符號8位數據
- * @param 無
- * @retval 返回 usigned char 型數據
- */
- uchar getDaTa()
- {
- uchar i=0;
- uchar j;
- uint dat=0;
- uchar ndat=0;
- ADDI=1;
- _nop_();
- _nop_();
- ADCS=0;//拉低CS端
- _nop_();
- _nop_();
- ADCLK=1;//拉高CLK端
- _nop_();
- _nop_();
- ADCLK=0;//拉低CLK端,形成下降沿1
- _nop_();
- _nop_();
- ADCLK=1;//拉高CLK端
- ADDI=1; //選擇通道0
- _nop_();
- _nop_();
- ADCLK=0;//拉低CLK端,形成下降沿2
- _nop_();
- _nop_();
- ADCLK=1;//拉高CLK端
- ADDI=0; //選擇通道1
- _nop_();
- _nop_();
- ADCLK=0;//拉低CLK端,形成下降沿3
- ADDI=1;//控制命令結束
- _nop_();
- _nop_();
- dat=0;
- for(i=0;i<8;i++)
- {
- dat|=ADDI;//收數據
- ADCLK=1;
- _nop_();
- _nop_();
- ADCLK=0;//形成一次時鐘脈沖
- _nop_();
- _nop_();
- dat<<=1;
- if(i==7)dat|=ADDI;
- }
- for(i=0;i<8;i++)
- {
- j=0;
- j=j|ADDI;//收數據
- ADCLK=1;
- _nop_();
- _nop_();
- ADCLK=0;//形成一次時鐘脈沖
- _nop_();
- _nop_();
- j=j<<7;
- ndat=ndat|j;
- if(i<7)ndat>>=1;
- }
- ADCS=1;//拉低CS端
- ADCLK=0;//拉低CLK端
- ADDI=1;//拉高數據端,回到初始狀態
- dat<<=8;
- dat|=ndat;
- return(dat); //return ad k
- }
復制代碼
Keil代碼下載:
AD數模轉換.zip
(110.49 KB, 下載次數: 43)
2022-4-11 21:35 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|