51单片机11.0951晶振怎么产生300HZ方波

用定时器0可以么,求解怎么计算
还有50HZ的

第1个回答  2014-04-02
300Hz方波周期是3333us,晶振为11.0592MHz的话,机器周期=3333*11.0592/12=3072;用定时器来产生的话,那么初值为65536-3072/2=65536-1536.
同样50Hz的话,周期为20000us,机器周期数=20000*11.0592/12=18432,定时器初值=65536-9216追问

18432计算出来的是什么,9216又是哪个

第2个回答  2014-04-02
这个比较简单,我给你个计算公式,希望我的回答对你有帮助!

300HZ计数公式

1 / 300HZ = 0.00333us
12M晶振一个周期1us
3333 / 2 = 1666.5 四舍五入后 等于1667
定时器0模式1 = 65536 - 1667 = 63869 十六进制 = F97D
TH0 = 0XF9;
TL0 = 0X7D;
定时器中断一次取反一下数据就得到一个周期300HZ频率

50HZ计算公式

1 / 50HZ = 0.02ms

20000 / 2 = 10000;
65536 - 10000 = 55536; 十六进制 = D8F0;
TH0 = 0XD8;
TL0 = 0XF0;本回答被提问者采纳
第3个回答  2014-04-02
用定时器中断可以的,你先在定时器中断写好计数的数值,然后把IO口反转,就可以,频率就是你的晶振频率除以你写的数值
第4个回答  2014-04-02
主要是这部分:例如50Hz 那么周期就是1/50s=20ms 半周期就是10ms
也就是说 10ms电平就得翻转一次 也就是定时器就得中断一次
市面晶振应该是11.0592吧 不是91

我们利用12M算 这样是整数
那么这个时间设置就是
TH0=(65536-20000)/256;

TL0=(65536-20000)/256;
至于其他书上 都有 这里就不 详细告知了。。
相似回答