基于ST89C52单片机的自动往返小车(含程序)
更新时间:2023-10-21 18:35:01 阅读量: 综合文库 文档下载
- 基于是什么意思推荐度:
- 相关推荐
基本原理:
黑带检测 路程和时间显示 单片机 LED显示路程,时间 L298N电机驱动模块
1.电机驱动调速模块 方案一:采用电阻网络或数字电位器调整电动机的分压,从而达到调速的目的。但是电阻络只能实现有级调速,而数字电阻的元器件价格昂贵。更主要的问题在于一般电动机的电阻较小,但电流很大;分压不仅会降低效率,而且很难实现。 方案二:采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整。方案的优点是电路较为简单,缺点是继电器的响应时间慢,机械结构易损坏,寿命较短,可靠性不高。
方案三:采用达林顿管TIP4组成的PWM电路。用单片机控制达林顿管使之工作在占空比可调的状态,精确调整电机转速。
方案四:采用L298N来控制电机的正转和反转来实现小车的前进和后退。加上单片机的程序PWM,实现整车的加速与减速,精确小车的速度。
基于上述理论分析,拟选择方案四。 2.路面黑带检测模块
黑带检测的原理是:红外光线照射到路面并反射,由于黑带和白纸的系数不同,可根据接的红外线的强弱判断是否到达黑带。
方案一:可见光发光二极管与光敏二极管组成的发射—接收电路。这种方案的缺
点在于其他环境光源会对光敏二极管的工作产生很大的干扰,一旦外界光亮条件改变,很可能造成误判和漏判;虽然产生超高亮发光二极管可以降低一定的干扰,但这又将增加额外的功率损耗。
方案二:反射式的红外发射—接收器。由于采用红外管代替普通可见光管,可以降
低环境干扰。 基于上述理论分析,拟选择方案二。 3. 电源选择
方案一:所有器件采用电源供电,这样供电电路比较简单;但是由于电动机启动瞬时电流很大,会造成电压不稳,干扰严重,缺点十分明显。
方案二:双电源供电,将电动机驱动电源与单片机以及周边电路电源完全隔离,这样做虽然不如单电源方便灵活,但可以将电动机驱动所造成的干扰彻底消除,提高了系统的稳定性。 基于上述理论分析,拟选择方案二。 4. 控制单元模块
方案一:采用纯数字电路
该方案外部检测采用光电转换,系统控制部分采用数字电路译码对小车电动机两端电压调整,来控制小车的运行。时间和行程用加法器进行计数。此系统的设计将会使电路过于复杂,调试时需要改变硬件电路,机动性差。 方案二:用单片机控制
用光电检测不同的信号,并经单片机对其处理,传送给L298信号,使其控制电机的正转和反转,配合PWM程序控制,来实现加速减速和刹车。通过单片机内部定数器/计数器进行定时、计数,在用单片机串行输入/输出口进行显示控制。此方案电路成熟、工作稳定、容易实现控制。
为能更好的实现题目的各种设计要求,所以我们选用第二种方案。用单片机进行控制。其工作框图如下:
开 光电检测 控制中心 STC89C52 小车正反转 行驶时间显示 始二 电路设计 行驶里程显示
1. 光电检测部分:
我们采用反射式光电检测电路对跑道上的黑线进行检测,并用两个遮光套管套住发光管和接收管以一定的角度紧贴跑道,这样可以消除外界光线的干扰。为了加强可靠性采用槽型光耦检测轮子转动的行程。用LM358电压比较器输出高低电平检测信号。 如图所示:
霍尔检测
2. STC89C52单片机基本系统 此系统以89C52为核心,每检测到一个黑带由光电检测部分产生一个的脉冲,使单片机产生一个外部中断1,定义检测黑带数的变量加1,同时车轮每转一圈,霍尔元件输出一个脉冲,是安单片机产生一个外部中断0,定义圈数的变量加1.通过P3.0和P3.1控制L298来控制电机的正转与反转及刹车。当P3.0输出低电平,P3.1输出高电平时,电机正转,相反则电机反转,当P3.0和P3.1都是低电平时,使电动机被短路,提高了刹车效率,基本杜绝了由于制动惯性造成的小车的前冲现象。通过P0口进行两个数码管的位选,P2口进行段码输出,其中一个数码管显示行驶时间,另外一个数码管显示行驶路程。 如图所示:
3. L298N电动机驱动模块部分
该电路采用电动机驱动芯片L298来控制电动机的正转与反转,加以第二路电机电 源保证了电动机启动时有足够的电流。在试验中控制电压为单片机输出的高低电 平直接控制。
具体电路图连接如下:
4. 电源部分
由于电动机工作电流大,需要选用内阻小,供电电流强,质量轻,可反复使用的经济型电池,我们选用镍铬可充电电池组。为使单片机工作稳定,避免电动机开关机和其转动时对其电源的影响,在此用两个电池组和稳压块7805分别为89C52和电动机驱动显示部分分别进行供电。保证小车工作和显示的稳定性。
5.软件设计部分
单片机控制电路主要由一片STC89C52组成,通过P3口控制小车正转与反转,刹车,加速减速,通过两个四联数码管控制显示时间和里程以及小车行驶的时间。其中P0口进行位选,P2口进行显示段码输出。
该系统采用上电复位加上手动复位联合复位系统进行初始化,单片机通过P3.0,P3.1输出脉冲控制电机正转反转以及刹车,当P3.0,P3.1分别输出01是电动机正转,输出10时电动机反转,输出00时电动机两边短路,小车立即刹车。 流程图如下:
(1)外部中断0
车轮美转一次,霍尔元件产生一个脉冲P3.14,通过下降沿触发外部中断0,并且在每进行一次外部中断记录圈数的变量加1.
开始 外部中断 INT0 车轮每转一圈 霍尔元件产生一个脉冲 圈数quanshu++
(2)外中断1
光电检测每检测到一条黑带就产生一个脉冲输入P3.2口,通过下降沿的方式触发外中断1,每中断一次记录黑带的变量加1,当检测到第五条黑带时,p1.0=1,p1.1=1,小车的电动机由于短路刹车,当检测到第九条黑带时,小车再次刹车同时关掉所有中断 。
开始 黑带数heidai++ Y heidai==5 P3.0=1,P3.1=1 Y heidai==9 EA=0,刹车 退出
(3)定时器中断0
使用定时器T0产生5ms定时中断,每次执行该中断前要先给定时器0赋初值,定时器中断每执行一次,变量加1。当i=200时,即每当计时1秒时,时间变量t加1,速度等于一秒转的圈数和小车车轮的周长相乘。
开始 定时中断0 产生5ms中断 控制一秒定时,i++ 一秒定时是否到
共转的圈数q 路程=周长*圈数q (4)定时器中断1
主要用来产生不同的占空比的波型进行高低速控制,每次执行时,定时器1要赋初值
(5) 主程序
主程序主要用来控制两个四联数码管的显示,通过循环语句不断的调用显示程序,使两个四联数码管按位不断循环亮点,当小车行驶时动态显示时间和路程,小车停止时显示小车行驶过程中的时间和路程。
6.安装与调试
自动小车为玩具遥控小汽车的改装品,在改装的过程中最重要的是考虑设计光电检测管的位置,检测黑带的光电管放在车体的中央,用遮光管将其以一定反射角度压到跑道上。路程检测用槽型光耦,放在小车的从动轮上。轮子的周长约为21.6厘米,在轮子上用了一个霍尔元件,每转一圈一个脉冲。在组装前对每一个单元电路进行测试,以保证外部硬件电路的无误,有利于最后的统调。调整是以点到线,最后到整体调试的方法。在调整的过程中我们发现了许多问题,如响应中断的次数的调整等。并且为了小车碰到墙壁不至于停车,我们在小车的四角上都加上了导向轮,导向轮用随身听的压带轮制作即可。
7.附录元器件及程序如下: 基本元器件列表 一个STC89C52单片机 2个四位共阳数码管 一个L298N芯片 一个LM358
一个霍尔元件和小磁钢片 光点接收管一对
晶振(12M)及30pf电容 开关
电阻 10k 100欧姆 1k 20k可调
附录程序: #include
uchar code duma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //段编码
uchar code dianduma[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //带小数点段编码
uchar code wema[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0xff}; //位编码
uchar num,ge,shi,bai,qian; //定义几个字符型变量 uint miao,lc,heidai=0; //定义几个整形变量 long int qs; //定义一个长整形变量用来记录小车所转的圈数
void fenwei(uint); //声明一个分位函数用来把要显示的数分位
void shuma(uchar,uchar) ; //声明一个数码上显示函数用来在数码管上显示数据
void shumadian(uchar,uchar); //声明另一个数码显示函数用来显示带小数点的数据 void miaoxianshi(uint); //声明一个显示时间的函数 void lcxs(uint); //声明一个显示路程的函数 void djkz(); //声明一个电机控制函数 void delay(uchar); //声明一个延时函数 void delay10s(); //声明另一个延时函数用来延时十秒钟
/*————————————————主函数———————————————————*/ void main() { EA=1; //打开总中断
ET0=1; //打开定时器中断0 EX0=1; //打开外部中断1 IT0=1; //外部中断0设置为跳变沿触发方式 EX1=1; //打开外部中断1 IT1=1; //外部中断1设置为跳变沿触发方式 TMOD=0x01; //设置定时器0为方式1 TH0=(65536-500)/256; //定时器0高八位装初值 TL0=(65536-500)%6; //定时器0低八位装初值 TR0=1; //打开定时器0 while(1) //进入主循环 { djkz(); //进入电机控制函数 } }
/*————————————————显示分位———————————————————*/
//函数功能: 把需要在数码管上显示的数据分位, // 即把数据的个、十、百、千位分别分 // 离出来
//函数入口参数:整形x,储存需要分位的数据 //函数返回值: 无 void fenwei(uint x) { ge=x; shi=(x0)/10; bai=(x00)/100; qian=x/1000; }
/*————————————————数码显示———————————————————*/
//函数功能: 将需要显示的数据显示在数码管上 //函数入口参数:字符型x,储存显示数据 // 字符型y,储存要显示的位置 //函数返回值: 无
void shuma(uchar x,uchar y) { P0=wema[8]; P2=duma[x]; P0=wema[y]; delay(5); }
/*————————————————带小数点数码显示———————————————————*/
//函数功能: 将需要显示的数据显示在数码管上
正在阅读:
2022报考警校有哪些要求 警校好考吗03-30
当代革命军人核心价值观心得体会10-14
四年级下册《加法运算定律说课》05-18
2022河北高考600分能上什么大学03-30
低碳时代中小城市发展机遇和对策 Microsoft Word 文档(3)04-20
路面工程精细化施工管理手册 - 图文01-26
2016年家纺行业现状及发展趋势分析04-18
苏教版《唐诗宋词选读》名句默写最新04-21
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 单片机
- 小车
- 往返
- 基于
- ST89C52
- 自动
- 程序
- 高中历史(人民版必修3)同步练测:专题七 一 近代物理学的奠基人和革命者(含答案解析)
- 2013年广东省公务员行测真题及答案解析(一)
- 进出口货物运输保险承保与理赔手册
- 儿科考试试题
- 2019届高考数学第二轮复习限时训练题8
- 广播电视基础知识复习一篇全精通(详细版) - 图文
- 交通行业固定资产投资统计报表制度说明 - 图文
- 2019年江苏省淮安市中考化学试卷(答案解析版)
- 最新2017人教版小学五年级数学(上)期中测试卷1附答案
- 保险销售从业人员资格考试辅导新教材更改点(2013年7月1日起)免费
- 关于公布2006年全国中学生生物学联赛(浙江赛区)获奖名单
- 从影响汉字发展的因素看汉字的发展方向
- 安徽省马鞍山市第十一中学七年级历史下册 第22课 时代特点鲜明的明清文化(二)学案
- 用电监察员考试资料2高级工 - 带电检查电能计量装置接线
- 智器V5ROOT详细破解,必备软件,优化机器详细设置
- 第二课 水彩画的创作方法与步骤
- 离子方程式练习(一课一练)
- 电气工程自动化毕业论文(住宅小区配电设计含电气图、预算)
- 2014年中国模具制造行业湖北省TOP50企业排名
- 基于MATLAB(矩阵实验室)的倒立摆控制系统仿真