永发信息网

单片机做脉冲信号发生器问题

答案:2  悬赏:10  手机版
解决时间 2022-01-01 12:43
  • 提问者网友:两耳就是菩提
  • 2021-12-31 21:39
救助:用单片机做脉冲信号发生器,能做输出10/3Hz和80/9Hz这样的频率吗?是带无限不循环小数的频率吗?
最佳答案
  • 五星知识达人网友:梦中风几里
  • 2021-12-31 22:08
毕竟单片机的晶振频率很高,控制好话,可以获得的时间精度很高
频率 10/3Hz不在话下,因其周期 3/10=0.3秒=300000us,假设时钟频率是12M一个计时脉冲是1us,0.3秒是定时器计时脉冲的整数倍 可以定时3000US 累计100 次
对于80/9Hz 其周期 9/80=0.1125秒=112500 US,也是定时器计时脉冲的整数倍 ,就比较好办 可以定时 1125 US,累计100次
反过来,你想得到周期为1/3秒的信号只能取近似值了
可以取 0.333333,可以一次定时10101 us,33次完成,但想要占空比50%,又不够整分了
全部回答
  • 1楼网友:风格不统一
  • 2021-12-31 22:56
是用89s51单片机 程序如下: 刚刚写的,测试了一下大体可以 精确度不是很高 波形输出引脚是p2.1 听过修改n值来改变方波周期 #include float n=1; sbit p=p2^1; char flag; char cnt; void time() interrupt 3 { flag=0; } main() { char x; x=15; x=(char)(x*n); p=0; cnt=0; loop:ea=0; ea=1; et1=1; tmod=0x12; th1=0x00; tl1=0x00; flag=1; tr1=1; while(flag); cnt++; if(cnt==x) {cnt=0;p=~p;} goto loop; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