c-步进电机不能连续转动,甚至停止不动,LCD数码管也不能显示,求大神帮助啊!!!

问题描述

步进电机不能连续转动,甚至停止不动,LCD数码管也不能显示,求大神帮助啊!!!
#include<reg51.h>
#include<intrins.h>
//?????í??????????
sbit PH1 = P1^0;
sbit PH2 = P1^1;
sbit I01 = P1^2;
sbit I11 = P1^3;
sbit I02 = P1^4;
sbit I12 = P1^5;
//°??ü???¨??
sbit LS138A=P2^5;
sbit LS138B=P2^6;
sbit LS138C=P2^7;
sbit K1 = P2^4;
sbit K2 = P2^3;
sbit K3 = P2^2;
sbit K4 = P2^1;
//????±???
unsigned char temp,Time,flag,hz;
unsigned int speed=0,show=0;
unsigned int LedOut[8];

unsigned char code Disp_Tab[17]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//0??1??2??3??4??5??6??7??8??9??A??b??C??d??E??F????????
//°??ü???±????
void delay10ms(unsigned char c)
{
    unsigned char a,b;
    for (; c>0; c--)
    {
         for (b=199;b>0;b--)
         {
                for(a=1;a>0;a--);
         }
    }

}
//???????±????
void delay(unsigned char t)
{
    unsigned char i,j;
    for(i=0;i<t;i++)
        for(j=0;j<110;j++);
}
//?¨?±?÷??????
void TimerConfiguration()
{
        TMOD = 0x01; //?è???¤×÷·???1
        TH0 = 0x3C;  //???±????
        TL0 = 0xB0;  //
        EA = 1;          //?ò??×?????
        ET0 = 1;         //?ò???ò???¨?±?÷
        TR0 = 1;         //?????¨?±?÷
}
//??????????????????
void display()
{  

         unsigned char i;

         LedOut[0]=Disp_Tab[show%10000/1000];
         LedOut[1]=Disp_Tab[show%1000/100];
         LedOut[2]=Disp_Tab[show%100/10]&0x7f;
         LedOut[3]=Disp_Tab[show%10];

     for( i=0; i<8; i++)
     {
            P0 = LedOut[i];
        switch(i)       //????
            {
            case 0:LS138A=0; LS138B=0; LS138C=0; break;
            case 1:LS138A=1; LS138B=0; LS138C=0; break;
            case 2:LS138A=0; LS138B=1; LS138C=0; break;
            case 3:LS138A=1; LS138B=1; LS138C=0; break;
            case 4:LS138A=0; LS138B=0; LS138C=1; break;
            case 5:LS138A=1; LS138B=0; LS138C=1; break;
            case 6:LS138A=0; LS138B=1; LS138C=1; break;
            case 7:LS138A=1; LS138B=1; LS138C=1; break;
            }

// j=150;
// while(j--);
P0=0x00;//????
}
}
//???ú???ò????????
void ForwardRun() //??????????·?????????????×?????7.5??
{
//A/
if(Time==2)
{
PH1 = 0;
I01 = 0;
I11 = 0;
PH2 = 0;
I02 = 1;
I12 = 1;
speed++;
}
//B
if(Time==4)
{
PH1 = 0;
I01 = 1;
I11 = 1;
PH2 = 1;
I02 = 0;
I12 = 0;
speed++;
}
//A
if(Time==6)
{
PH1 = 1;
I01 = 0;
I11 = 0;
PH2 = 1;
I02 = 1;
I12 = 1;
speed++;
}
//B/
if(Time==8)
{
PH1 = 1;
I01 = 1;
I11 = 1;
PH2 = 0;
I02 = 0;
I12 = 0;
speed++;
}
flag = 1;
}
//???ú·??ò????????
void BackRun()
{
//B/
if(Time==2)
{
PH1 = 1;
I01 = 1;
I11 = 1;
PH2 = 0;
I02 = 0;
I12 = 0;
speed++;
}
//A
if(Time==4)
{
PH1 = 1;
I01 = 0;
I11 = 0;
PH2 = 1;
I02 = 1;
I12 = 1;
speed++;
}
//B
if(Time==6)
{
PH1 = 0;
I01 = 1;
I11 = 1;
PH2 = 1;
I02 = 0;
I12 = 0;
speed++;
}
//A/
if(Time==8)
{
PH1 = 0;
I01 = 0;
I11 = 0;
PH2 = 0;
I02 = 1;
I12 = 1;
speed++;
}
flag = 0;
}
void main()
{
Time = 0;
TimerConfiguration();
while(1)
{
display();
if(Time==20)
{
show = (speed*7.5*60)/360;

                Time = 0;
                show = 0;
                speed = 0;
                    }
        if(K1==0)
        {
            delay10ms(1);
                if(K1==0)
                {
                    temp=1;
                }
        }
        if(K2==0)
        {
            delay10ms(1);
            if(K2==0)
            {
            temp=2;
            }
        }
        if(K3==0)
        {
            delay10ms(1);
            if(K3==0)
            {
                temp = 3;
            }
        }
        if(K4==0)
        {
            delay10ms(1);
            if(K3==0)
            {
                temp = 4;
            }
        }
        switch(temp)
        {
        case 1: ForwardRun();break;
        case 2: BackRun(); break;
        case 3:
                    if(flag == 1)
                    {
                        ForwardRun();
                    }
                    else
                    {
                        BackRun();
                    }
                    break;
        case 4:
                    if(flag == 1)
                    {
                        ForwardRun();
                    }
                    else
                    {
                        BackRun();
                    }
                    break;
        }
    }
}
void Timer0() interrupt 1
{
    TH0 = 0x3C;
    TL0 = 0xB0;

    Time++;

}

