找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3601|回复: 1
收起左侧

步进电机精准定位、转向、转速的源程序 51单片机比赛资料

[复制链接]
ID:195824 发表于 2017-11-6 22:32 | 显示全部楼层 |阅读模式
这是作者个人参加51单片机比赛的资料,欢迎参考
0.png

单片机源程序如下:
  1. //=======================================================
  2. //工程名称:步进电机精准定位、转向、转速
  3. //工程作者:冯奇
  4. //工程硬件:STC89C52RC                                
  5. //======================包含文件=================================
  6. #include<reg52.h>          //包含头文件
  7. #include"LCD1602.H"          //包含文件---LCD1602显示屏
  8. #include"Stepmotor.H" //包含文件---两相五线步进电机
  9. #include"DELAY.H"          //包含文件---延时
  10. #include"KEYx3.H"          //包含文件---三个按键
  11. //======================定义变量=================================
  12. unsigned int count=256;  //角度初始值
  13. float t;
  14. unsigned char mode=0;  //按键1设置模式
  15. extern unsigned int speed;//速度值
  16. bit stop,zf;                         //stop=1 步进电机启动
  17.                                                  //stop=0 步进电机暂停
  18.                                                  //zf=1 右转
  19.                                                  //zf=0 左转
  20. //======================主函数=================================
  21. void main()
  22. {
  23.         //        KEYx3_Init();//初始化按键               
  24.                 Step_Init();//步进电机复位
  25.                 Step_R();
  26.         //        speed=3;                 //初始化转速
  27.         //        delay_ms(100);
  28.                 //zf=1;
  29.                 //Init_LCD1602();        //LCD1602初始化
  30. //                LCD1602_ShowStr(6,1,"R");
  31. //        while(1)
  32. //        {
  33. //                if(KEYx3_1_Gets())
  34. //                {        
  35. //                mode++;                //模式切换
  36. //                delay_ms(10);
  37. //                }
  38. //                switch(mode)
  39. //        {
  40. //                case 1:        //模式1控制转动角度
  41. //                {
  42. //                        if(KEYx3_2_Gets())
  43. //                        {
  44. //                                count=count+2;         //加步进电机角度的度数
  45. //                                delay_ms(10);
  46. //                                        if(count>512)
  47. //                                        {
  48. //                                        count=0;
  49. //                                        }
  50. //                        }
  51. //                                if(KEYx3_3_Gets())
  52. //                                {
  53. //                                count=count-2;         //加步进电机角度的度数
  54. //                                delay_ms(10);
  55. //                                        if(count<0)
  56. //                                        {
  57. //                                        count=512;
  58. //                                        }        
  59. //                                }
  60. //                        break;
  61. //                }
  62. //                case 2:        //模式2控制转动方向
  63. //                {
  64. //                        if(KEYx3_2_Gets())
  65. //                        {
  66. //                        zf=1;
  67. //                        LCD1602_ShowStr(6,1,"R");//LCD1602显示方向--右        
  68. //                        }
  69. //                        if(KEYx3_3_Gets())
  70. //                        {
  71. //                        zf=0;
  72. //                        LCD1602_ShowStr(6,1,"L");//LCD1602显示方向--左        
  73. //                        }
  74. //                        break;
  75. //                }
  76. //                case 3:        //模式3控制转动速度
  77. //                {
  78. //                        if(KEYx3_2_Gets())
  79. //                        {
  80. //                                speed++;                //加速度
  81. //                                delay_ms(5);
  82. //                                if(speed>6)
  83. //                                {
  84. //                                speed=1;
  85. //                                }
  86. //                        }
  87. //                        if(KEYx3_3_Gets())
  88. //                        {
  89. //                                speed--;           //减速度
  90. //                                delay_ms(5);
  91. //                                if(speed<1)
  92. //                                {
  93. //                                speed=6;
  94. //                                }
  95. //                        }
  96. //                break;
  97. //        }
  98. //                case 4:        //模式4控制启动/暂停
  99. //                {
  100. //                        if(KEYx3_3_Gets())
  101. //                        {
  102. //                        stop=~stop;        
  103. //                        }
  104. //                break;
  105. //                }
  106. //                default:
  107. //                {
  108. //                mode=0;
  109. //                break;
  110. //                }
  111. //        }
  112. //                LCD1602_ShowStr(0,0,"Angle:");//LCD1602显示名词
  113. //                LCD1602_ShowStr(0,1,"Direc:");
  114. //                LCD1602_ShowStr(10,0,"mode:");
  115. //                LCD1602_ShowStr(9,1,"speed:");
  116. //                LCD1602_SetsArea(0,0);
  117. //                LCD1602_Show_1_Numb(15,1,speed);//LCD1602显示速度
  118. //                LCD1602_Show_1_Numb(15,0,mode);//LCD1602显示模式
  119. //                Step_An(count);//转动角度
  120. //                t=count*0.703125+0.05;//角度转换               
  121. //                LCD1602_Show_3_Numb(6,0,t);  //LCD1602显示角度
  122. //        }               
  123. }
  124. ……………………

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

所有资料51hei提供下载:
Desktop.7z (346.04 KB, 下载次数: 99)

评分

参与人数 1黑币 +1 收起 理由
zjt00083 + 1 很给力!

查看全部评分

回复

使用道具 举报

ID:138443 发表于 2020-5-27 15:54 | 显示全部楼层
支持一下,谢谢了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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