找回密码
 立即注册

QQ登录

只需一步,快速开始

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

直流电机测速单片机仿真和源码资料

[复制链接]
跳转到指定楼层
楼主
单片机控制的直流电机测速,欢迎大家参考.


单片机源程序如下:
  1. #include <reg51.h>
  2. #include <math.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define ON 0
  6. #define OFF 1
  7. sbit PWM=P3^5;
  8. sbit MP=P3^4;
  9. bit FLAG=0;
  10. uchar code dispbit[6]=
  11. {
  12.     0x20,0x10,0x08,0x04,0x02,0x01
  13. }
  14. ;

  15. uchar code seg[]=
  16. {
  17.     0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90
  18. }
  19. ;
  20. //0,1,2,3,4,5,6,7,8,9
  21. uchar disbuf[6]=
  22. {
  23.     0,0,0,0,10,10
  24. }
  25. ;
  26. uint temp[6];
  27. uint discount=0;
  28. uint timecount=0;
  29. //定时的次数
  30. uint T0count=0;
  31. uint hus=0;
  32. uint k=60;
  33. uint Vc;
  34. uint Vs;
  35. uint tm=3000;
  36. uint x;
  37. void t0_serv()interrupt 1
  38. {
  39.     T0count++;
  40. }
  41. void t1_serv()interrupt 3
  42. {
  43.     PWM=1;
  44.     TH1=(65536-tm)/256;
  45.     TL1=(65536-tm)%256;
  46.     hus++;
  47.     if(hus==tm)
  48.     {
  49.         PWM=0;
  50.         TH1=(25536+tm)/256;
  51.         TL1=(25536+tm)%256;
  52.         
  53.     }
  54.     timecount++;
  55.     if(timecount==250)
  56.     {
  57.         //FLAG=1;
  58.         TR0=0;
  59.         hus=0;
  60.         timecount=0;
  61.         Vc=T0count*65536+TH0*256+TL0;
  62.         Vs=144;
  63.         if(abs(Vc-Vs)>5)
  64.         {
  65.             tm=abs(k*(Vc-Vs));
  66.             T0count=0;
  67.             TR0=1;
  68.             TR1=1;
  69.             ET0=1;
  70.             ET1=1;
  71.             EA=1;
  72.         }
  73.         FLAG=1;
  74.         TR0=0;
  75.         timecount=0;
  76.     }
  77.     P0=dispbit[discount];
  78.     P1=seg[disbuf[discount]];
  79.     discount++;
  80.     if(discount==6)
  81.     {
  82.         discount=0;
  83.     }
  84. }
  85. void main()
  86. {
  87.     uint i;
  88.     TMOD=0x15;
  89.     TH0=0;
  90.     TL0=0;
  91.     TH1=(65536-tm)/256;
  92.     TL1=(65536-tm)%256;
  93.     TR0=1;
  94.     TR1=1;
  95.     ET0=1;
  96.     ET1=1;
  97.     EA=1;
  98.     while(1)
  99.     {
  100.         if(FLAG==1)
  101.         {
  102.             FLAG=0;
  103.             x=T0count*65536+TH0*256+TL0;
  104.             for(i=0;i<6;i++)
  105.             {
  106.                 temp[i]=0;
  107.             }
  108.             i=0;
  109.             while(x/10)
  110.             {
  111.                 temp[i]=x%10;
  112.                 x=x/10;
  113.                 i++;
  114.             }
  115.             temp[i]=x;
  116.             for(i=0;i<6;i++)
  117. ……………………

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

所有资料51hei提供下载:
C51直流电机PWM测速源程序.rar (26.37 KB, 下载次数: 101)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:308395 发表于 2018-4-22 15:03 | 只看该作者
只显示一个速度
回复

使用道具 举报

板凳
ID:404256 发表于 2018-9-30 08:44 | 只看该作者
谢谢分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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