历史上的今天
返回首页

历史上的今天

今天是:2025年02月20日(星期四)

正在发生

2020年02月20日 | 42步进电机控制单片机程序

2020-02-20 来源:51hei

下面是仿真图:

/****************************************Copyright (c)**************************************************                            

**                                     

** -----------------------------------------------------------------------------------------------------

** File Name    : 

** Version      : V1.0.0

** Description  :                                 

* 【外部晶振】: 11.0592mhz        

* 【主控芯片】: STC89C52

* 【编译环境】: Keil μVisio4        

* 【程序功能】:                                                                                                    

* 【使用说明】: 

** -----------------------------------------------------------------------------------------------------

** Author       : Creavalia

** Date         : 2016年10月19日

** -----------------------------------------------------------------------------------------------------

** Modify Person:

** Modify Date  :

** Description  :

*********************************************************************************************************/

// Includes --------------------------------------------------------------------------------------------

#include 

/********************************************************************************************************

**                         Marcos define

*********************************************************************************************************/

#define MotorTabNum 5

unsigned char T0_NUM;

//IO设置

sbit K1 = P3^5;        // 启动

sbit K2 = P3^4;        // 反向

sbit K3 = P3^3;        // 加速

sbit K4 = P3^2;        // 减速


sbit FX      = P2^4;     // 方向

sbit MotorEn = P2^5;     // 使能

sbit CLK     = P2^6;     // 脉冲


//----数码管---------------

sbit SMG1 = P2^0;                                        //数码管第一位定义

sbit SMG2 = P2^1;                                        //数码管第二位定义

sbit SMG3 = P2^2;                                        //数码管第三位定义

sbit SMG4 = P2^3;                                        //数码管第四位定义


int table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};           //共阴极数码管段值

//int table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,};           //共阳极数码管段值



unsigned char g_MotorSt = 0;     // 启停

unsigned char g_MotorDir = 0;    // 正反


//unsigned char MotorTab[6] = {200, 160, 120, 80, 40, 20};

unsigned char MotorTab[6] = {12, 10, 8, 6, 4, 2};

//unsigned char MotorTab[6] = {6, 5, 4, 3, 2, 1};


signed char g_MotorNum = 0;


//--------------

void delayms(xms);

void mDelay(unsigned int DelayTime);                //延时函数

void T0_Init();


void KeyScan(void);

void Display(void);



// 主程序  main()

void main(void)

{

        unsigned char i;

        T0_Init();             // 定时器0 初始化

        MotorEn = 0;     // L297 使能(只有智能,才能正常工作,否则停止)

        FX = 0;

        while(1)

        {

                KeyScan();              // 按键

                for(i=0; i<10; i++)

                Display();

        }


}


/********定时器初始化***********************************************************/

void T0_Init()

{

        TMOD = 0x01;

        TH0 = (65535-100)/256;  // 1ms

        TL0 = (65535-100)%256;

        EA = 1;

        ET0 = 1;

//        TR0 = 1; 


}


/********定时器中断*****************/

void T0_time() interrupt 1

{

//        TR0 = 0;

        TH0 = (65535-100)/256;   

        TL0 = (65535-100)%256;

        T0_NUM++;

        if(T0_NUM >= MotorTab[g_MotorNum])        // 增加按键g_MotorNum++   减小按键g_MotorNum--

        {

                T0_NUM = 0;

                CLK=CLK^0x01;               //   输出脉冲

        }

//        TR0 = 1;

}         



//-----按键控制---------------------

void KeyScan(void)

{

        if(K1 == 0)

        {

                delayms(5);   // 软件延时消抖

                if(K1 == 0)

                {

                        while(!K1){Display();}; 

                        g_MotorSt = g_MotorSt ^ 0x01;

                        MotorEn ^= 1;

                        TR0 = 1; 

                }

        }


        if(K2 == 0)

        {

                delayms(10);   // 软件延时消抖

                if(K2 == 0)

                {

                //        while(!K2){Display();};        

                        g_MotorDir = g_MotorDir ^ 0x01;

                        FX ^= 1;

                        while(!K2){Display();};        

                }

        }


        if(K3 == 0)  // 加速

        {

                delayms(5);   // 软件延时消抖

                if(K3 == 0)

                {

                        while(!K3){Display();};        

                        g_MotorNum++;

                        if(g_MotorNum > MotorTabNum)

                                g_MotorNum = MotorTabNum;

                }

        }


        if(K4 == 0)  // 减速

        {

                delayms(5);   // 软件延时消抖

                if(K4 == 0)

                {

                        while(!K4){Display();};        

                        g_MotorNum--;

                        if(g_MotorNum < 0)

                                g_MotorNum = 0;

                }

        }



}



