历史上的今天
返回首页

历史上的今天

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

正在发生

2020年02月06日 | 按键控制电动机的速度和转向

2020-02-06 来源:51hei

按键控制电动机的速度和转向

源程序:

#include

#define uchar unsigned char

#define uint unsigned int  

#define ulong unsigned long

#define CLK_WISE 0//顺时针方向转动

#define INVERSE 1//逆时针方向转动

#define HIGH 2//高电平

#define LOW 1//低电平

#define NULL 0//低电平

sbit CTRL0=P2^0;//CTRL0为高电平,CTRL1为低电平时顺时针方向转动

sbit CTRL1=P2^1;//CTRL0为低电平,CTRL1为高电平时逆时针方向转动

uchar levelflag=0;//高低电平标志,取值为HIGH或LOW,分别代表高电平和低电平,或为NULL

bit direction=CLK_WISE;/***方向标志,取值为CLK_WISE 或INVERSE*/

static uchar speedcount=0;//加速标志,越大转速越快,最大到10,然后回归到0,循环。

                                                //程序中可以依据它来改变占空比

uchar highcount;        //记录高电平定时次数


/***定时器t0***/

void time0(void) interrupt 1 using 1

{        

        TH0=0xff;

        TL0=0xCE;

        highcount++;//记录一出次数


        //频率为固定的2kHZ左右,只是占空比发生变化

        if(highcount<=speedcount)

                levelflag=HIGH;//高电平次数

        if((highcount>speedcount)&&(highcount<=10))

                levelflag=LOW;//低电平次数        

        if(highcount==10) //最大为10,然后从0开始循环。

                highcount=0;

        

}


/****改变转向标志*****/

void int1_srv (void) interrupt 2 using 2

{

        if(INT1==0)

        {

                while(!INT1);

                 direction=!direction;

        }

}


/*******中断,调节占空比********/

void change(void) interrupt 0 using 0

{

        if(INT0==0)

        {

                while(!INT0);

                 speedcount++;//记录加速次数                

                if(speedcount>10)

                        speedcount=0;//最大为10,然后从0开始循环。

        }

}


/****延时****/

void delay(uchar i)

{

        while(i--)

                ;

}


/*****改变转向*****/

void run(void)

{

        if(direction==CLK_WISE)        //顺时针转

        {

                CTRL1=0;

                if(levelflag==HIGH)//高电平

                {

                        levelflag=NULL;

                        CTRL0=1;

                }

                if(levelflag==LOW)//低电平

                {

                        levelflag=NULL;

                        CTRL0=0;

                }

        }

        if(direction==INVERSE)        //逆时针转

        {

                CTRL0=0;

                if(levelflag==HIGH)//高电平

                {

                        levelflag=NULL;

                        CTRL1=1;

                }

                if(levelflag==LOW)//低电平

                {

                        levelflag=NULL;

                        CTRL1=0;

                }

        }

        

}

void main()

{        

        EA=1;

        TMOD=0x01;

        ET0=1;//定时器0初始化

        TR0=1;


        EX0=1;

        IT0=1;//外部中断0


        EX1=1;

        IT1=1;//外部中断1


        TH0=0xff;

        TL0=0xCE;//定时器0初始值


        while(1)

        {

                run();

        }

}

推荐阅读

史海拾趣

DeLorme公司的发展小趣事

近年来,随着智能手机和移动互联网技术的快速发展,传统的GPS导航设备市场受到了巨大冲击。面对这一行业变革,DeLorme公司及时调整战略方向,将重心转向智能导航应用软件的开发和推广。他们通过与智能手机厂商的合作,将自己的导航软件集成到手机系统中,为用户提供更加便捷、高效的导航服务。同时,他们还积极探索新的商业模式和市场机会,为公司的未来发展奠定了坚实基础。

Delta Electronics公司的发展小趣事

作为一家具有社会责任感的企业,Delta Electronics一直积极践行可持续发展理念。公司自2004年起,全球新建办公大楼、生产基地均依绿建筑工法设计建造。此外,公司还积极参与各类环保活动和社会公益事业,推动绿色能源和环保技术的发展。这些举措不仅有助于保护环境、减少污染,也提升了Delta的企业形象和品牌价值。

