如何利用单片机产生500HZ的信号
答案:3 mip版
解决时间 2021-01-16 12:12
- 提问者网友:夕阳再美ソ也会落幕
- 2021-01-15 23:34
如何利用单片机产生500HZ的信号
最佳答案
- 二级知识专家网友:陪我去流浪
- 2021-01-16 00:49
使用单片机的定时器可以产生500Hz的信号
以51单片机为例,程序如下:
#include<reg51.h>
sbit Wave=P1^6;
unsigned char k=0;
void main()
{
Wave=0;
EA=1;//开总中断
TMOD=0x01;//设置定时器0为工作方式1
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
}
void exter0() interrupt 1 //中断函数
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;//定时器重新赋初值
k++;
if(k==10)
{
Wave=~Wave;//波形翻转
k=0;
}
}
假设晶振为12MHz 所以经过12分频之后的时钟周期为1MHz 那么想要得到500Hz 的波形 就是说半个周期为1/500s 而定时器加1的时间是1/5000000s 所以要这个时间乘以100000才能得到1/500s 这也就是TH0=(65536-10000)/256;TL0=(65536-10000)%256;为什么这样赋值的原因 其他部分的代码我想你应该可以看懂 我就不解释了 如果再有问题咱们再交流!
以51单片机为例,程序如下:
#include<reg51.h>
sbit Wave=P1^6;
unsigned char k=0;
void main()
{
Wave=0;
EA=1;//开总中断
TMOD=0x01;//设置定时器0为工作方式1
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
}
void exter0() interrupt 1 //中断函数
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;//定时器重新赋初值
k++;
if(k==10)
{
Wave=~Wave;//波形翻转
k=0;
}
}
假设晶振为12MHz 所以经过12分频之后的时钟周期为1MHz 那么想要得到500Hz 的波形 就是说半个周期为1/500s 而定时器加1的时间是1/5000000s 所以要这个时间乘以100000才能得到1/500s 这也就是TH0=(65536-10000)/256;TL0=(65536-10000)%256;为什么这样赋值的原因 其他部分的代码我想你应该可以看懂 我就不解释了 如果再有问题咱们再交流!
全部回答
- 1楼网友:魔法小仙子
- 2021-01-16 03:12
每隔一毫秒翻转信号电平即可-方波信号而言
- 2楼网友:縱马獨歸
- 2021-01-16 01:42
利用定时器产生,不过只能是方波信号。
具体的方法根据你使用的单片机不同有细微的区别。
如果单片机带有PWM功能,可以直接使用PWM模式输出,这样免去了中断处理的麻烦。
我要举报
如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上问答信息
推荐资讯