/******************************************************************************

* 名称: Set_Display()

* 功能: 数码管显示函数

* 输入: 无

* 输出: 无

* 说明:

******************************************************************************/

void Display(void)

        unsigned char b1, b2;

        b1=g_MotorNum/10;                

    b2=g_MotorNum%10;

        if(FX == 0)

                P0=0x71;//显示F

    else

                P0=0x79;

        SMG1=0;                                                         

    delayms(3);

    SMG1=1;


        P0=0x40;

    SMG2=0;                                                         //显示--

推荐阅读

史海拾趣

Aeroflex Metelics / Hi-Rel Components公司的发展小趣事

Aeroflex Metelics / Hi-Rel Components是一家专注于高可靠性电子组件的制造商,为航空航天、国防、医疗和工业等领域提供高性能的组件和解决方案。以下是该公司发展的五个相关故事:

  1. 公司成立和早期发展: Aeroflex Metelics / Hi-Rel Components的历史可以追溯到1960年代初,当时该公司作为Metelics的一部分,成立于美国马萨诸塞州的劳伦斯市。最初,公司主要生产用于微波和射频应用的二极管和其他电子元件,为国防和航空航天等行业提供关键的部件。

  2. 技术创新和产品多样化: Aeroflex Metelics / Hi-Rel Components致力于技术创新和产品多样化,不断推出符合行业标准和客户需求的新产品。公司的产品范围逐渐扩展,包括功率放大器、混频器、开关和整流器等,涵盖了广泛的应用领域。

  3. 质量管理和认证: 为确保产品质量和可靠性,Aeroflex Metelics / Hi-Rel Components严格执行质量管理体系,并获得了多项国际认证,如ISO 9001和AS9100。公司在生产过程中采用先进的工艺和测试技术,确保产品符合客户的高要求和严格标准。

  4. 全球供应链和市场拓展: 随着业务规模的扩大和市场需求的增长,Aeroflex Metelics / Hi-Rel Components不断优化全球供应链,并在美国和其他地区建立了多个生产基地和销售办事处。公司通过广泛的销售网络和服务体系,加强了对客户的支持和服务,并开拓了新的市场领域。

  5. 成为行业领先供应商: 多年来,Aeroflex Metelics / Hi-Rel Components凭借其卓越的技术、丰富的经验和优质的产品,成为航空航天、国防和医疗等行业的重要供应商之一。公司在高可靠性电子组件领域的领先地位得到了进一步巩固,为客户提供了高品质、可靠的解决方案,赢得了良好的声誉和市场地位。

AW Industries Inc公司的发展小趣事

随着市场竞争的加剧,AW Industries Inc意识到只有不断创新才能在行业中立足。公司加大了对研发的投入,并成功研发出了一款具有革命性的新型电子元件。这款元件不仅性能卓越,而且成本更低,迅速在市场上占据了主导地位。这一创新成果不仅为公司带来了丰厚的利润,也奠定了其在电子行业的领先地位。

Active-Semi公司的发展小趣事

在国内市场取得成功后,AW Industries Inc开始寻求国际化发展。公司首先选择了几个具有潜力的海外市场进行拓展,并通过与当地企业合作、建立销售网络等方式逐步打开市场。随着国际化战略的深入实施,公司的业务范围不断扩大,国际市场份额也逐步增加。

Arima Lasers Corp公司的发展小趣事