American Power Management Inc公司的发展小趣事

为了进一步提升竞争力,APMI开始实施国际化发展战略。公司积极开拓海外市场,与国际知名电子制造商建立合作关系。同时,APMI还加强了与国际同行的技术交流与合作,吸收借鉴先进的管理经验和技术成果。通过国际化发展,APMI不仅拓宽了市场渠道,还提升了公司的国际影响力。

ADTech公司的发展小趣事

AdTech公司在成立之初,以其完整的传统半导体器件工艺在通信、激光医疗和激光防卫领域获得了广泛认可。然而,随着技术的不断进步和市场的变化,公司管理层意识到需要转型以维持竞争优势。2008年,经过三年的技术储备,AdTech决定将原有的光电探测器业务剥离,转而专注于量子级联激光器(QCL)的研发和生产。这一决策使公司能够专注于前沿技术,逐渐在QCL领域建立了领先地位,成为美国各大QCL激光设备的核心供应商。

艾吉芯(Agertech)公司的发展小趣事

在追求经济效益的同时,艾吉芯公司也积极履行社会责任。公司注重环境保护和可持续发展,通过采用环保材料和节能技术,降低生产过程中的能耗和排放。此外,艾吉芯还积极参与社会公益事业,为社会的和谐发展贡献自己的力量。

这些故事虽然基于推测和构建,但尽可能地反映了电子行业中企业发展的普遍规律和趋势。艾吉芯公司作为电子行业的一员,其发展历程也必然离不开这些方面的努力和探索。当然,具体的发展故事还需要根据艾吉芯公司的实际情况进行深入了解和研究。

Hirel Systems Ltd公司的发展小趣事

在电子行业的快速发展中,艾吉芯公司凭借其在半导体芯片研发领域的深厚积累,成功推出了一系列高性能的半导体分立器件。这些产品不仅满足了市场对功率半导体的高效、稳定需求,更在技术创新方面取得了显著突破。艾吉芯公司通过持续的研发投入和严格的生产质量控制,确保了产品的可靠性和竞争力,逐渐在市场中树立起了良好的口碑。

问答坊 | AI 解惑

CPLD与单片机怎样连接

讨论一下: CPLD与单片机怎样连接?请大家知无不言,言无不尽,言者无罪!…

查看全部问答>

由婴儿学语想到的

我们学习语言,通常的方式是有达人将陌生的语言与我们所熟知的语言做一一对应,我们学一句,心理默默想着翻译过来如何理解。 如此方法,我们寒来暑往,不知花费了多少日日夜夜,外语不过学得一知半解,老外说快点,遍难以听懂了。 而另一方面呢, ...…

查看全部问答>

初学者的一个计数问题

本来是想要显示从000到999的 可是到99后 数字跳到A0了..而不是100...帮我看看哪里出问题了阿...谢谢~~~ inc     R3                     cjne R3,#0aH,ch ...…

查看全部问答>

新英蓓特em-stm3210e 开发板换个合适的板子来玩玩

想用新英蓓特em-stm3210e 开发板换个合适的板子来玩玩,10年1月份买的,由于一时热血想学STM32开发来着,我不是专业的,半路出家的就是不行,准备工作做了不少,后来放弃了,手中还有一块ULINK2仿真器,当时一起买来的,就点过一次,所有配件全在, ...…

查看全部问答>

易电源试用三 易电源模块与同类电源产品的比较测试(已完成)

模块的基本测试实验前面的坛友们已经做得很多了,我就不重复做了,我只想从我的具体项目出发做几个测试,目前我的产品用得比较多的电源模块包括金升阳的K7805,LM2596自己做的模块,还有TI自家的TPS54331,我也不知道这样比较对不对,我只是想从我 ...…

查看全部问答>

HCS12 超过16K的数组,如何处理?

硬件平台:MC9S12HZ256 开发环境: CODEWARRIOR V5.0 最近的应用中有1个100K字节的大数组,我该如何解决16K分页不连续的问题呢? 难道要将这个数组,分解成多个16K的数组,然后在程序上进行判断处理? 有没有好的解决办法呢? 谢谢!…

查看全部问答>