找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机如何发出两路方波信号?

查看数: 2076 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-10-19 19:12

正文摘要:

芯片:STC89C52 晶振:11.0592M 程序: #include<reg51.h> #include<math.h> typedef unsigned int u16; typedef unsigned char u8; u16 i; sbit Waveout1=P2^0; /*P2.0口输出方波*/ sbit Waveout2= ...

回复

ID:1048438 发表于 2022-10-21 19:09
pwm的方法来编程,然后可以考虑用外围的芯片
ID:25310 发表于 2022-10-21 10:12
要PWM控制两路方波易如反掌,不占用硬件资源,定时器做的都不能用到稍微复杂的产品只是些演示版。
ID:123289 发表于 2022-10-21 09:23
选择两个IO口,如P1.1、P1.2。
按你的时序要求,改变IO口的状态,就可以了。
ID:121859 发表于 2022-10-20 08:40
要实现占空比不一样的波形,你需要PWM控制的方法来编程。
ID:593706 发表于 2022-10-19 21:37
用单片机产生两路方波,从不同的IO脚输出,这个很容易,但不管多高级的单片机,这样产生的二路信号都会有相位角差(时差)如果想产生二路没有相位角差的方波,简单的方法是用外围的硬件,比如反相器,这样产生的信号没有相位角差,具体硬件电路就不介绍了,可以自己在网上找相似的电路做参考。
ID:213173 发表于 2022-10-19 21:21


  1. #include<reg51.h>

  2. typedef unsigned int u16;
  3. typedef unsigned char u8;

  4. u8 i;

  5. sbit out1=P2^0; /*P2.0口输出方波*/
  6. sbit out2=P2^1; /*P2.1口输出方波*/

  7. void main()
  8. {   
  9.         TMOD |= 0x10;                //设置定时器模式
  10.         TL1 = 0x18;                //设置定时初始值
  11.         TH1 = 0xFC;                //设置定时初始值
  12.         TF1 = 0;                //清除TF1标志
  13.         TR1 = 1;                //定时器1开始计时
  14.         ET1=1;        //开T1中断
  15.         EA=1;        //开总中断
  16.         while(1);
  17. }

  18. //定时器T1的中断服务函数
  19. void T1_time()  interrupt 3//定时器T1的中断序号为3
  20. {   
  21.         TL1 = 0x66;
  22.         TH1 = 0xFC;
  23.         if(i==0)out1=~out1;
  24.         if(i==1)out2=~out2;
  25.         i=++i%2;
  26. }
复制代码



评分

参与人数 1黑币 +12 收起 理由
jony1122 + 12 很给力!

查看全部评分

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表