[51单片机] 如何用51单片机输出500KHz的时钟频率

[复制链接]
11182|30
 楼主| kenny2012 发表于 2013-12-2 17:06 | 显示全部楼层 |阅读模式
想用ADC0809处理红外传感器的返回值,但是它要求500KHz的工作频率,求教如何用软件编程产生?看到有人说51的12MHz的晶振不能产生,捉急了,硬件分频不会啊,也木有相关硬件...  
coody 发表于 2013-12-2 17:33 | 显示全部楼层
如果是STC的MCU,则可以用定时器产生.这个频率有点偏差不要紧的。我还是建议使用实际点的ADC,8腿的,或者使用MCU自带的ADC。
youimiss 发表于 2013-12-2 18:39 | 显示全部楼层
要那么高频率干嘛,降一点嘛
yangfan19641964 发表于 2013-12-3 09:39 | 显示全部楼层
用ATMEL或STC的单片机,它们的T2定时器可设置成在P1.0管脚上可编程时钟输出
yangfan19641964 发表于 2013-12-3 09:46 | 显示全部楼层
 TL2=RCAP2L=(uint)((float)65536-(float)Fosc*1000000/((float)4*freq))%256;
 TH2=RCAP2H=(uint)((float)65536-(float)Fosc*1000000/((float)4*freq))/256;
T2CON=0x00;   //C/T2=0,  CP/RL2=0
T2MOD=0x02;   // T2OE=1,在P1.0输出方波       
TR2=1;        //开始输出方波
EXEN2=1;      //允许T2EX触发T2中断
ET2=1;       EA=1;
 楼主| kenny2012 发表于 2013-12-3 10:17 | 显示全部楼层
coody 发表于 2013-12-2 17:33
如果是STC的MCU,则可以用定时器产生.这个频率有点偏差不要紧的。我还是建议使用实际点的ADC,8腿的,或者使 ...

STC89C52内部不带AD模块的,手上还有一块PCF8591,不会用~~~早知道0809这么麻烦我也不买这个咯~
 楼主| kenny2012 发表于 2013-12-3 10:18 | 显示全部楼层
youimiss 发表于 2013-12-2 18:39
要那么高频率干嘛,降一点嘛

最低50KHz,也是略显吃力~~~
 楼主| kenny2012 发表于 2013-12-3 10:20 | 显示全部楼层
yangfan19641964 发表于 2013-12-3 09:46
 TL2=RCAP2L=(uint)((float)65536-(float)Fosc*1000000/((float)4*freq))%256;
 TH2=RCAP2H=(uint)((floa ...

这样的话会不会占用过多的系统资源,我怕定时时间太短的话,一直在执行定时--中断,都不能执行其它的程序
youimiss 发表于 2013-12-3 12:43 | 显示全部楼层
kenny2012 发表于 2013-12-3 10:18
最低50KHz,也是略显吃力~~~

用555吧
yangfan19641964 发表于 2013-12-3 13:10 | 显示全部楼层
你可以不开中断。

TL2=RCAP2L=(uint)((float)65536-(float)Fosc*1000000/((float)4*freq))%256;
 TH2=RCAP2H=(uint)((float)65536-(float)Fosc*1000000/((float)4*freq))/256;
T2CON=0x00;   //C/T2=0,  CP/RL2=0
T2MOD=0x02;   // T2OE=1,在P1.0输出方波        
TR2=1;        //开始输出方波
yangfan19641964 发表于 2013-12-3 13:12 | 显示全部楼层
T2触发中断——在P1.1上的一个下降沿引起中断。与P1.0上的方波输出时互相独立的。
coody 发表于 2013-12-3 13:36 | 显示全部楼层
STC89C52RC是跟通用的AT89C52兼容的,定时器T2可以16位自动重装输出方波而不用中断,是硬件输出的,不占用CPU,输出1MHZ都木问题。

你可以使用STC12C5A60S2,引脚兼容,带8路10位ADC。

评分

参与人数 1威望 +1 收起 理由
kenny2012 + 1 很给力!

查看全部评分

mcuatmel 发表于 2013-12-3 15:46 | 显示全部楼层
楼主,你搞错了吧,ADC0809用不了那么高的频率的,用1K就不错了。你仔细看下资料。一般用ALE输出的时钟就可以了。
欧阳旭李 发表于 2013-12-3 16:10 | 显示全部楼层
好高的频率啊。。。。
taamhb 发表于 2013-12-3 16:10 | 显示全部楼层
逛一逛,学习学习!
 楼主| kenny2012 发表于 2013-12-3 16:18 | 显示全部楼层
mcuatmel 发表于 2013-12-3 15:46
楼主,你搞错了吧,ADC0809用不了那么高的频率的,用1K就不错了。你仔细看下资料。一般用ALE输出的时钟就可 ...

真心没搞错,是500KHz的~~~一块0809比51单片机贵好多~~~
 楼主| kenny2012 发表于 2013-12-3 16:19 | 显示全部楼层
coody 发表于 2013-12-3 13:36
STC89C52RC是跟通用的AT89C52兼容的,定时器T2可以16位自动重装输出方波而不用中断,是硬件输出的,不占用C ...

嗯,好像知道STC的有个T2,今晚去查资料:loveliness:
tergy2012 发表于 2013-12-3 16:42 | 显示全部楼层
单片机啊不是很懂,学习
dragon_hn 发表于 2013-12-3 16:57 | 显示全部楼层
放弃ADC0809吧,太老古董了.
 楼主| kenny2012 发表于 2013-12-3 17:05 | 显示全部楼层
dragon_hn 发表于 2013-12-3 16:57
放弃ADC0809吧,太老古董了.

之前百度了一下,说0809已经是淘汰产品了,不过还是挺贵的0.0那现在一般都用什么AD芯片,或者说都倾向于把AD模块集成到单片机中~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

17

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部