基于-STC89C51单片机的智能化超声波避障小车

合集下载

基于51单片机的避障小车设计

基于51单片机的避障小车设计

单片机原理及系统课程设计专业:班级:姓名:学号:指导教师:基于单片机的避障小车设计1 引言本课程设计以AT89C51单片机为核心,完成了一辆利用超声波传感器来实现避障功能的小车,使小车对其运动方向受到的阻碍作出躲避动作。

本次设计主要研究小车的避障功能,当距离障碍物大于30cm时,小车前进;当距离障碍物小于20cm时,小车停止,舵机分别旋转到前、左、右三向,从而使超声波模块进行测距,并且小车采取相应的避障措施。

2 整体设计方案及原理2.1 总体设计方案本系统选用AT89C51单片机为主控机。

通过扩展必要的外围接口电路,实现对避障小车的设计,具体设计如下:(1)由于小车要进行测距,为了得到较好的避障效果和较精确的距离信息,经综合分析后,决定采用超声波模块进行非接触型测距。

避障小车与障碍物之间的实际距离通过数码管进行显示。

(2)避障小车采用差速方式控制行进方向,通过四个直流电机控制四轮旋转,并采用L298N双H桥直流电机驱动芯片控制直流电机正反转。

(3)超声波模块分别检测前方、左侧及右侧与障碍物之间的距离,因此需要采用舵机进行旋转完成超声波模块三向测距。

2.2 系统组成框图系统模块图如图1所示。

51单片机驱动模块直流电机超声波、舵机组合测距数码管显示图1 系统模块图3 硬件设计本设计选用AT89C51单片机为主控单元;驱动部分:采用L298N双H桥直流电机驱动模块;测距避障部分:采用US100超声波传感器模块;此外,还采用SG90舵机,实现超声波模块方向的变化。

该系统整体电路原理图如附图1所示。

3.1 电机驱动模块本次课程设计采用L298N双H桥直流电机驱动模块,采用SGS公司原装全新的L298N芯片,内部包含4通道逻辑驱动电路,可以直接驱动两路3-16V直流电机,并提供了5V输出接口(输入最低只要6V),可以给5V单片机电路系统供电(低纹波系数),是智能小车电机驱动的必备利器。

L298N芯片是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。

基于89C51单片机小车超声波测距毕业设计打印版

基于89C51单片机小车超声波测距毕业设计打印版

摘要89C51单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。

本系统以设计题目的要求为目的,采用89C51单片机为控制核心,利用超声波检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。

整个系统的电路结构简单,可靠性能高。

采用的技术主要有:(1)通过编程来控制小车的速度;(2)传感器的有效应用;(3)新型显示芯片的采用;关键词89C51单片机、光电检测器、PWM调速、电动小车Design and create an intelligence electricity motive small carAbstract89C51 is a 8 bit single chip computer.Its easily useing and multi-function suffer large users. This article introduce the CCUT graduation design with the 89C51 single chip copmuter.This design combines with scientific research object. This system regard the request of the topic, adopting 89C51 for controling core,super sonic sensor for test the hinder.It can run in a high and a low speed or stop automatically.It also can record the time ,distance and the speed or searching light and mark automatically The electric circuit construction of whole system is simple, the function is dependable. Experiment test result satisfy the request, this text emphasizes introduced the hardware system designs and the result analyse.The adoption of technique as:(1)Reduce the speed by program the engine;(2)efficient application of the sensor;(3)The adoption of the new display chip.Keywords89C51 single chip computer、light electricity detector、PWM speed adjusting目录1引言 (1)2系统的总体设计方案 (2)2.1直流调速系统的设计 (2)2.2小车检测系统的设计 (3)2.2.1行车起始、终点及光线检测 (3)2.2.2行车距离检测 (6)图2.4 行车距离检测电路 (6)2.3显示电路 (7)2.4系统原理图 (7)3 硬件设计 (8)3.1单片机89C51硬件结构 (8)3.2最小应用系统设计 (10)3.3前向通道设计 (12)3.3.1传感器的选择 (12)3.3.2单片机测距原理 (12)3.3.3超声波发射电路 (13)3.3.4 超声波检测接收电路 (13)3.3.5超声波测距仪的算法设计 (14)3.4后向通道设计 (14)3.4.1脉宽调制原理: (16)3.4.2逻辑延时环节: (17)3.4.3 电源的设计 (17)3.5显示电路设计 (17)4 软件设计 (19)4.1主程序设计 (20)4.2显示子程序设计 (23)4.3避障子程序设计 (24)4.4软件抗干扰技术 (25)4.4.1数字滤波技术: (25)4.4.2开关量的软件抗干扰技术: (25)4.4.3指令冗余技术: (26)4.4.4软件陷阱技术: (26)4.5“看门狗”技术 (27)4.6可编程逻辑器件 (28)5结论 (29)致谢 (30)参考文献 (31)附录A 程序清单 (32)附录B 硬件原理图 (40)1引言随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。

