普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 4685|回复: 4

[已解决] 51单片机单核V5.5开发板程序

 关闭 [复制链接]

1

主题

4

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2019-12-31 12:50:21 | 显示全部楼层 |阅读模式
1金钱



程序该怎么写



最佳答案

有步进电机的例程 例程里while(1)内就是一个完整1圈循环倒过来就是逆时针  顺时针 逆时针做个if入口就可以了,加减速用定时器模拟PWM波输出 大小可以用开发板上AD模块上的电位器进行调节 把电位器控制的 ...

回复

使用道具 举报

1

主题

4

帖子

11

积分

新手上路

Rank: 1

积分
11
 楼主| 发表于 2019-12-31 12:52:01 | 显示全部楼层
设计要求:完成步进电机的驱动,实现电机顺时针旋转设计并通过LED的流动方向进行指示。
扩展设计:能够通过按键完成顺时针、反时针、加速、减速旋转设计。并显示转速(LED显示)。
回复

使用道具 举报

1

主题

4

帖子

11

积分

新手上路

Rank: 1

积分
11
 楼主| 发表于 2019-12-31 12:53:00 | 显示全部楼层
屏幕为LCD1602液晶显示器
回复

使用道具 举报

20

主题

216

帖子

1115

积分

金牌会员

Rank: 6Rank: 6

积分
1115
发表于 2019-12-31 13:52:25 | 显示全部楼层
有步进电机的例程 例程里while(1)内就是一个完整1圈循环倒过来就是逆时针  顺时针 逆时针做个if入口就可以了,加减速用定时器模拟PWM波输出 大小可以用开发板上AD模块上的电位器进行调节 把电位器控制的电压大小显示在LED上就可以作为速度直观的看出来了
回复

使用道具 举报

1

主题

4

帖子

11

积分

新手上路

Rank: 1

积分
11
 楼主| 发表于 2019-12-31 16:14:41 | 显示全部楼层
请问这个程序哪里控制步进电机的速度,怎么改将其增加和减小
#include <reg52.h>                       
sbit KEY_IN_1=P1^0;
sbit KEY_IN_2=P1^1;
sbit KEY_IN_3=P1^2;
sbit KEY_IN_4=P1^3;
sbit LED3=P1^4;
sbit LED4=P1^5;
sbit LED5=P1^6;

signed long beats=0;

void delay(unsigned char i)
{
        unsigned int j,k;
        for(j=i;j>0;j--)
                for(k=125;k>0;k--);
}

void StartMotor(signed long angle)
{
        EA=0;
        beats=(angle*4076)/360;
        EA=1;
}


void StopMotor()
{
        EA=0;
        beats=0;
        EA=1;
}

void main()
{
        int i=0;
        static bit dirMotor=0;
        EA=1;
        TMOD=0x01;
        TH0=0xFC;
        TL0=0x67;
        ET0=1;
        TR0=1;
        while(1){
                if(KEY_IN_1==0){
                delay(10);
                if(KEY_IN_1==0){
                        if(i==10)
                        i=0;
                        else
                        i++;
                        if((i>=0)&&(i<=9))
                        {
                        if(dirMotor==0)
                                StartMotor(360*i);
                        else
                                StartMotor(-360*i);
                                }
        }
}
        if(KEY_IN_2==0){
                delay(10);
                if(KEY_IN_2==0){
                        if(i==10)
                        i=0;
                        else
                        i++;
                        if((i>=0)&&(i<=9))
                        {
                        if(dirMotor==1)
                                StartMotor(360*i);
                        else
                                StartMotor(-360*i);
                                }  }}

if(KEY_IN_3==0){
        delay(10);
        if(KEY_IN_3==0){
                StopMotor();}}

               
                }}
void TurnMotor(){
unsigned char tmp;
static unsigned char index=0;
unsigned char code BeatCode[8]={0xE,0xC,0xD,0x9,0xB,0x3,0x7,0x6};
if(beats !=0)
{        if(beats>0)
{        index++;
        index=index & 0x07;
        beats--;
}
else
{
        index--;
        index=index & 0x07;
        beats++;
}
tmp=P0;
tmp=tmp & 0xF0;
tmp=tmp |~BeatCode[index];
P0=tmp;}
else{
        P0=P0 | 0x0F;}}
void IntreeuptTimer0() interrupt 1
{       
        static bit div=0;
        TH0=0xFC;
        TL0=0x67;
        div=~div;
        if(div==1){
                TurnMotor();
                }}
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-3 04:03 , Processed in 0.089014 second(s), 34 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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