找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5802|回复: 5
打印 上一主题 下一主题
收起左侧

原创!单片机PWM8路输出,有多少口输出多少路!附源码与实物图 简单灵活

  [复制链接]
跳转到指定楼层
楼主
原创!!代码自写!!

定时器采取的是1微秒定时(信号频率为1KHZ、公式T=1/f)

设置8个按键分别控制8路PWM输出不同波形
并且各路波形可根据程序调整
(占空比调整方法为所设置的数占10份的多少)

1、电路自己手动焊接,走锡形式如下图(3)。

2、电路使用光耦(光电隔离器),能够使51单片机与其他高电压或低电压设备发送波形信号。大多数的数据采集装置都是采用脉冲的方式采集数据,当然这个数据是需要计算脉冲的,不是说计数脉冲次数就可以的。如图(2)

3、波形效果示波器已经展示,效果很好!如图(1)

4、电路自己设计,分为两部分,一部分是5V电压,光耦部分是12V电压。P521光耦输出端可以选择上面输出,也可以选择下面输出,只是输出结果是相反的,同时要注意10K电阻的位置,我是放在上面的,也可以放在下面。放在哪个脚哪个引脚就是输出端,两个引脚输出结果相反,即高电频和低电平是相反的。如图(3)


单片机源码:
  1. #include "reg52.h"
  2. #include "onewire.h"

  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sfr AUXR=0x8e;
  6. sbit  PWM1=P2^7;
  7. sbit  PWM2=P2^6;
  8. sbit  PWM3=P2^5;
  9. sbit  PWM4=P2^4;
  10. sbit  PWM5=P2^3;
  11. sbit  PWM6=P2^2;
  12. sbit  PWM7=P2^1;
  13. sbit  PWM8=P2^0;


  14. void delay(uint x);

  15. uchar key_panjian();
  16. void allinit();
  17. void Timer0Init(void);
  18. uint tt,ww,kk,key=0;





  19.                 void main()
  20.                 {
  21.                
  22.         
  23.               Timer0Init();
  24.                  while(1)
  25.                    {
  26.                    key_panjian();

  27.                    if(key==1)
  28.                    {
  29.                   
  30.         
  31.                            if(kk<9)
  32.         
  33.                                         PWM1=1;
  34.                
  35.                                         else
  36.                         
  37.                                         PWM1=0;
  38.                     }
  39.                            else if(key==2)
  40.                    {
  41.                   
  42.         
  43.                            if(kk<5)
  44.         
  45.                                         PWM2=1;
  46.                
  47.                                         else
  48.                         
  49.                                         PWM2=0;
  50.                     }


  51.                         else if(key==3)
  52.                    {
  53.                   
  54.         
  55.                            if(kk<5)
  56.         
  57.                                         PWM3=1;
  58.                
  59.                                         else
  60.                         
  61.                                         PWM3=0;
  62.                     }
  63.                            else if(key==4)
  64.                    {
  65.                   
  66.         
  67.                            if(kk<5)
  68.         
  69.                                         PWM4=1;
  70.                
  71.                                         else
  72.                         
  73.                                         PWM4=0;
  74.                     }

  75.                 else if(key==5)
  76.                    {
  77.                   
  78.         
  79.                            if(kk<9)
  80.         
  81.                                         PWM5=1;
  82.                
  83.                                         else
  84.                         
  85.                                         PWM5=0;
  86.                     }
  87.                            else if(key==6)
  88.                    {
  89.                   
  90.         
  91.                            if(kk<9)
  92.         
  93.                                         PWM6=1;
  94.                
  95.                                         else
  96.                         
  97.                                         PWM6=0;
  98.                     }
  99.                         else if(key==7)
  100.                    {
  101.                   
  102.         
  103.                            if(kk<6)
  104.                           {
  105.                                         PWM7=0;
  106.                                 
  107.                                    }
  108.                                         else
  109.                         
  110.                                         PWM7=1;
  111.                     }
  112.         
复制代码

全部资料51hei下载地址:
PWM.zip (41.97 KB, 下载次数: 54)


评分

参与人数 2黑币 +108 收起 理由
aifengdian + 8 共享资料的黑币奖励!
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏9 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:226980 发表于 2018-4-27 17:35 | 只看该作者
厉害,学习了,51论坛有你更精彩
回复

使用道具 举报

板凳
ID:234782 发表于 2018-4-27 19:46 | 只看该作者
你写的程序有具体的注释吗
回复

使用道具 举报

地板
ID:312929 发表于 2018-4-28 08:11 | 只看该作者
yulin3192 发表于 2018-4-27 19:46
你写的程序有具体的注释吗

很抱歉,我没有注释的习惯,
哪点不明白,可以问我
回复

使用道具 举报

5#
ID:230847 发表于 2018-4-30 16:10 | 只看该作者
谢谢楼主
回复

使用道具 举报

6#
ID:168971 发表于 2022-9-14 22:11 | 只看该作者
给你点赞!!!!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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