历史上的今天
返回首页

历史上的今天

今天是:2026年01月31日(星期六)

2023年01月31日 | 基于51单片机实现红外控制系统控制电机调速

2023-01-31 来源:zhihu

具体功能实现

初始时,数码管上显示0,此时电机不转动;当按下红外遥控上的“1”时,数码管显示1,电机的转速加快;一共分为三个挡位,每升高一个挡位,数码管都会显示对应的挡位数字同时提高电机的转速。


器件:

AT89C52,8位数码管,红外遥控器,步进电机,扇叶,74HC138译码器,HS0038红外接收探头


红外调试前后图 :

调试前:

调节后

知识介绍 :HS0038红外探头

HS0038是一款红外接收探头,接收红外信号频率为38kHz,周期约26μs


红外遥控

红外遥控是利用红外光进行通信的设备,由红外LED将调制后的信号发出,由专用的红外接收头进行解调输出

通信方式:单工,异步

红外LED波长:940nm

通信协议标准:NEC标准


红外基本发送与接收

空闲状态:红外LED不亮,接收头输出高电平

发送低电平:红外LED以38KHz频率闪烁发光,接收头输出低电平

发送高电平:红外LED不亮,接收头输出高电平


红外NEC协议编码说明


空闲状态(state=0)代码:

if(IR_State==0) //状态0,空闲状态

{

Timer0_SetCounter(0); //定时计数器清0

Timer0_Run(1); //定时器启动

IR_State=1; //置状态为1

}

开始状态(state=1)代码:

if(IR_Time>12442-500 && IR_Time<12442+500)

{

IR_State=2; //置状态为2

}


repeat状态代码:

else if(IR_Time>10368-500 && IR_Time<10368+500)

{

IR_RepeatFlag=1; //置收到连发帧标志位为1

Timer0_Run(0); //定时器停止

IR_State=0; //置状态为0

}


接收存储数据代码:

//如果计时为1120us,则接收到了数据0

if(IR_Time>1032-500 && IR_Time<1032+500)

{

IR_Data[IR_pData/8]&=~(0x01<<(IR_pData%8)); //数据对应位清0

IR_pData++; //数据位置指针自增

}

//如果计时为2250us,则接收到了数据1

else if(IR_Time>2074-500 && IR_Time<2074+500)

{

IR_Data[IR_pData/8]|=(0x01<<(IR_pData%8)); //数据对应位置1

IR_pData++; //数据位置指针自增

}


外部中断:

STC89C52有4个外部中断;

STC89C52的外部中断有两种触发方式:

下降沿触发和低电平触发

下降沿触发:当按键按下不松手时只触发一次

低电平触发:当按键按下不松手时会持续触发

中断号:

PWM脉冲宽度调制定理

PWM(Pulse Width Modulation)即脉冲宽度调制,在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速、开关电源等领域

PWM重要参数:

频率 = 1 / TS 占空比 = TON / TS 精度 = 占空比变化步距



例子:在制作LED呼吸灯时,如果想要让LED亮的时间更长,只需要提高比较值。


直流电机简介

直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转。

直流电机主要由永磁体(定子)、线圈(转子)和换向器组成。

除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等。


主函数代码(C语言)KEIL5实现:

#include


#include "Delay.h"


#include "Key.h"


#include "Nixie.h"


#include "Motor.h"


#include "IR.h"


unsigned char Command,Speed;


void main()


{


Motor_Init();


IR_Init();


while(1)


{


if(IR_GetDataFlag()) //如果收到数据帧


{


Command=IR_GetCommand(); //获取遥控器命令码


if(Command==IR_0){Speed=0;} //根据遥控器命令码设置速度


if(Command==IR_1){Speed=1;}


if(Command==IR_2){Speed=2;}


if(Command==IR_3){Speed=3;}


     if(Speed==0){Motor_SetSpeed(0);} //速度输出


if(Speed==1){Motor_SetSpeed(50);}


if(Speed==2){Motor_SetSpeed(75);}


if(Speed==3){Motor_SetSpeed(100);}


}


Nixie(1,Speed); //数码管显示速度


}


}


