找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机占空比可调模拟 proteus仿真及程序

[复制链接]
跳转到指定楼层
楼主
51单片机占空比可调模拟的仿真原理图:

单片机源程序:
  1. /********************************************************************
  2.                             天马电子
  3. *********************************************************************/
  4. #include<reg52.h>  

  5. #define uchar unsigned char           //宏定义无符号字符型
  6. #define uint  unsigned  int           //宏定义无符号整型

  7. uchar b;                //中断值
  8. uchar N=0;                //占空比计数值
  9. uchar X=50;                //占空比初始值百分比

  10. uchar z=0;

  11. uchar key_up;
  12. uchar key_down;

  13. /************************************************************************
  14.                                                         按键初始化
  15. *************************************************************************/
  16. sbit P2_0=P2^0;//占空比加
  17. sbit P2_1=P2^1;//占空比减

  18. sbit PWM=P3^7;//控制PWM的占空比输出

  19. /************************************************************************
  20.                                                         调速按键扫描函数
  21. *************************************************************************/

  22. void get_key(void)//按键扫描函数

  23. {
  24. while(P2_0==0)//按键加计数标志
  25. {key_up=1;
  26. }
  27. while(P2_1==0)//按键减计数标志
  28. {key_down=1;
  29. }
  30. }

  31. /************************************************************************
  32.                                                         定时器中断执行函数
  33. *************************************************************************/
  34. void timer0( ) interrupt 1 //定时器0工作方式1
  35. {

  36. TH0=(65536-1)/256;          //重装计数初值
  37. TL0=(65536-1)%256;          //重装计数初值
  38. b++;
  39. get_key();
  40. if (key_up==1)
  41.        {
  42.            if(X!=100)//判断是否计数到100
  43.               {
  44.                X++;//加一
  45.                key_up=0;
  46.                            }
  47.         }
  48. if (key_down==1)
  49.        {
  50.             if(X!=0)//判断是否计数到0
  51.               {
  52.                    X--;//减一
  53.                key_down=0;
  54.                }
  55.         }
  56. }
  57. /************************************************************************
  58.                                                         程序主函数
  59. *************************************************************************/
  60. void main()
  61. {
  62. TMOD=0X01;                          //定时器中断0
  63. TH0=(65536-2)/256;          //定时时间高八位初值
  64. TL0=(65536-2)%256;          //定时时间低八位初值
  65. EA=1;                                  //开CPU中断
  66. ET0=1;                                  //开T/C0中断
  67. TR0=1;
  68. /****************************PWM处理部分*********************************************/
  69.    while(1)
  70.     {
  71.           PWM=1;
  72.       while(1)
  73.       {
  74.         b=0;
  75.         while(!b);
  76.            if (N==X)
  77.                PWM=0;
  78.             if(N==100)break;
  79.                N++;
  80. /*************************************************************************************/                       

  81.               }
  82.              N=0;
  83.      }

  84. }
  85. /******************************程序结束************************************************/
复制代码


占空比可调模拟仿真程序.rar (57.81 KB, 下载次数: 60)


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

使用道具 举报

沙发
ID:154932 发表于 2016-12-28 21:23 | 只看该作者
学习中
回复

使用道具 举报

板凳
ID:214666 发表于 2017-6-26 10:48 | 只看该作者
不能下载 我和伤心
回复

使用道具 举报

地板
ID:215047 发表于 2017-6-27 10:54 | 只看该作者
有用,然而我下载不了
回复

使用道具 举报

5#
ID:98356 发表于 2017-11-27 14:41 | 只看该作者
谢谢分享            
回复

使用道具 举报

6#
ID:578183 发表于 2019-7-5 23:04 | 只看该作者
感谢分享,学习中
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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