解决方案

请配合你的电路,单步调试。。。放在这里谁也看不懂。。。

时间: 2024-11-08 20:09:47

c-步进电机不能连续转动,甚至停止不动,LCD数码管也不能显示,求大神帮助啊!!!的相关文章

窗体-C#中如何添加FormClose事件 按了关闭,程序没有停止调试,求大神指导

问题描述 C#中如何添加FormClose事件 按了关闭,程序没有停止调试,求大神指导 刚开始学习C#窗体 做登录界面 在登录按钮设置了 连接一个成功提示,但是进去了按关闭的时候,窗体并没有停止运行,一直在调试,求该如何解决,希望大神们帮帮忙 private void button1_Click(object sender, EventArgs e) { if(textBox1.Text=="admin"&&textBox2.Text=="123")

求大神指点!!交作业急,C++银行管理系统,运行总是停止工作,是哪个代码不对吗?

问题描述 求大神指点!!交作业急,C++银行管理系统,运行总是停止工作,是哪个代码不对吗? #include #include #include #include using namespace std; class Count { private: int zhanghao; string name; int idcard; string password; double money; string address; int phone; string condition; public: f

停止ajax请求-ajax异步处理时,想要停止后台处理该如何实现,求大神帮忙

问题描述 ajax异步处理时,想要停止后台处理该如何实现,求大神帮忙 js中有个方法 $.ajax({ //一个异步的方法,且很耗时 url:..., ... async:true, success : function(data){ ? ?//todo:..... ?} }) 在这个方法被调用的时候,我点击一个按钮,想跳转到其他页面(window.location.href = ".../a.html"),但是页面一直无法跳转 请问,在跳转时该如何停止ajax的请求,直接跳到下一页?

手势移开停止滑动-求大神解答滑动屏幕切换图片,划多长时间就一直切换,手势移开了就停止滑动

问题描述 求大神解答滑动屏幕切换图片,划多长时间就一直切换,手势移开了就停止滑动 package com.exsample.clonn; import android.os.Bundle; import android.app.Activity; import android.view.GestureDetector; import android.view.GestureDetector.OnGestureListener; import android.view.Menu; import a

javascript-急JS编写的计算器 如何实现 连续加减乘除四则运算 求大神指点 急帮我再看看小数点的问题

问题描述 急JS编写的计算器 如何实现 连续加减乘除四则运算 求大神指点 急帮我再看看小数点的问题 <html> <head> <title>JiSuanQi</title> <!-- 移动层外部JS文件 --> <script src="src/js/yidong.js"></script> <link rel="stylesheet" href="src/css/

js-!急JS编写的计算器 如何实现 连续加减乘除四则运算 求大神指点 急帮我再看看小数点的问题

问题描述 !急JS编写的计算器 如何实现 连续加减乘除四则运算 求大神指点 急帮我再看看小数点的问题 var oper = "" var isClickOper = false//是否点击了运算符 var num = 0; var isClickPoint = false;//是否点击了小数点 //输入数字 function addNum(n){ var nowNum = myform.num.value; if(nowNum == "0"||isClickOper

javascript-JS编写的计算器 如何实现 连续加减乘除四则运算 求大神指点 急帮我再看看小数点的问题

问题描述 JS编写的计算器 如何实现 连续加减乘除四则运算 求大神指点 急帮我再看看小数点的问题 <html> <head> <title>JiSuanQi</title> <!-- 移动层外部JS文件 --> <script src="src/js/yidong.js"></script> <script> var oper = "" var isClickOper =

xampp中的mysql运行七八秒后突然停止工作,如图,应该如何操作?求大神解答!

问题描述 xampp中的mysql运行七八秒后突然停止工作,如图,应该如何操作?求大神解答! 解决方案 这是对应的日志文件

新手 问题 错误-为什么一运行.,exe就停止工作啊?代码如下,求大神赐教

问题描述 为什么一运行.,exe就停止工作啊?代码如下,求大神赐教 #include #include using namespace std; float x; float fun(int n) { int i; float P,t=1,a1,a2,Pn; srand((unsigned)time(NULL)); for(i=0;i<=n;i++) if(n=0) t=1; else t=t*x; a1=rand()%10; P=a1*t; a2=rand()%10; Pn=x*fun(n-1