(word完整版)基于STC89C51单片机的智能超声波避障小车

(word完整版)基于STC89C51单片机的智能超声波避障小车

基于STC89C52单片机的智能超声波避障小车参赛人员:周志强王俊朱纪伟聂孟杰班级:2012级自动化3班日期:2015年3月一、方案概述本小车使用一台 AT89C52 单片机作为主控芯片,它通过超声波测距来获取小车距离障碍物的距离,并且用液晶显示器实时的显示出来,在小车与障碍物的距离小于安全距离(40cm ) 时,小车上蜂鸣器会发出警报声,并且后退并拐弯,同时通过LCD1602显示器显示出小车与障碍物之间的距离,精确到0。

1cm. 在避开障碍物后,小车会沿直线前进。

本系统设计的简易智能小车分为几个模块:单片机控制系统、LCD1602显示器。

超声波路面检测系统、前进、 转弯控制电机以及方向指示灯系统。

它们之间的相互关系如下图所示.智能小车简要原理框架图二﹑总体电路原理图超声波模块三、主要模块基本原理(1)超声波模块超声波时序图以上时序图表明你只需要提供一个10uS以上脉冲触发信号,该模块内部将发出8个40kHz 周期电平并检测回波.一旦检测到回波信号则输出回响信号。

回响信号的脉冲宽度与所测的距离成正比.由此通过发射信号到收到的回响信号时间间隔可以计算得到距离.公式:距离=高电平时间*声速(340M/S)/2.(2)液晶显示模块16 脚接口,其中GND 为电源地,VCC 接5V正电源,VEE ,可调电阻调到最大时对比度最弱,可调电阻调到零时对比度最高令寄存器。

RW ,低电平时进行写操作.当RS 和RW 共同为RS 为低电平RW 为高电平时可以读忙信号,当RS 为高电平RW E 端由低电平跳变成高电平时,液晶屏执行命令。

DB0——DB7 为8 .源程序#include 〈at89x51#include ”#define TX P2_1#define RX P2_0sbit DU = P2^6;sbit WE = P2^7;#是100,100,最大的时候最快#define Forward_R_DATA 180 //例如小车前进的时候有点向左拐,说明右边马达转速过快,那可以取一个值大一点,另外一个值小一点,例如 200 190//直流电机因为制造上的误差,同一个脉宽下也不一定速度一致的,需要自己手动调节//sbit P4_0=0xc0;//P4口地址/*****按照原图接线定义******/sbit L293D_IN1=P1^2;sbit L293D_IN2=P1^3;sbit L293D_IN3=P1^6;sbit L293D_IN4=P1^7;sbit L293D_EN1=P1^4;sbit L293D_EN2=P1^5;sbit BUZZ=P2^3;//蜂鸣器void cmg88()//关数码管,点阵函数{DU=1;P0=0X00;DU=0;}void Delay400Ms(void);//延时400毫秒函数unsigned char code Range[] =”==Range Finder==";//LCD1602显示格式unsigned char code ASCII[13] = "0123456789.-M";unsigned char code table[]=”Distance:000。

