标题: 如何用单片机产生一个方波 [打印本页]

作者: 木木丸    时间: 2017-7-17 21:34
标题: 如何用单片机产生一个方波
             请问各位大佬,如何用单片机产生一个100KHZ的方波,占空比50%

作者: 木木丸    时间: 2017-7-17 21:38
最好是32单片机
作者: pdwdzz    时间: 2017-7-18 09:29
定时5ms,端口反转一次

作者: comit    时间: 2017-7-18 13:48
用cubemx软件先设置GPIO口,然后再在特定的区域使用HAL库里的翻转函数Trogger就好拉~

作者: asdavjsdlk    时间: 2017-7-18 14:29
快速pwm?
作者: 刘文倩    时间: 2017-7-18 14:57
PWM输出,根据例程稍作改动就好了
作者: hren    时间: 2017-7-18 15:54
定时25ms,交替输出高低电平,最好用STM32
作者: yzwzfyz    时间: 2017-7-19 06:56
劝楼主改学CEO专业。
作者: adfhjkkll;    时间: 2017-7-19 09:50
单片机脚位交替输出0 1就是方波 这个也不会的话就别学单片机了
作者: 张小跳    时间: 2017-7-19 11:53
定时25ms,交替输出高低电平,
作者: dzbj    时间: 2017-7-19 12:31
楼上前辈们 为什么是25ms啊 100KHz/s是1000ms里100000个 一高一低是一个 那不应该是5ns翻转一次吗

谁教我一下啊
作者: fangxiao802    时间: 2017-7-20 14:09
pwm, 这个不难吧
作者: ltyasdfghjkl    时间: 2017-7-20 16:53
使用K60单片机的一个FTM模块,频率和占空比都可以设置啦
作者: 关中小河    时间: 2017-7-20 17:02
很有用的资料,感谢
作者: breeze1993    时间: 2017-7-20 17:05
PWM脉冲宽度调节
作者: iiiiis    时间: 2017-7-20 17:16
可以用PWM波调速
作者: insightx    时间: 2017-7-20 17:54
单片机IO以一定时间间隔输出高低电平。
作者: wulin    时间: 2017-7-20 19:03
dzbj 发表于 2017-7-19 12:31
楼上前辈们 为什么是25ms啊 100KHz/s是1000ms里100000个 一高一低是一个 那不应该是5ns翻转一次吗

谁教 ...

你说的5ns翻转一次是对的,说25ms朋友没有走心。
作者: lv0817    时间: 2017-7-20 19:36
设置PWM输出,或者简单反转高低电平
作者: 快灭了他    时间: 2017-7-20 20:26
这个方式非常多,建议你现在先学习定时器中断,可以使用定时器中断的方式进行pwm输出,也可以使用定时器的查询方式进行pwm输出,上述是常规的方法,你最好查询你手上有的单片机的手册,有些单片机也许会自带脉冲串输出功能,只需要对几个寄存器进行设置即可进行脉冲的输出。
作者: 小胖子aaa    时间: 2017-7-21 11:51
用PWM控制输出方波

作者: chenzvip123    时间: 2017-7-21 14:30
pwm输出
作者: abcd123.    时间: 2017-7-21 15:31
用stm32 pwm 想输出多少就多少
作者: jicjic111    时间: 2017-7-21 16:31
正电平
作者: wxy2000    时间: 2017-7-21 21:24
简单一点的就用51单片机的定时器做,启动定时器0中断,在中断中启动定时器1,定时器0定时产生高电平的时间,定时器1定时产生低电平的时间就行了
作者: dtian2010    时间: 2017-7-21 23:04
历害了,学习下
作者: omgmagic    时间: 2017-7-21 23:08
pwm输出
作者: cxm    时间: 2017-7-21 23:16
用stm32的通用定时器设置,32做的话比较方便
作者: yzl893    时间: 2017-7-22 00:38
就是PWM吧,网上搜 例程很多的
作者: 721231    时间: 2017-7-22 01:38
用PCF8591T实现DA功能    能产生方波 正弦波 三角波 锯齿波
作者: ccithqh@126.com    时间: 2017-7-22 05:13
用STM32的定时器中断或者硬件PWM输出实现。
作者: SIMPLE千堆雪    时间: 2017-7-22 08:36
PWM脉冲宽度调节

作者: 冰葑世纪    时间: 2017-7-22 12:31
采用定时器交替输出高低电平即可
作者: sampan    时间: 2017-7-22 15:09

 定时一定时间,端口反转一次
作者: houhuicong123    时间: 2017-7-22 15:32
用pwn,很简单的
作者: liuduanqing    时间: 2017-7-22 15:36
利用定时器PWM输出 功能  PWM占空比可设置为50%
作者: 趣多多    时间: 2017-7-22 16:49
你用什么单片机,产生周期方波的方法很多,基本都要用到定时器,比如51可以用定时器中断的方法(或查询),在中断服务函数内把某个端口取反。另外如果你用stm32的话,stm32的定时器本身就可以设置产生PWM波
作者: zl2168    时间: 2017-7-22 17:54
本帖最后由 zl2168 于 2017-7-22 21:46 编辑

实例69  输出周期脉冲方波(示波器显示)
Proteus仿真一下,确认有效。
实例69 输出周期脉冲方波.rar (34.2 KB, 下载次数: 30)
实例70 输出矩形脉冲波.rar (34.07 KB, 下载次数: 13)

以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版.。书中电路和程序设计有详细说明,程序语句条条有注解。仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。

作者: 15897677561    时间: 2017-7-22 19:28
用定时器或者PWM
作者: 诺炎    时间: 2017-7-22 22:22
#include"reg52.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
uint num,t;
sbit led1=P1^0;
//void yanshi(uint xms)
//{
//        uint i,j;
//        for(i=xms;i>0;i--)
//                for(j=110;j>0;j--);
//}
void chuzhi()
{
        TMOD=0x01;//éèÖö¨ê±Æ÷0Îa1¤×÷·½ê½1
        TH0=(65536-45872)/256;//45872=ËùÇóμ¥λ걼ä50ms/(12/11.0592MHZ),11.0592MHZÎa¾§ÕñμÄÕeμ′ÖüÆú
        TL0=(65536-45872)%256;
        EA=1;//′ò¿a×üÖD¶Ï
        TR0=1;//′ò¿a¶¨ê±0
        ET0=1;//ÔêDí¶¨ê±Æ÷0ÖD¶Ï
}
void T0_0() interrupt 1
{
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;//֨װ3õÖμ
        num++;//ÿ1y50msTH0òçÂúò»′Î,num×Ô¼óò»′Î
        t=10;
        if(num==t){led1=~led1;}//μ±num=tμÄê±oòè¡·′ò»′Î
  if(num==20){num=0;led1=~led1;}//20¸ö50ms′ú±í×Å1sò2¾íêÇ1sÎaÖüÆúÿμ½ò»¸öÖüÆúled1óÖè¡·′ò»′Π ¾íDÎ3éáËò»¸ö2¨
}
void main()
{
        chuzhi();
        while(1);
}

作者: moon84523    时间: 2017-7-23 11:27
用定时器(高电平间和低电平时间相同),周期输出高低电平就可以了。
作者: DiorLou    时间: 2017-7-23 17:08
pwm波本质就是切换高低电平,就像灯亮和灯灭一样,每隔一段时间改变io口电平就好
作者: halo2489    时间: 2017-7-24 09:11
不是很难,简单的pwm波就可以实现,你这样的应该从一开始学起





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1