找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机控制直流电机调速proteus仿真与源码

  [复制链接]
跳转到指定楼层
楼主
用51单片机控制直流电机 实现调速等功能
电路原理图如下:


仿真原理图如下(proteus仿真工程文件可到本帖附件中下载):




单片机源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit key2=P3^2;
  5. sbit key1=P3^1;
  6. sbit CLOCK=P2^4;
  7. sbit ST=P2^5;
  8. sbit EOC=P2^6;
  9. sbit OE=P2^7;
  10. sbit PWM=P3^7;
  11. uint temp;
  12. uchar start;

  13. void keyscan();
  14. void delay(uint zz);
  15. void main()
  16. {       
  17.         P3=0;P0=0xff;
  18.         TMOD=0x02;
  19.         TH0=0x01;
  20.         TL0=0X00;
  21.         IE=0x82;
  22.         TR0=1;
  23.         start=0;
  24.         while(1)
  25.                 {
  26.                        
  27.                         keyscan();                       
  28.                         while(start)
  29.                                 {

  30.                                         ST=0;ST=1;ST=0;        //启动ADC0809
  31.                                         while(!EOC);                //查询EOC是否为1;
  32.                                         OE=1;
  33.                                         temp=P1;                                //读取A/D转化的结果
  34.                                         OE=0;
  35.                                         PWM=1;                                //PWM输出高电平
  36.                                         keyscan();
  37.                                         delay(temp);                //正脉冲宽度
  38.                                         PWM=0;                                //PWM输出低电平
  39.                                         keyscan();
  40.                                         delay(255-temp);        //低脉冲宽度

  41.                                 }               
  42.                 }
  43. }

  44. void keyscan()
  45. {

  46.         key2=1;
  47.         key1=1;

  48.         if(!key1)
  49.                 {
  50.                         delay(5);
  51.                         if(!key1)
  52.                                 {
  53.                                         start=1;
  54.                                 }
  55.                         while(!key1);
  56.                         delay(5);
  57.                         while(!key1);
  58.                 }

  59.         key2=1;
  60.         key1=1;
  61.         if(!key2)
  62.                 {
  63.                         delay(5);
  64.                         if(!key2)
  65.                                 {
  66.                                        
  67.                                         if(!PWM)PWM=1;
  68.                                                 else PWM=0;
  69.                                         if(start)PWM=0;
  70.                                         start=0;
  71.                                 }
  72.                         while(!key2);
  73.                         delay(5);
  74.                         while(!key2);
  75.                 }
  76. }

  77. void clockwave() interrupt 1
  78. {       
  79. ……………………

  80. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
直流电机控制proteus仿真.rar (291.46 KB, 下载次数: 142)


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

使用道具 举报

沙发
ID:211219 发表于 2017-6-15 10:30 | 只看该作者
可以请问一下程序里的头文件reg51在哪儿找嘛?
回复

使用道具 举报

板凳
ID:216157 发表于 2017-7-3 15:21 | 只看该作者
hhy961228 发表于 2017-6-15 10:30
可以请问一下程序里的头文件reg51在哪儿找嘛?

双击头文件reg51.h就可以了
回复

使用道具 举报

地板
ID:308395 发表于 2018-5-3 16:24 | 只看该作者
虽说调速,但是在运行时,电机正负端的电压一直是在一定范围内变化,再按按钮,也不变
回复

使用道具 举报

5#
ID:367315 发表于 2018-7-10 16:04 | 只看该作者
这个H桥的工作原理是什么呢
回复

使用道具 举报

6#
ID:420030 发表于 2019-12-6 11:22 | 只看该作者
你这个可以正反转吗,应该没法反转吧
回复

使用道具 举报

7#
ID:420030 发表于 2019-12-6 11:23 | 只看该作者
还有你用的什么版本的Proteus,我下下来打开运行有错误啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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