问题解答:

Q:代码超出版本限制如何解决?如图:


A:用注册机对KEIL5软件进行重新破解,破解步骤链接:

Q:延时函数如何快速自动生成?

A:在STC-ISP中根据红色方框进行设计


Q:最后如何进行数据验证?

A:根据下面Data格式进行验证,代码如下:

if(IR_pData>=32) //如果接收到了32位数据

{

IR_pData=0; //数据位置指针清0

if((IR_Data[0]==~IR_Data[1]) && (IR_Data[2]==~IR_Data[3])) //数据验证

{

IR_Address=IR_Data[0]; //转存数据

IR_Command=IR_Data[2];

IR_DataFlag=1; //置收到连发帧标志位为1

}

Timer0_Run(0); //定时器停止

IR_State=0; //置状态为0

}

推荐阅读

史海拾趣

晶群科技(Gem-micro)公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐中不可或缺的重要设备。它作为连接电视机与外部信号源的桥梁,不仅实现了传统电视信号的接收与转换,还通过数字化和网络化技术,极大地丰富了用户的观看体验。

从功能上看,机顶盒主要分为数字机顶盒和网络机顶盒两大类。数字机顶盒主要实现数模转换功能,让用户在模拟电视机上也能观看数字电视,包括有线电视、卫星电视和地面广播电视等多种信号源。而网络机顶盒则更进一步,能够接入互联网,提供包括在线视频、流媒体服务、游戏等在内的多元化娱乐选择。

在技术层面,机顶盒不断升级,逐步向高清、超高清乃至更高级别的视频标准迈进。同时,智能化技术的应用,如语音助手、智能推荐等,使得机顶盒的操作更加便捷,用户体验更加优越。此外,随着云计算和边缘计算技术的发展,机顶盒在内容分发和管理上也变得更加高效。

综上所述,机顶盒以其强大的功能和不断升级的技术,成为现代家庭娱乐的重要组成部分。它不仅满足了用户日益多样化的观看需求,还通过技术创新不断提升用户体验,引领着家庭娱乐的未来发展方向。

安国国际(ALCOR)公司的发展小趣事

安国国际在创立初期便展现出强大的研发实力。1997年,公司成功推出了世界第一颗单一整合的USB键盘集线器控制IC,这一创新成果奠定了安国在IC专业设计领域的领导地位。随后,在1998年,安国将总部迁往台湾,以便为全球客户提供更及时的技术支持和服务,同时与晶圆代工厂紧密配合,确保产品质量和技术水平。

创基(CBI)公司的发展小趣事

面对日益激烈的国际竞争,CBI公司积极实施全球化战略,通过海外投资、并购等方式,不断扩大市场份额。同时,公司还注重本土化运营,根据不同地区的市场需求和消费者习惯,提供定制化的产品和服务。这一策略使CBI在全球范围内建立了完善的销售网络和售后服务体系,进一步巩固了市场地位。

BusBoard公司的发展小趣事

一个优秀的企业不仅要有优质的产品和服务,还要有独特的企业文化。BusBoard公司注重企业文化的建设和传承,通过举办各种活动、培训等方式,让员工更好地了解公司的价值观和发展理念。同时,公司还鼓励员工积极参与公司事务、提出建设性意见,让员工成为公司发展的重要力量。这种以人为本的企业文化使得BusBoard公司的员工队伍更加团结、稳定和有活力。

以上五个故事从不同角度展示了BusBoard公司发展起来的相关情况。这些故事不仅反映了公司的成长历程和发展成果,也体现了公司在电子行业中的地位和影响力。随着科技的不断进步和市场需求的不断变化,BusBoard公司将继续保持创新、拓展市场、提升品质、建设文化,为电子行业的发展贡献更多的力量。

