51单片机的红外遥控小车设计和制作的C语言程序

51单片机的红外遥控小车设计和制作的C语言程序,第1张

 论文摘要:本文介绍一款红外线遥控小车,以AT89S51单片机为核心控制器,用L289驱动直流电机工作,控制小车的运行。本御旁款小车具有红外线遥控手动驾驶、自动驾驶、寻迹前进等功能。本系统采用模块化设计,软件用C语言编写。转贴卜亩于 51论 文网 www.51lun-wen.cn一、设计任务和要求以AT98C51单片机为核心,制作一款红外遥控小车,小车具有自动驾驶,手动驾驶和循迹前进等功能。自动驾驶时,前进过程中可以避障。手动驾驶时,遥控控制小车前进、后退、左转、右转、加速等 *** 作。寻迹前进时小车还可以按照预先设计好的轨迹前进。转贴于 51论 文网 www.51lun-wen.cn二、系统组成及工作原理本系统由硬件和软件两部分组成。硬件部分主要完成红外编码信号的发射和接受、障碍物检测、轨迹检测、直流电机运行的发生等功能。软件主要完成信号的检测和处理镇弊橡、设备的驱动及控制等功能。AT89S51单片机查询红外信号并解码,查询各个检测部分输入的信号,并进行相应处理,包括电机的正反转,判断是否遇到障碍物,判断是否小车其那金中有出轨等。系统结构框图如图1所示。转贴于 51论 文网 www.51lun-wen.cn图1 系统结构框图三、主要硬件电路1、遥控发射器电路该电路的主要控制器件为遥控器芯片HT6221,如图2所示。HT6221将红外码调制成38KHZ的脉冲信号通过红外发射二极管发出红外编码。图2中D1是红外发射二极管,D2是按键指示灯,当有按键按下时D2点亮。

下面是一个使用Verilog实现小车红外寻迹功能的简单示例代码,其中假设小车的红外线传感器采用3个接口,编号分别为0、1、2,当红外线传感器检测到黑线时输出高电平乎孙,否则输出低电平。具体实现方法如下:

module infrared_track(

input wire clk,

input wire reset,

input wire [2:0] sensor,

output reg [1:0] direction

)

parameter LEFT = 2'b00

parameter STRAIGHT = 2'b01

parameter RIGHT = 2'b10

parameter STOP = 2'b11

always @ (posedge clk or posedge reset) begin

if (reset) begin

direction <= STRAIGHT// 初始状态小车直行

end

else begin

case (sensor)

3'b001: direction <= LEFT// 左转

3'b010: direction <= STRAIGHT// 直行

3'b100: direction <= RIGHT// 右转

default: direction <= STOP// 停止

endcase

end

end

endmodule

在此Verilog代码中,模块infrared_track包含4个端口,分别为clk(时钟信号)、reset(复位信号)、sensor(红外线传感器帆顷清信号)、direction(小车运动方向信号)。其中,sensor是一个3位宽度的输入端口,每一位表示一个红外线传感器的状态,direction是一个2位宽度的输出端口,表示小车运动的方向,其具体取值由LEFT、STRAIGHT、RIGHT和STOP4个宏常量定义。

在时钟信号的作用下,infrared_track模块将检测红外线传感器的状态,并根据检测结果输出小车的运动方向。具体实现方法是使用一个case语句对sensor输入进行分支判断,如果传感器检测到黑线,则态前根据不同的检测位置输出对应的小车运动方向。如果传感器没有检测到黑线,则停止小车运动。

以上是一个简单的Verilog实现小车红外寻迹功能的示例代码,具体实现方法可能因实际情况而异,需要根据具体的红外线传感器、控制器和小车硬件等因素进行相应的调整和优化。

ORG 000H

LJMP MAIN1

ORG 003H

LJMP INT0

ORG 030H

MIAN1:MOV P1,#0FFH

NOP

NOP

MOV P1,#00H

MOV P0,#0FFH

NOP

NOP

MOV P0,#00H

CLR 00H

CLR P1.0

CLR P2.1

CLR P2.3

CLR P2.2

SETB EA

SETB EX0

SETB EX1

SETB PX0

SJMP $

INTO:CPL OOH

JNB 00H ,KK

LJMP YAO

KK:LJMP XUNJI

RETI

YAO:MOV A,P1 遥控判断

ANL A,#0FH

MOV P1,A

CJNE A,#01H,NC1

LCALL ST

NC1:CJNE A,#02H,NC2

LCALL LEF2

NC2:CJNE A,#04H,NC3

LCALL RIG2

NC3:LJMP YAO

XUNJI:JNB P1.3,N1

LCALL ST

N1:JNB P1.2, N2

LCALL LEF1

N2:JNB P1.4,N3

LCALL RIG1

N3:JNB P1.0,N4

LCALL LEF2

N4:JNB P1.5,N5

LCALL RIG2

N5:LJMP XUNJI

ST:SETB P2.1

SETB P2.3

MOV R2,#可变驱动时虚凯间

LCALL DEL1

CLR P2.1

CLR P2.3

RET

LEF1:SETB P2.3

MOV R2,#

LCALL DEL1

CLR P2.3

RET

RIG1:SETB P2.1

MOV R2,#

LCALL DEL1

CLR P2.1

RET

LEF2:SETB P2.3

MOV R2,# 二级判断

LCALL DEL1

CLR P2.3

RET

RIG2:SETB P2.1

MOV R2,#

LCALL DEL1

CLR P2.1

RET

DEL1:MOV R3,#90 定州仿时约100ms,可精调

DD2:差迹唤MOV R4,#50

DD3,MOV R5,#10

DJNZ R5,$

DJNZ R4,DD3

DJNZ R3,DD2

DJNZ R2,DEL1

RET


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12424129.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存