基于51单片机的超声波避障智能车

基于51单片机的超声波避障智能车

置为 0-180 度,呈线性变化,即舵机控制是需要周期七 20ms 的方波信号,改变脉冲占空比, 即可改变转动角度。
3.4 超声波 超声波测距是借助于超声脉冲回波渡越时间法来实现的。 设超声波脉冲由传感器发出到接收 所经历的时间为 t,超声波在空气中的传播速度为 c,则从传感器到目标物体的距离 D 可用 下式求出: D = ct /2 单 片 机 系 统 超声波发射
控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系列齿 轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘 转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板, 进行反馈,然后控制电路板根据所在位置决定电机转动的方向和速度,从而达到 目标停止。其工作流程为:控制信号→控制电路板→电机转动→齿轮组减速→舵 盘转动→位置反馈电位计→控制电路板反馈。 舵机的控制信号周期为 20ms 的脉冲调制信号,其中脉冲宽度从 0.5-2.5ms 相对应得舵盘位
3.2 晶振
每个单片机系统都有晶振,全称叫做晶体振荡器,在单片机力作用非常大,他结合单片机内 部的电路, 产生单片机所需的时钟频率, 单片机的一切指令都是建立在晶振频率的基础上的, 晶振提供的频率越高, 则单片机运行的速度越快、 晶振用一种能把一种电能和机械能相互转 化的晶体共振状态下工作,已提供稳定精确的单品震荡。通常情况下,普通的晶振频率绝对 精度可以达到万分之五十。 晶振的作用为系统提供基本的时钟信号, 通常一个系统共用一个晶振, 以便各个部分被保持 同步。
L298N 电路如图所示
程序:
#include <reg52.h> #include <math.h> #define uchar unsigned char #define uint unsigned int sbit TRIG = P0^0 ; sbit ECHO = P0^1 ; sbit pwm = P0^2; sbit in1 = P1^0; sbit in2 = P1^1; sbit in3 = P1^2; sbit in4 = P1^3;

基于51单片机的模块化智能小车(超声波避障)

基于51单片机的模块化智能小车(超声波避障)

