




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于89c52单片机的智能循迹测速避障小车为了参加我校举办的电子科技竞赛,刚刚开始学习单片机的我们,经过讨论,决定做一辆智能循迹测速小车,综合我们搜集的材料以及自己的修改,我们做出了我们的作品。以下是我们整理的材料:一、 原理图1、 最小系统 我们采用的是89c52单片机来做小车的最小系统,针对自己的需要只把要用到的排针口接了上去,具体电路图如下:2、 电机驱动我们采用l293d作为驱动芯片,l293d是一种直流电机控制器件,具有外围电路简单,易于集成、控制等特点,电路图如下:其中我们用tlp521-4光耦器作为电机的稳定,即稳定的是电机的电压,避免电机的电流过大烧坏单片机,起到保护单片机的作用,增加安全性,减少电路干扰,简化电路设计。其电路图如下:3、 测速电路我们采用rpr220反射式光电传感器作为测速器,反射式红外光电传感器模块是一种利用反射式红外光电传感器制成的在传感器的有效检测距离范围内对被测物体的存在性进行检测的电路装置,由红外光发射接收器、电压变化检测电路、检测灵敏度调节电位器、检测状态指示 led 灯等四个主要部分组成,额定工作电压 dc3.3v 或 dc5.5v(兼容支持 dc3vdc5.5v,而无需额外的硬件配置),dc5v 工作电压条件下,约为 60ma,最大不超过 80 ma。具体电路图如下:4、探测器我们仍采用rpr220反射式光电传感器作为探测器,基于它受被测物体的红外反射特性影响很大,亦能通过检测灵敏度调节电位器进行调节,我们用它来探测黑线(即路线),实现循迹功能。事实证明它的灵敏度是很高的,具体电路如下:相应的放大电路我们采用lm339芯片作为放大器,lm339芯片通常用作电压比较器,该电压比较器的特点是:1)失调电压小,典型值为2mv;2)电源电压范围宽,单电源为2-36v,双电源电压为1v-18v;3)对比较信号源的内阻限制较宽;4)共模范围很大,为0(ucc-1.5v)vo;5)差动输入电压范围较大,大到可以等于电源电压;6)输出端电位可灵活方便地选用。lm339类似于增益不可调的运算放大器,在本装置中,我们将它用来放大探测信号。电路图如下:5、电源我们采用l7805作为电源的稳压芯片,虽然用lm78/lm79系列三端稳压ic来组成稳压电源所需的外围元件极少,但是电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。电路图如下:6、我们用dyp-me007超声波作为避障部分,dyp-me007超声波测距模块可提供3cm3.5m的肥接触式距离感测功能。下图为dyp-me007外观,包括超声波发射器、接收器与控制电路。其基本工作原理为给予此超声波测距模块一触发信号后发射超声波,当超声波投射到物体上后反射回来时,模块输出一回响信号,以触发信号和回响信号间的间差,来判定物体的距离。7、程序驱动程序如下:#include /包含单片机寄存器的头文件#include /包含随机函数rand()的定义文件#include /包含_nop_()函数定义的头文件#include #define uchar unsigned char; /char单字节整型数据或字符型数据#define uint unsigned int;#define cm 3sbit rs=p27; /寄存器选择位,将rs位定义为p2.0引脚sbit rw=p26; /读写选择位,将rw位定义为p2.1引脚sbit e=p25; /使能信号位,将e位定义为p2.2引脚sbit bf=p07; /忙碌标志位,将bf位定义为p0.7引脚sbit s_left=p14;/左轮测速器sbit s_right=p15;/右轮测速器sbit en12=p36;/电机1使能端sbit in1=p21;/电机1前进驱动sbit in2=p22;/电机1后退驱动sbit en34=p37;/电机2使能端sbit in3=p16; /电机2前进驱动sbit in4=p17; /电机2后退驱动sbit d1=p10;/定义探测器1sbit d2=p11;/定义探测器2sbit d3=p12;/定义探测器3sbit d4=p13;/定义探测器4sbit spk=p20;/定义蜂鸣器sbit ex=p34;/超声波接收端 sbit tx=p35;/超声波发送端 /*延时函数 uint count0=0,w=0,w2=0,h,l;/定义需要用到的变量 float w0,w3,w1,w4;/unsigned int p,j,k,s,m;/unsigned char code digit =0123456789; /定义字符数组显示数字unsigned char code string =; /定义字符数组显示提示信息/unsigned char count,count2,count3; /定义变量统计中断累计次数uint pwm=20;/定义占空比 /*/ void delay1(int ms)/延时函数 unsigned char y; while(ms-) for(y = 0; y250; y+) _nop_(); _nop_(); _nop_(); _nop_(); void forward()/ 前进函数in1=1;in2=0;in3=1;in4=0;pwm=85;tr0=1; void forward2()/前进函数2in1=1;in2=0;in3=1;in4=0;pwm=90;tr0=1; void stop1()/停止函数in1=0;in2=0;in3=0;in4=0;tr0=0; void turnleft()/左转函数in1=1;in2=0;in3=0;in4=0;pwm=50;tr0=1;void turnright()/ 右转函数 in1=0;in2=0;in3=1;in4=0;pwm=50;tr0=1;void back()/后退函数in1=0;in2=0;in3=0;in4=1;pwm=60;tr0=1;/- 蜂鸣void delay5(unsigned int cnt)while(-cnt);void speak()unsigned char i,j;for(i=0;i3;i+)for(j=0;j200;j+)/ 喇叭发声的时间循环,改变大小可以改变发声时间长短delay5(80); / 参数决定发声的频率,估算值,可以自行更改参数并spk=!spk;spk=1; / 喇叭停止工作,间歇的时间,可更改delay5(20000); void delay1ms() unsigned char i,j;for(i=0;i10;i+)for(j=0;j33;j+); void delay(unsigned char n) unsigned char i; for(i=0;i1&count21&count320&s_right=1)k+=cm;count3=0; p=(j+k)/2; th0=(65536-50000)/256; /定时器t0高8位重新赋初值 tl0=(65536-50000)%256; /定时器t0低8位重新赋初值void main() unsigned char i; lcdinitiate(); /调用lcd初始化函数init();tmod=0x11; /使用定时器t0的模式1th0=(65536-50000)/256; /定时器t0的高8位设置初值tl0=(65536-50000)%256; /定时器t0的低8位设置初值ea=1; /开总中断et0=1; /定时器t0中断允许tr0=1; /启动定时器t0ex0=1;it0=0;s=0;p=0; /秒初始化为0 writeaddress(0x00); /写地址,从第1行第4列开始显示i=0; /从字符数组的第1个元素开始显示while(stringi!=0) /只要没有显示到字符串的结束标志0,就继续writedata(stringi); /将第i个字符数组元素写入lcdi+; /指向下一个数组元素 while(1) /无限循环 displaysecond(); /显示秒 delay(5); /给硬件一点反应时间 forward2();/上电后先前进 tx=0; tx=1; delay1(1); tx=0; th2=0; tl2=0; tr2=0; while(!ex); tr2=1; while(ex)if(th1=50)th2=0;tl2=0;break; tr2=0; h=th2; l=tl2; h=th2; h=th2; l=tl2; h=th2; w=h*256+l;/放入16位的高8位 w0=(float)w;/ w1=w0*340/10000/2; /由空气中的声速转为厘米 w2=(int)w1; /取整 w3=w1-w2;/ 差值即为距离 w4=w3*10;/小数取十位 writeaddress(0x00); writedata(c); writedata(e); writedata(j); writedata(u); writedata(:); writedata(w2/100+0x30); writedata(w2/10%10+0x30); writedata(w2%10+0x30); writedata(.); writedata(w4+0x30); writedata(c); writedata(m); if(w2=7)stop1();delay5(80);back();speak();delay5(40000); else if(w27)turnleft();speak(); if(d1=1&d2=0&d3=0&d4=0)|(d1=0&d2=1&d3=0&d4=0)|(d1=1&d2=1&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版八年级道德与法治上册教学设计:1.1 我与社会
- 公正无私(教学设计)-中华传统文化五年级上册
- 一年级数学上册 八 10以内的加法和减法练习八(一)教学设计 苏教版
- 建筑材料报审表(完整版)
- 九年级化学下册 第11单元 盐 化肥 实验活动8 粗盐中难溶性杂质的去除教学设计 (新版)新人教版
- 2024四川九洲投资控股集团有限公司招聘数字化转型(法务)岗等岗位8人笔试参考题库附带答案详解
- 三年级数学下册 第九单元 探索乐园9.2 简单的逻辑推理教学设计 冀教版
- 电气二次回路培训
- 畜牧医学在线培训课件
- 大学生学生干部培训心得体会
- 卫星科普知识
- 档案管理实务与技能试题及答案2024
- 高职单招职业技能测试题库
- 健康直饮水水质标准
- 2025年建筑施工企业安管人员(C类)安全生产考核试题(附答案)
- 高考语文全国卷文言文翻译(2010-2024)
- 2025年郑州食品工程职业学院单招职业技能考试题库附答案
- DB11∕T1481-2024生产经营单位生产安全事故应急预案评审规范
- LY/T 2762-2024黄精
- 绝缘摇表培训
- 保险合规知识培训课件
评论
0/150
提交评论