找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13712|回复: 42
收起左侧

如何用单片机产生一个方波

  [复制链接]
ID:189881 发表于 2017-7-17 21:34 | 显示全部楼层 |阅读模式
             请问各位大佬,如何用单片机产生一个100KHZ的方波,占空比50%
回复

使用道具 举报

ID:189881 发表于 2017-7-17 21:38 | 显示全部楼层
最好是32单片机
回复

使用道具 举报

ID:146878 发表于 2017-7-18 09:29 | 显示全部楼层
定时5ms,端口反转一次
回复

使用道具 举报

ID:219856 发表于 2017-7-18 13:48 | 显示全部楼层
用cubemx软件先设置GPIO口,然后再在特定的区域使用HAL库里的翻转函数Trogger就好拉~
回复

使用道具 举报

ID:219467 发表于 2017-7-18 14:29 | 显示全部楼层
快速pwm?
回复

使用道具 举报

ID:220552 发表于 2017-7-18 14:57 | 显示全部楼层
PWM输出,根据例程稍作改动就好了
回复

使用道具 举报

ID:220574 发表于 2017-7-18 15:54 | 显示全部楼层
定时25ms,交替输出高低电平,最好用STM32
回复

使用道具 举报

ID:123289 发表于 2017-7-19 06:56 | 显示全部楼层
劝楼主改学CEO专业。
回复

使用道具 举报

ID:220714 发表于 2017-7-19 09:50 | 显示全部楼层
单片机脚位交替输出0 1就是方波 这个也不会的话就别学单片机了
回复

使用道具 举报

ID:220771 发表于 2017-7-19 11:53 | 显示全部楼层
定时25ms,交替输出高低电平,
回复

使用道具 举报

ID:47286 发表于 2017-7-19 12:31 | 显示全部楼层
楼上前辈们 为什么是25ms啊 100KHz/s是1000ms里100000个 一高一低是一个 那不应该是5ns翻转一次吗

谁教我一下啊
回复

使用道具 举报

ID:220946 发表于 2017-7-20 14:09 | 显示全部楼层
pwm, 这个不难吧
回复

使用道具 举报

ID:221127 发表于 2017-7-20 16:53 | 显示全部楼层
使用K60单片机的一个FTM模块,频率和占空比都可以设置啦
回复

使用道具 举报

ID:160725 发表于 2017-7-20 17:02 | 显示全部楼层
很有用的资料,感谢
回复

使用道具 举报

ID:221132 发表于 2017-7-20 17:05 | 显示全部楼层
PWM脉冲宽度调节
回复

使用道具 举报

ID:221135 发表于 2017-7-20 17:16 | 显示全部楼层
可以用PWM波调速
回复

使用道具 举报

ID:221145 发表于 2017-7-20 17:54 | 显示全部楼层
单片机IO以一定时间间隔输出高低电平。
回复

使用道具 举报

ID:213173 发表于 2017-7-20 19:03 | 显示全部楼层
dzbj 发表于 2017-7-19 12:31
楼上前辈们 为什么是25ms啊 100KHz/s是1000ms里100000个 一高一低是一个 那不应该是5ns翻转一次吗

谁教 ...

你说的5ns翻转一次是对的,说25ms朋友没有走心。
回复

使用道具 举报

ID:221165 发表于 2017-7-20 19:36 | 显示全部楼层
设置PWM输出,或者简单反转高低电平
回复

使用道具 举报

ID:61582 发表于 2017-7-20 20:26 | 显示全部楼层
这个方式非常多,建议你现在先学习定时器中断,可以使用定时器中断的方式进行pwm输出,也可以使用定时器的查询方式进行pwm输出,上述是常规的方法,你最好查询你手上有的单片机的手册,有些单片机也许会自带脉冲串输出功能,只需要对几个寄存器进行设置即可进行脉冲的输出。
回复

使用道具 举报

ID:221305 发表于 2017-7-21 11:51 | 显示全部楼层
用PWM控制输出方波
回复

使用道具 举报

ID:221349 发表于 2017-7-21 14:30 | 显示全部楼层
pwm输出
回复

使用道具 举报

ID:221379 发表于 2017-7-21 15:31 | 显示全部楼层
用stm32 pwm 想输出多少就多少
回复

使用道具 举报

ID:221405 发表于 2017-7-21 16:31 | 显示全部楼层
正电平
回复

使用道具 举报

ID:220355 发表于 2017-7-21 21:24 | 显示全部楼层
简单一点的就用51单片机的定时器做,启动定时器0中断,在中断中启动定时器1,定时器0定时产生高电平的时间,定时器1定时产生低电平的时间就行了
回复

使用道具 举报

ID:221483 发表于 2017-7-21 23:04 | 显示全部楼层
历害了,学习下
回复

使用道具 举报

ID:221484 发表于 2017-7-21 23:08 | 显示全部楼层
pwm输出
回复

使用道具 举报

ID:221486 发表于 2017-7-21 23:16 | 显示全部楼层
用stm32的通用定时器设置,32做的话比较方便
回复

使用道具 举报

ID:221499 发表于 2017-7-22 00:38 | 显示全部楼层
就是PWM吧,网上搜 例程很多的
回复

使用道具 举报

ID:221001 发表于 2017-7-22 01:38 | 显示全部楼层
用PCF8591T实现DA功能    能产生方波 正弦波 三角波 锯齿波
回复

使用道具 举报

ID:219625 发表于 2017-7-22 05:13 | 显示全部楼层
用STM32的定时器中断或者硬件PWM输出实现。
回复

使用道具 举报

ID:221507 发表于 2017-7-22 08:36 | 显示全部楼层
PWM脉冲宽度调节
回复

使用道具 举报

ID:221571 发表于 2017-7-22 12:31 | 显示全部楼层
采用定时器交替输出高低电平即可
回复

使用道具 举报

ID:189104 发表于 2017-7-22 15:09 | 显示全部楼层

 定时一定时间,端口反转一次
回复

使用道具 举报

ID:221606 发表于 2017-7-22 15:32 | 显示全部楼层
用pwn,很简单的
回复

使用道具 举报

ID:221605 发表于 2017-7-22 15:36 | 显示全部楼层
利用定时器PWM输出 功能  PWM占空比可设置为50%
回复

使用道具 举报

ID:221628 发表于 2017-7-22 16:49 | 显示全部楼层
你用什么单片机,产生周期方波的方法很多,基本都要用到定时器,比如51可以用定时器中断的方法(或查询),在中断服务函数内把某个端口取反。另外如果你用stm32的话,stm32的定时器本身就可以设置产生PWM波
回复

使用道具 举报

ID:111634 发表于 2017-7-22 17:54 | 显示全部楼层
本帖最后由 zl2168 于 2017-7-22 21:46 编辑

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

使用道具 举报

ID:221618 发表于 2017-7-22 19:28 | 显示全部楼层
用定时器或者PWM
回复

使用道具 举报

ID:219197 发表于 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);
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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