51单片机 C语言ADC程序怎么写
答案:3 悬赏:30
解决时间 2021-01-30 11:46
- 提问者网友:无心恋土
- 2021-01-29 23:17
51单片机 C语言ADC程序怎么写
最佳答案
- 二级知识专家网友:零负荷的放任
- 2021-01-30 00:12
什么单片机?
全部回答
- 1楼网友:安稳不如野
- 2021-01-30 01:27
你得具体看你用什么型号ad呀
简易你可以去www.21ic.com去搜索该型号ad的pdf资料,
然后看ad的时序图,你就照着时序操作就行了。
祝你成功,谢谢
- 2楼网友:年轻没有失败
- 2021-01-30 00:28
typedef unsigned char BYTE;
typedef unsigned int WORD;
#include "reg51.h"
#include "intrins.h"
sfr ADC_CONTR = 0xBC;
sfr ADC_RES = 0xBD;
sfr ADC_LOW2 = 0xBE;
sfr P1ASF = 0x9D;
sfr P2M0 = 0x96;
sfr P2M1 = 0x95;
#define ADC_POWER 0x80
#define ADC_FLAG 0x10
#define ADC_START 0x08
#define ADC_SPEEDLL 0x00
#define ADC_SPEEDL 0x20
#define ADC_SPEEDH 0x40
#define ADC_SPEEDHH 0x60
//延时
void Delay(WORD n)
{
WORD x;
while (n--)
{
x = 5000;
while (x--);
}
}
//初始AD寄存器
void InitADC()
{
P1ASF = 0xff;
ADC_RES = 0;
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
Delay(2);
}
//AD转换
BYTE GetADCResult(BYTE ch)
{
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
_nop_();
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & ADC_FLAG));
ADC_CONTR &= ~ADC_FLAG;
return ADC_RES;
}
void main()
{ BYTE temp;
P2M1=0; P2M0=0x03; //P2.0和P2.1强推挽
InitADC();
while (1)
{
temp=GetADCResult(0);//转换P1.0
if(temp>1)
P2|=0x03; //P1.0有电压 P2.0和P2.1输出高
else
P2&=0xFC; //P1.0无电压 P2.0和P2.1输出低
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