用单片机可以产生频率为64KHZ的方波吗?

[复制链接]
 楼主| marymary 发表于 2009-9-6 21:49 | 显示全部楼层 |阅读模式
用单片机可以产生频率为64KHZ的方波吗?
单片机频率为11.0592M
谢谢!
lyjian 发表于 2009-9-6 23:14 | 显示全部楼层
什么单片机
wh6ic 发表于 2009-9-7 10:13 | 显示全部楼层
可以,有误差。
chunyang 发表于 2009-9-7 11:38 | 显示全部楼层
这个要根据MCU的定时器资源特性和指令周期综合计算,选择合适频率的晶体并注意编程就一定能较为精确(精确度主要由晶体的频率、温漂、外围电路等综合决定)的实现。
awey 发表于 2009-9-7 11:49 | 显示全部楼层
11.0529MHz/64KHz=172.8
定时设定为173,输出频率为:63.889KHz
uuww99 发表于 2009-9-7 21:29 | 显示全部楼层
同意5楼
 楼主| marymary 发表于 2009-9-7 21:39 | 显示全部楼层
谢谢
 楼主| marymary 发表于 2009-9-8 10:00 | 显示全部楼层
#include <AT89X52.H>
#define  uchar unsigned char
  uchar counter;

sbit signal = P3^6;

void main()
  {
  TR0=0;
  TMOD=0x11;
  TH0=0x00;
  TL0=0xAD;                          
  signal=0;
  EA=1;
  ET0=1;
  ET1=1;
  TR0=1;
  while(1)
  {}
  }

  void isr_T0() interrupt 1
  {
  TH0=0x00;
  TL0=0xAD;                          
          signal=1;
          TR0=0;
          TR1=1;
          
  }

  void isr_T1() interrupt 3
  {
  signal=0;
  TR1=0;
  TR0=1;
  TH1=0x00;                          
  TL1=0xAD;
  }
 楼主| marymary 发表于 2009-9-8 10:01 | 显示全部楼层
代码如上,按照定时器设置为173,输出频率只有7HZ左右,这个是怎么回事?谢谢
awey 发表于 2009-9-8 10:21 | 显示全部楼层
51系列的,时钟频率是晶振频率的1/12。
计算方法类似
 楼主| marymary 发表于 2009-9-8 12:33 | 显示全部楼层
产生的方波幅值可以变换吗?除了5V以外的,谢谢
heimai20 发表于 2009-9-8 12:56 | 显示全部楼层
能,结果因单片机的不同而略有差别
wh6ic 发表于 2009-9-8 22:49 | 显示全部楼层
本帖最后由 wh6ic 于 2009-9-8 22:50 编辑

51定时器为加法计数器,另外标准51时钟需要12分频,也就是说定时常数应该是 -(172.8/12)= -14.4,应该TH0=-1=0xFF,TL0=-14=0xF2,其他种类51常数另算.
另你的程序中为什么要搞两个中断?
xwj 发表于 2009-9-8 23:09 | 显示全部楼层
唉....
不是什么都应该用单片机实现的,用数字电路硬件分频多简单啊~

用单片机可以是可以,但只能用死循环数周期的方法,什么都干不了。
因为需要每个7.2个周期翻转一次,根本就没多少时间进出中断、执行指令。
而且,LZ的晶振频率也应该换一个
allround 发表于 2009-9-9 01:23 | 显示全部楼层
倒确的只是为了个64KHz的,写个死延时理论上精准
xusnwise 发表于 2009-9-9 08:36 | 显示全部楼层
建议用AVR单片机

比如用MEGA16的 定时器比较输出功能很容易实现.

8M工作频率.

设置定时器 2:
     OCR2 = 61;  
     TCCR2 = 0x19;  
偏差0.5KHZ
gzs8317 发表于 2009-9-9 09:23 | 显示全部楼层
定时器没必要用两个吧,用一个定时器,时间到了电平就翻转~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

135

帖子

0

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