找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机直流电机转速控制Proteus仿真和源程序

[复制链接]
跳转到指定楼层
楼主
51单片机控制直流电机转速仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <reg52.h>        
  2. sbit P20=P2^0;
  3. sbit P21=P2^1;
  4. sbit P22=P2^2;
  5. sbit P23=P2^3;
  6. sbit P24=P2^4;  
  7. sbit P25=P2^5;
  8. sbit P26=P2^6;
  9. sbit P27=P2^7;
  10. sbit P30=P3^0;
  11. unsigned int ge,shi,bai,qian,g,s,b;
  12. unsigned int j=0,getdata=0,t;
  13. unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  14. void delay(unsigned int z)        //延时
  15. {
  16.   unsigned char x,y;
  17.   for(x=z;x>0;x--)
  18.      for(y=110;y>0;y--);
  19. }

  20. void display() //显示
  21. {
  22. P0=table[ge];
  23. P20=1;
  24. P21=1;
  25. P22=1;
  26. P23=1;
  27. P24=1;
  28. P25=1;
  29. P26=1;
  30. P27=0;
  31. delay(5);
  32. P0=0x00;

  33. P0=table[shi];
  34. P20=1;
  35. P21=1;
  36. P22=1;
  37. P23=1;
  38. P24=1;
  39. P25=1;
  40. P26=0;
  41. P27=1;
  42. delay(5);
  43. P0=0x00;

  44. P0=table[bai];
  45. P20=1;
  46. P21=1;
  47. P22=1;
  48. P23=1;
  49. P24=1;
  50. P25=0;
  51. P26=1;
  52. P27=1;
  53. delay(5);
  54. P0=0x00;

  55. P0=table[qian];
  56. P20=1;
  57. P21=1;
  58. P22=1;
  59. P23=1;
  60. P24=0;
  61. P25=1;
  62. P26=1;
  63. P27=1;
  64. delay(5);
  65. P0=0x00;                                       

  66. //P0=able[b];
  67. //P20=1;
  68. //P21=1;
  69. //P22=1;
  70. //P23=1;
  71. //P24=1;
  72. //P25=0;
  73. //P26=1;
  74. //P27=1;
  75. //delay(5);
  76. //P0=0x00;
  77. //
  78. //P0=table[s];
  79. //P20=1;
  80. //P21=1;
  81. //P22=1;
  82. //P23=1;
  83. //P24=1;
  84. //P25=1;
  85. //P26=0;
  86. //P27=1;
  87. //delay(5);
  88. //P0=0x00;


  89. //P0=table[g];
  90. //P20=1;
  91. //P21=1;
  92. //P22=1;
  93. //P23=1;
  94. //P24=1;
  95. //P25=1;
  96. //P26=1;
  97. //P27=0;
  98. //delay(5);
  99. //P0=0x00;
  100. if(P30==0)
  101. P0=0x40;
  102. P20=0;
  103. P21=1;
  104. P22=1;
  105. P23=1;
  106. P24=1;
  107. P25=1;
  108. P26=1;
  109. P27=1;
  110. delay(50);
  111. P0=0x00;
  112. }

  113. void init()//初始化
  114. {        
  115.   TMOD=0X11;//定时器0和1开启16位定时/计数模式(方式二)
  116.   EX0=1;//允许开启外部中断0
  117.   IT0=1;//设置中断0下降沿触发
  118.   EA=1;//总开关开启

  119.   ET0=1;//定时/计数器0溢出中断允许
  120.   TR0=1;//启动定时器0
  121.   TH0=(65536-1000)/256;        //定时1ms
  122.   TL0=(65536-1000)%256;
  123. }


  124. void main()          //主程序
  125. {
  126.   init();
  127.   while(1)
  128.   {        
  129.         ge=getdata%10;
  130.         shi=getdata/10%10;
  131.         bai=getdata/100%10;
  132.         qian=getdata/1000%10;

  133. //        g=n%10;
  134. //        s=n/10%10;
  135. //        b=n/100%10;
  136.         
  137.           display();
  138.   }
  139. }

  140. //M
  141. void int0(void) interrupt 0         //外部中断0
  142. {        

  143.          j++;  //每有一个脉冲触发就加1
  144.         
  145. }
  146.                
  147. void Timer0() interrupt 1          //定时器中断0
  148. {
  149.         TR0=0;//关闭定时器0        暂停计时
  150.           TH0=(65536-3000)/256;
  151.          TL0=(65536-3000)%256;
  152.     t++;
  153.         if(t==1000)//设定1s判断一次转速
  154.         {
  155.                 t=0;
  156.                 getdata=j*60.0/(24*3.0);//此电动机转一圈编码器产生24个脉冲
  157.                 j=0;
  158.         }
  159.         TR0=1;//开启定时器0         重新计时
  160. }
复制代码

全部资料51hei下载地址:
First.zip (83.62 KB, 下载次数: 81)


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

使用道具 举报

沙发
ID:242544 发表于 2018-12-25 23:30 | 只看该作者
发的什么东西,仿真和程序都打不开,用其他软件看了程序写的太啰嗦
回复

使用道具 举报

板凳
ID:700677 发表于 2020-3-27 00:00 | 只看该作者
转速为多大呢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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