有单片机高手吗?我需要用STC12C4052AD进行双通道A/D转换,请给个程序,最好是程序模块,谢谢!

 我来答
电子疯人
2012-04-21 · TA获得超过262个赞
知道小有建树答主
回答量:416
采纳率:50%
帮助的人:118万
展开全部
#include<STC12C5616AD.H>
#include<intrins.h>

#define int16 unsigned int
#define int8 unsigned char
#define AD_SPEED 0x60 // 1010,0000 1 1 70 个时钟周期转换一次,
void delay_ad(int8 delay_time) // 延时函数
{
int16 n;
while(delay_time--)
{
n = 6000;
while(--n);
}
}
//////////////////////////////////////////////////////
/////////////////////////////////////////////////////
/////////////////////////////////////////////////////
int8 get_AD_result(int8 channel)
{
int8 AD_finished=0; //存储 A/D 转换标志
//channel=channel; //0000,0111 清0高5位
P1|=channel;
ADC_CONTR|=0x80;
P1M0=0x0e;
P1M1=0x00;

ADC_CONTR&=0xe0;

ADC_CONTR|=channel;
delay_ad(1);
ADC_CONTR|=0x08;

AD_finished = 0; //检测ADC转换
while (AD_finished ==0 ) //等待A/D转换结束
{
AD_finished = (ADC_CONTR & 0x10); //0001,0000 测试A/D转换结束否
}
ADC_CONTR &= 0xE7; //1111,0111 清 ADC_FLAG 位, 关闭A/D转换,
return (ADC_DATA); //返回 A/D 高 8 位转换结果 ,最大255
}
这个是八位的,使用0-7八个通道 ,设计的产品中用过3路,没问题,你可以试试,当然这个是查询法,你可以用中断法做,具体的请看资料。
dfgeoff
2012-04-21 · TA获得超过416个赞
知道小有建树答主
回答量:470
采纳率:50%
帮助的人:443万
展开全部
咦,这个STC就有呀,你没问他们要吗?还有,这里一般很那要到程序,至少不会要到私有程序的。那些花了时间精力的相当于金钱呀。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式