在激烈的市场竞争中,Arima Lasers Corp始终保持着创新的步伐。公司不断投入研发资源,探索激光技术在各个领域的应用潜力。其中,一项关于激光通信技术的创新项目引起了业界的广泛关注。这项技术利用激光束进行高速数据传输,具有传输速率快、安全性高等优点。随着该技术的商业化应用,Arima Lasers Corp在通信领域取得了重大突破,引领了市场变革的潮流。

迪一电子公司的发展小趣事

随着市场的不断变化和技术的快速发展,迪一电子公司意识到必须不断创新才能保持竞争力。于是,公司加大研发投入,引进高端技术人才,与国内外知名科研机构合作,成功研发出一系列具有竞争力的新产品。这些新产品不仅提高了公司的市场占有率,还为公司赢得了良好的口碑。

屹晶微(EG)公司的发展小趣事

屹晶微的创始人黄米龙,原本在发电厂从事电气运营工作长达八年。这段经历让他对电子领域有了深入的了解和浓厚的兴趣。然而,他并没有满足于现状,而是看到了中国芯片产业的巨大潜力和发展空间。于是,在2007年,他毅然决定从发电厂辞职,利用自己的积蓄和借来的资金,在台州创立了屹晶微电子有限公司。

在创立初期,屹晶微面临着资金短缺、技术落后和市场竞争激烈的困境。但黄米龙凭借对电子行业的深刻理解和坚定的信念,带领团队克服了种种困难。他们不断引进先进技术和设备,加强研发力量,提升产品质量。经过几年的努力,屹晶微逐渐在芯片设计领域崭露头角,并成功推出了多款具有自主知识产权的芯片产品。

问答坊 | AI 解惑

DXP 2004 操作word形式,带图形解释

DXP 2004  操作word形式,带图形解释…

查看全部问答>

求好一点的电子基础知识资料

求大家给一份好一点的电子基础知识的资料吧!好难找一些这方面的东西…

查看全部问答>

内核定制去除了gews,ActiveSync同步不上了

先前的是可以同步的,后来我把gews删除了,因为也要涉及到ActiveSync,也一起删除了,然后就同步不了了。于是我有把ActiveSync重新加回来,再编译内核,也是不能同步了。串口在USB插入以后显示如下: 11:20:15.578 GET_DESCRIPTOR:DEVICE 0x12, 0x ...…

查看全部问答>

ADS中由汇编程序转到C程序的问题

我用的周立功EasyARM2100开发板附带有工程模板,当新建工程选择LPC2100时会自动生成很多初始化的文件,其中startup.s文件中有这样一段语句: ;The imported labels ;引入的外部标号在这声明     IMPORT  FIQ_Exception  ...…

查看全部问答>

编译bootloader

我已修改demo板上自带的bootloader,但我不知道怎么编译成.bin文件呢,请教一下,谢谢…

查看全部问答>

跪求ISD1720语音芯片下载软件

大家好,我现在缺一个ISD1720的下载软件,我有一个ISD的拷贝机,想把MP3的语音格式的文件下到ISD1720语音芯片里面,但是现在缺少软件从电脑上下载到语音芯片里面,如果谁有,麻烦请您发下给我,谢谢您了!我的邮箱是:lijianhuijgsdx@163.com  ...…

查看全部问答>

六大主流技术标准规格认证徽标详解

关键字: 技术标准  技术标准化  认证   伴随着科技的不断进步发展,更多新颖的技术与随之而来的标准规范相应而生。之前我们已经专文谈论过技术标准化(Technology Standardization)的重要性,技术标准化不仅在产 ...…

查看全部问答>

关于msp430PWM驱动LED程序问题?

/******************************************************* 程序功能:用从P2.3和P2.4输出的PWM波形驱动LED闪烁           P2.3口输出方波的占空比为75%           P2.4口输出方 ...…

查看全部问答>

新人求助 有没有高手帮我看下这个题啊

本人刚学dsp Fs=10000; x=wavrecord(2*Fs,Fs,\'int16\'); y=double(x); soundsc(y,Fs) n=0:length(y)-1; plot(n,x) 这个程序怎么改能变成这几个图形 …

查看全部问答>

USB供电经IC电路对手机电池充电可行么?求大神

USB供电经IC电路对手机电池充电可行么?求大神…

查看全部问答>