基于51单片机的模块化智能小车(有图有真相)!L298N 电机驱动芯片L电机驱动模块背面STC89C52最小系统背面小车底盘(拆自玩具遥控工程车)!5线4相步进电机(512:1)超声波测距模块装配好51最小系统和电机驱动模块的小车步进电机+超声模块装上了步进电机和超声模块连接好线后的造型+步进电机驱动电路ULN2003大功告成!土豆网上传了视频,但程序没有好好写,导致跑起来很不爽,这是很久以前的一个视频链接:/programs/view/q0naSUSlV-Q/欢迎大家多多交流QQ769942445这是源代码:#include "reg51.h"#include "intrins.h"#define uchar unsigned char#define uint unsigned int#define ulong unsigned long#define Moto3 P0/* sbit Moto3_a=P0^0; //5线4相步进电机sbit Moto3_b=P0^1;sbit Moto3_c=P0^2;sbit Moto3_d=P0^3;*/sbit Moto1_l=P2^0; //左电机sbit Moto1_r=P2^1;sbit Moto2_l=P2^2; //右电机sbit Moto2_r=P2^3;sbit TX=P2^4;sbit RX=P2^5;bitflag,flager;ucharhehe,flag_front,flag_left,flag_right;uint time;ulong S;ucharabcd[4]={0x01,0x02,0x04,0x08}; //电机导通相序A-B-C-D uchardcba[4]={0x08,0x04,0x02,0x01}; //电机导通相序D-C-B-Avoid delay1(uchar x){ uchara,b;for(a=0;a<x;a++)for(b=0;b<100;b++);}void Moto3_left(){ uchari,j;for(j=0;j<80;j++){ for(i=0;i<4;i++){ Moto3=abcd[i];delay1(10);}}}void Moto3_right(){ uchari,j;for(j=0;j<80;j++){ for(i=0;i<4;i++){ Moto3=dcba[i];delay1(10);}}}void delay(uchar n) //延时n*1ms{uchara,b,c;for(c=n;c>0;c--)for(b=142;b>0;b--)for(a=2;a>0;a--);}void left(){ Moto1_l=1;Moto1_r=0;Moto2_l=0;Moto2_r=1;}void right(){ Moto1_l=0;Moto1_r=1;Moto2_l=1;Moto2_r=0;}void go(){ Moto1_l=0;Moto1_r=1;Moto2_l=0;Moto2_r=1;}void back(){ Moto1_l=1;Moto1_r=0;Moto2_l=1;Moto2_r=0;}void stop(){ Moto1_l=1;Moto1_r=1;Moto2_l=1;Moto2_r=1;}void TX_10us() //启动一次模块{ TX=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();TX=0;}void count() //计算{ time=TH0*256+TL0;S=(time*1.7)/100; //距离单位:cmTH0=0x00;TL0=0x00;if(S>30||flag==1) //10cm以内有效{ flag=0;}else{ flager=1; //障碍标志}}void test(){ TX_10us();while(!RX); //当RX为零时等待TR0=1; //开启计数while(RX); //当RX为1计数并等待TR0=0; //关闭计数count();}void delayer(uint n){ uinta,b,c;for(c=n;c>0;c--)for(b=100;b>0;b--)for(a=500;a>0;a--);}voidinit(){ TMOD=0x01;TH0=0x00;TL0=0x00;ET0=1;EA=1;}main(){ init();while(1)flag_front=flager;flager=0;Moto3_left();test();flag_left=flager;flager=0;aa: Moto3_right();test();flag_front=flager;flager=0;Moto3_right();test();flag_right=flager;flager=0;hehe=flag_front+(flag_left<<1)+(flag_right<<2);switch(hehe){ case 0x01:back();delayer(3);right();delayer(3);break;case 0x02:right();delayer(1);break;case 0x03:right();delayer(2);break;case 0x04:left();delayer(1);break;case 0x05:left();delayer(2);break;case 0x07:back();delayer(3);right();delayer(3);break;default:break;}go();flag_front=0;flag_left=0;flag_right=0;test();flag_right=flager;flager=0;Moto3_left();test();flag_front=flager;flager=0;Moto3_left();test();flag_left=flager;flager=0;hehe=flag_front+(flag_left<<1)+(flag_right<<2);switch(hehe){ case 0x01:back();delayer(3);right();delayer(3);break;case 0x02:right();delayer(1);break;case 0x03:right();delayer(2);break;case 0x04:left();delayer(1);break;case 0x05:left();delayer(2);break;case 0x07:back();delayer(3);right();delayer(3);break;default:break;}go();flag_front=0;flag_left=0;flag_right=0;gotoaa;}}void time0()interrupt 1{ flag=1;}。

基于STC89C51单片机的智能小车设计

基于STC89C51单片机的智能小车设计

基于STC89C51单片机的智能小车设计摘要:该文主要简述了怎样才能借助STC89C51单片机来促成智能小车的设计。

本车使用LN298N驱动芯片驱动,红外传感器采集道路信息,并通过对所采集信息的分析,实现自动控制电机转向从而改变行驶路径,绕开障碍物,最终全面实现智能车的自动循迹、避障等等基本功能。

关键字:STC89C51单片机;循迹;避障;红外线传感器;PWM一、引言现今,智能化飞速发展,在国人的生活中中获得了广泛的应用。

其中,车辆工程的研究前沿必定是智能车辆,它涵盖了人工智能、自控原理、信息采集技术等多个领域的专业技能,是未来的发展趋势。