Hilscher Gesellschaft für Systemautomation mbH公司的发展小趣事

面对市场的多元化需求,HVPSI不断扩展其产品线,从最初的高压电源模块拓展到高压直流电源、高压脉冲电源等多个领域。公司还投入大量资源研发新型材料和技术,以提升产品的性能和可靠性。这些努力使得HVPSI能够提供全方位的高压电源解决方案,满足不同行业、不同应用场景的需求。

GainSpan ( Telit)公司的发展小趣事

为了进一步提升技术实力和创新能力,风华高科于1998年成为全国36家扩大博士后试点企业之一,并建立起国家级首批博士后流动工作站。这一举措为公司吸引了大量高层次人才,为公司的技术研发和产品创新提供了有力支持。同时,公司还注重内部人才培养和团队建设,形成了一支高素质的研发和生产队伍。这些人才为公司的发展注入了源源不断的动力。

问答坊 | AI 解惑

请大侠,做555单相定量供电控制器电路

详细电路图及说明:http://circuit.eeworld.com.cn/view/1636/ 哪位能做出电路板啊,请留个言吧!…

查看全部问答>

如何产生负电压?

如何产生负电压? 1、电荷泵提供负压 TTL电平/232电平转换芯片(如,MAX232,MAX3391等)是最典型的电荷泵器件可以输出较低功率的负压。但有些LCD要求-24V的负偏压,则需要另外想办法。可用一片max232为LCD模块提供负偏压。TTL-in接高电平,RS232 ...…

查看全部问答>

“超小型”芯片制造新技术成本有望下降99%

据国外媒体报道,日立、东芝和奥林巴斯等30多家企业计划联合开发“超小型”芯片制造系统,可使芯片制造成本降低99%。     日本经济新闻报道,建立这样一套芯片生产线仅需要5亿日元,而当前的生产线则需要500亿日元(约合5.45亿美元)。建 ...…

查看全部问答>

如何从DM9000中获取MAC地址

1、DM9000中是否在出厂的时候就已经有一个MAC地址了 2、如果有,那么怎么获取到这个地址 3、如果没有,那么我有没有什么别的办法来每次生成一个不同的MAC地址…

查看全部问答>

wince 电源管理(控制面板)

各位英雄:      小弟在电源管理方面仍然有几个小问题,请教!      1、定制内核时,已经添加了Power Management(FULL)组件,且SYSGEN_PM也设置为1,可是下载后发现控制面板中没有“电源”选项,但是 ...…

查看全部问答>

小弟 想学ARM 请问ARM几 那个型号的比较适合初学者?

如题:小弟 想学ARM 请问ARM几 那个型号的比较适合初学者?…

查看全部问答>

求解DDKWINDOWINFO结构体

各位大侠 我在看WINCE驱动代码时看到DDKWINDOWINFO结构体,查看MSDN,但对其中的一个成员变量 DWORD dwNumIoWindows; 不知如何理解。MSDN上所说的Number of I/O windows中I/O windows是I/O窗口这个字面意思吗?还是有它解,盼哪位大侠能解我疑惑! ...…

查看全部问答>

我的LM3S8962是不是锁死了?

我试着用JLINK解锁还是不行,郁闷了,提示错误如下 哪位高手知道如何解锁,指导一下啊,我试了很多方法都不行,郁闷了!…

查看全部问答>

ARM汇编程序格式

(1):AREA  ARMEx, CODE , READONLY     CODE32     ENTRY     START     ...     END (2): .text        .global _start _start;这两种汇编格式的应用 ...…

查看全部问答>

恩智浦推出最高支持1.5A的突破性0.37mm超平封装肖特基整流器

新型无引脚DFN1608D-2封装采用独特的镀锡侧焊盘,既便于目视检查焊接,又利于优化PCB触点…

查看全部问答>