找回密码
 立即注册
查看: 629|回复: 5

stc15设计

[复制链接]

3

主题

1

回帖

13

积分

新手上路

积分
13
发表于 2024-5-18 11:22:25 来自手机 | 显示全部楼层 |阅读模式
通过STC15IAPW4K58S4芯片输入0~9的数字控制pwm输出的脉冲数量控制步进电机驱动到对应的位置(在0~100毫米之内),需要如何设计代码?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:392
  • 最近打卡:2025-05-02 23:40:52

0

主题

336

回帖

1494

积分

金牌会员

积分
1494
发表于 2024-5-18 11:52:48 | 显示全部楼层
控制输出脉冲数量需要用到PWM吗
回复 支持 反对

使用道具 举报 送花

3

主题

1

回帖

13

积分

新手上路

积分
13
发表于 2024-5-18 11:58:01 来自手机 | 显示全部楼层
要吧,一个pwm波脉冲就驱动步进电机转18°
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-04 00:16:27
已绑定手机

19

主题

3191

回帖

4930

积分

论坛元老

积分
4930
发表于 2024-5-18 12:29:41 来自手机 | 显示全部楼层
知道前进1毫米要转多少圈不就知道了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:524
  • 最近打卡:2025-05-04 02:13:29

10

主题

1161

回帖

5133

积分

论坛元老

积分
5133
发表于 2024-5-18 20:52:05 | 显示全部楼层
本帖最后由 angmall 于 2024-5-18 20:59 编辑

给你个步进机作例程参考。

51单片机轻松入门--基于STC15W4K系列 第15章  步进电机测试.pdf

51单片机轻松入门--基于STC15W4K系列 第15章  步进电机测试.pdf




回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:524
  • 最近打卡:2025-05-04 02:13:29

10

主题

1161

回帖

5133

积分

论坛元老

积分
5133
发表于 2024-5-18 20:53:20 | 显示全部楼层
给你个参考例程。

  1. /****************《51单片机轻松入门-基于STC15W4K系列》配套例程 *************
  2. ★★★★★★★★★★★★★★★★★★★★★★★★
  3. 《51单片机轻松入门-基于STC15W4K系列》 一书已经由北航出版社正式出版发行。
  4.   作者亲手创作的与教材配套的51双核实验板(2个MCU)对程序下载、调试、仿真方便,不需要外部
  5.   仿真器与编程器,这种设计方式彻底解决了系统中多个最高优先级谁也不能让谁的中断竞争问题。
  6.   淘宝店地址:https://shop117387413.taobao.com
  7.   QQ群:STC51-STM32(3) :515624099 或 STC51-STM32(2):99794374。
  8.         验证信息:STC15单片机
  9.   邮箱:xgliyouquan@126.com
  10.   ★★★★★★★★★★★★★★★★★★★★★★★★*/
  11. // 程序功能:上电后顺转200步,然后反转200步,如此循环。
  12. // 使用P20、P21、P22、P23口驱动电机
  13. #include "STC15W4K.H "
  14. unsigned char code BiaoGe[8]={0x08,0x0C,0x04,0x06,0x02,0x03,0x01,0x09};
  15.                                         // 表格,换算成二进制 1000,1100,0100, 0110 ,0010,0011, 0001 1001
  16.                                         // P2口输出低4位驱动电机   A  B  /A  /B      
  17.                                         // 1——2相励磁,发8次脉冲(顺序输出上面表格)转动4步
  18. void delay3ms(void)
  19. {
  20.         unsigned char i,j,k;
  21.         for(i=1;i>0;i--)         // 注意后面没分号
  22.         for(j=65;j>0;j--)        // 注意后面没分号
  23.         for(k=254;k>0;k--);      // 注意后面有分号         
  24. }
  25. void delay1s(void)
  26. {
  27.    unsigned char i,j,k;
  28.    for(i=85;i>0;i--)        // 注意后面没分号
  29.    for(j=254;j>0;j--)       // 注意后面没分号
  30.    for(k=255;k>0;k--);      // 注意后面有分号
  31. }                                         
  32. void PROT_Init(void)
  33. {          
  34.         P2M1 = 0x80;     // 1000 0000   P2.0、P2.1、P2.2、P2.3、接驱动功率管,推挽输出
  35.         P2M0 = 0x0f;         // 0000 1111   P2.7 接接霍尔传感器信号输入,高阻输入
  36. }
  37. void shun200()                           // 顺转200步
  38. {
  39.         unsigned int i;
  40.         unsigned char n;
  41.         n=0;
  42.         for(i=0;i<400;i++)         // 200步,i/2为实际步数
  43.         {        
  44.                 P2=BiaoGe[n]|0xf0;           // 不影响P2口高4位               
  45.                 delay3ms();
  46.                 n=n+1;       
  47.                 if (n>7)
  48.                 {                           
  49.                 n=0;
  50.                 }                       
  51.         }
  52.         P2&=0xf0;                                          // 保证电机绕组断电
  53. }
  54. void fan200()                                          // 反转200步
  55. {
  56.         unsigned int i;
  57.         unsigned char n;
  58.         n=8;                       
  59.         for(i=0;i<400;i++)            // 200步,i/2为实际步数
  60.         {        
  61.             n=n-1;               
  62.                 P2=BiaoGe[n]|0xF0;              // 不影响P2口高4位                       
  63.                 delay3ms();
  64.                 if (n==0)
  65.                 {                            
  66.                 n=8;
  67.                 }                       
  68.         }
  69.         P2&=0xf0;                                          // 保证电机绕组断电        
  70. }
  71. void main(void)                                  
  72. {                   
  73.         PROT_Init();                      // 初始化端口       
  74.         while(1)
  75.         {
  76.                 shun200();
  77.                 delay1s();
  78.                 fan200();
  79.                 delay1s();
  80.         }       
  81. }
复制代码
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-4 10:25 , Processed in 0.199451 second(s), 83 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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