其中,智能小车便是一个典型代表,在小车上将加装传感器,借助传感器辨识外界信号,把信号信息反馈到传感器,传感器再按照编写的程序输入之下一步的指令给执行器,进而促成小车的自动智能管理控制。

本文所提及的自动避障智能车是基于STC89C51单片机开发,传感器采用红外发射和接受来探测道路信息,从而实现所需功能。

二、整体设计总体设计即以STC89C51单片机作为核心,组合而成的功能模块分别为:管控模块、供电模块、避障模块、金属探测模块、循迹模块。

2.1控制模块该文其所提到的智能小车即以STC89C51单片机作为管理控制核心,借助程序的设计以及编写来管理控制小车,即以达到对于小车的整体管理控制。

2.2驱动模块小车的驱动电机选用直流电机,使用极为方便,并选用集成处理器驱动。

集成芯片驱动外围电路简单,比较容易实现,且调试通过率高,故障的发生率较低。

该文选用的就是LN298N功能模块,该类功能模块提供4输出或6输出单片机信号源,可用跳线帽灵活多样选用,大力支持PWM调速,且板载上拉电阻,可在一定程度上解决STC89C51单片机I/O口驱动能力不足的问题。

控制器经由管控LN298N使能端,继而实现电机的摆动与否,以更进一步实现小车的不断前进与转向。

直流电机变向原理:向左转时,左轮静止不动,右轮转动;向右转时,右轮静止不动,左轮转动。

基于STC89C51单片机的智能避障小车

基于STC89C51单片机的智能避障小车

西华大学“西华杯”学生课外学术科技作品
项目申报书
项目名称:基于STC89C51单片机的智能避障小车学院名称:电气信息学院
申报者姓名
(集体名称):
指导老师:
类别:
□自然科学类
□哲学社会科学类
□科技发明制作类
1.本项目申报书,在申报项目批准后,方为有效。

2.本项目申报书填写一式一份,报校团委。

3.本项目申报书各项内容,要实事求是,逐条认真填写。

表达要明
确、严谨。

4.本项目申报书要求用A4纸打印,双面复印(项目组成员签
名由本人亲笔填写)装订成册;填写、装订不符合要求者,申报项目不予受理。

5.项目原则上在一年内完成。

6.项目完成时,按照本项目申报书第二栏填写的成果形式结题
(验收、鉴定),请各学院(直属系)严格审定。

7.如有未尽事宜,可另附材料说明。

基于89C51单片机的智能小车设计

基于89C51单片机的智能小车设计

湖北轻工职业技术学院单片机实训报告题目:基于STC89C52的智能小车设计姓名:刘加象学号:20110302113专业:电子信息工程技术指导老师:何伶俐日期:2013-01-06信息工程系电信教研室目录引言 (3)一整体方案设计 (4)1.1整体方案设计的思路 (4)1.2整体方案的流程图 (4)二智能小车系统概况 (4)2.1恒压恒流桥式2A驱动芯片L298N (4)2.2直流电机简介 (5)2.3显示模块的综合概括 (7)三模块方案比较与论证: (9)3.1电机模块的选择 (9)3.2电机驱动模块的选择 (9)3.3控制器模块的选择 (9)四系统硬件电路设计 (11)4.1显示模块的设计 (11)4.2直流电机的驱动模块 (12)五软件的简单介绍 (14)5.1K EIL的简介 (14)5.2PROTUES的简介 (14)5.3STC_ISP_V483的简介 (15)六结论 (18)七致谢 (18)参考文献 (19)附录一:实物图 (20)图1实物图 (20)图2实物图 (21)附录二:总程序 (21)引言随科学技术的进步,智能化和自动化技术越来越普及,也广泛应用于机器人玩具制造领域,使智能机器人越来越多样化。

智能机器人是一个多种高新技术的集成体,它融合了机械、电子、传感器、计算机硬件、软件、人工智能等许多学科的知识,涉及到当今许多前沿领域的技术。

而随着社会的不断发展,智能设备的不断出现,无线遥控的运用也越来越广泛。

无线遥控器由于控制距离远,抗干扰性强,已越来越多的出现在生活的各个方面。

本文使用了一款通用的无线遥控电路,基于STC89C52作为控制核心,采用专用编码解码电路,由于其体积小、功能强大,因此可非常方便的移植到遥控机器人、遥控小车上等,并实现远距离控制。

在早期,遥控小车并不少见,但大多产品制造简单,实现的功能少,往往只有一些简单的功能,例如左转右转,前进后退等,大多采用红外控制,外加一些复杂的电路组合而成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于STC89C52单片机的智能超声波避障小车参赛人员:周志强王俊朱纪伟聂孟杰班级:2012级自动化3班日期:2015年3月一、方案概述本小车使用一台 AT89C52 单片机作为主控芯片,它通过超声波测距来获取小车距离障碍物的距离,并且用液晶显示器实时的显示出来,在小车与障碍物的距离小于安全距离(40cm ) 时,小车上蜂鸣器会发出警报声,并且后退并拐弯,同时通过LCD1602显示器显示出小车与障碍物之间的距离,精确到0.1cm. 在避开障碍物后,小车会沿直线前进。

本系统设计的简易智能小车分为几个模块:单片机控制系统、LCD1602显示器.超声波路面检测系统、前进、 转弯控制电机以及方向指示灯系统。

它们之间的相互关系如下图所示。

智能小车简要原理框架图二﹑总体电路原理图超声波模块三、主要模块基本原理(1)超声波模块超声波时序图以上时序图表明你只需要提供一个10uS以上脉冲触发信号,该模块部将发出8个40kHz周期电平并检测回波。

一旦检测到回波信号则输出回响信号。

回响信号的脉冲宽度与所测的距离成正比。

由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。

公式:距离=高电平时间*声速(340M/S)/2。

(2)液晶显示模块GND 为电源地,VCC 接5V正电源,VEERS 为寄存器选择RW 为读写信号线,RW 共同为低电平时可以当RS 为高电平RW当E 端由低电平跳变成高源程序#include <at89x51.h>#include <intrins.h>#define TX P2_1#define RX P2_0sbit DU = P2^6;sbit WE = P2^7;理想的时候是100,100256的时候最快200 190//sbit P4_0=0xc0;/*****sbit L293D_IN1=P1^2;sbit L293D_IN2=P1^3;sbit L293D_IN3=P1^6;sbit L293D_EN1=P1^4;sbit L293D_EN2=P1^5;sbit BUZZ=P2^3; //蜂鸣器void cmg88()//关数码管,点阵函数{DU=1;P0=0X00;DU=0;}void Delay400Ms(void);//延时400毫秒函数unsigned char code Range[] ="==Range Finder==";//LCD1602显示格式unsigned char code ASCII[13] = "0123456789.-M";unsigned char code table[]="Distance:000.0cm";unsigned char code table1[]="!!! Out of range";unsigned char disbuff[4]={0,0,0,0};//用于分别存放距离的值0.1mm、mm、cm和m 的值void Count(void);//距离计算函数unsigned int time=0;//用于存放定时器时间值unsigned long S=0;//用于存放距离的值bit flag =0; //量程溢出标志位bit turn_right_flag;//============================================================ ============================================================= void Forward(unsigned char Speed_Right,unsigned char Speed_Left)// 前进{L293D_IN1=0;L293D_IN2=1;L293D_IN3=1;L293D_IN4=0;}void Stop(void) //刹车{L293D_IN1=0;L293D_IN3=0;L293D_IN4=0;}void Turn_Right(unsigned char Speed_Right,unsigned char Speed_Left) //后退左转{L293D_IN1=1;L293D_IN2=0;L293D_IN3=1;L293D_IN4=0;Delay(100);L293D_IN1=1;L293D_IN2=0;L293D_IN3=1;L293D_IN4=0;}//============================================================ ============================================================= /********距离计算程序***************/void Conut(void){time=TH1*256+TL1;TH1=0;TL1=0;//此时time的时间单位决定于晶振的速度,外接晶振为11.0592MHZ时,//time的值为0.54us*time,单位为微秒//那么1us声波能走多远的距离呢?1s=1000ms=1000000us// 340/1000000=0.00034米//0.00034米/1000=0.34毫米也就是1us能走0.34毫米//但是,我们现在计算的是从超声波发射到反射接收的双路程,//所以我们将计算的结果除以2才是实际的路程S=time*2;//先算出一共的时间是多少微秒。

S=S*0.17;//此时计算到的结果为毫米,并且是精确到毫米的后两位了,有两个小数点if(S<=300) //{if(turn_right_flag!=1){Stop();Delay1ms(5);//发现小车自动复位的时候,可以稍微延长一点这个延时,减少电机反向电压对电路板的冲击。

}turn_right_flag=1;P2_3=0;Delay1ms(50);P2_3=1;Turn_Right(120,120); //小于设定距离时电机后退转弯}else{turn_right_flag=0;Forward(Forward_R_DATA,Forward_L_DATA); //前进(大于20-30CM前进)}//=======================================if((S>=5000)||flag==1) //超出测量围{flag=0;DisplayListChar(0, 1, table1);}else{disbuff[0]=S%10;disbuff[1]=S/10%10;disbuff[2]=S/100%10;disbuff[3]=S/1000;DisplayListChar(0, 1, table);DisplayOneChar(9, 1, ASCII[disbuff[3]]);DisplayOneChar(10, 1, ASCII[disbuff[2]]);DisplayOneChar(11, 1, ASCII[disbuff[1]]);DisplayOneChar(12, 1, ASCII[10]);DisplayOneChar(13, 1, ASCII[disbuff[0]]);}}/********************************************************/ void zd0() interrupt 3 //T0中断用来计数器溢出,超过测距围{flag=1; //中断溢出标志RX=0;}/********超声波高电平脉冲宽度计算程序***************/void Timer_Count(void){TR1=1; //开启计数while(RX); //当RX为1计数并等待TR1=0; //关闭计数Conut(); //计算}/********************************************************/ void StartModule() //启动模块{TX=1; //启动一次模块Delay10us(2);TX=0;}/********************************************************//*************主程序********************/void main(void){unsigned char i;unsigned int a;cmg88();//关数码管Delay1ms(400); //启动等待,等LCM讲入工作状态LCMInit(); //LCM初始化Delay1ms(5);//延时片刻DisplayListChar(0, 0, Range);DisplayListChar(0, 1, table);TMOD=TMOD|0x10;//设T0为方式1,GATE=1;EA=1; //开启总中断TH1=0;TL1=0;ET1=1; //允许T0中断//===============================//PWM_ini();//===============================turn_right_flag=0;//=================================B: for(i=0;i<50;i++) //判断K3是否按下{Delay1ms(1);//1ms判断50次,如果其中有一次被判断到K3没按下,便重新检测if(P3_6!=0 )//当K3按下时,启动小车goto B; //跳转到标号B,重新检测}//蜂鸣器响一声BUZZ=0; //50次检测K3确认是按下之后,蜂鸣器发出“滴”声响,然后启动小车。

Delay1ms(50);BUZZ=1;//响50ms后关闭蜂鸣器//========================================================= ============================================================= =while(1){RX=1;StartModule(); //启动模块for(a=951;a>0;a--){if(RX==1){Timer_Count(); //超声波高电平脉冲宽度计算函数}}}}结束语:本系统有STC89C52单片机,超声波模块,LCD1602显示器,报警系统等组成。

STC89C52控制电机的转动和报警系统的动作。

LCD1602显示智能型小车到障碍物之间的距离便于人查看。

相关文档
最新文档