毕业设计论文基于51单片机的多功能智能小车设计论文电路程序论文

上传人:仙*** 文档编号:35028007 上传时间:2021-10-25 格式:DOC 页数:70 大小:107KB
返回 下载 相关 举报
毕业设计论文基于51单片机的多功能智能小车设计论文电路程序论文_第1页
第1页 / 共70页
毕业设计论文基于51单片机的多功能智能小车设计论文电路程序论文_第2页
第2页 / 共70页
毕业设计论文基于51单片机的多功能智能小车设计论文电路程序论文_第3页
第3页 / 共70页
点击查看更多>>
资源描述
毕业设计(论文)基于51单片机的多功能智能小车设计论文(电路+程序+论文) 基于单片机的多功能智能小车设计论文 电路程序论文 摘 要关键词智能车 单片机 金属感应器 霍尔元件 1602LCD智能作为现代的新发明是以后的发展方向他可以按照预先设定的模式在一个环境里自动的运作不需要人为的管理可应用于科学勘探等等的用途智能电动车就是其中的一个体现本次设计的简易智能电动车采用AT89S52单片机作为小车的检测和控制核心采用金属感应器TL-Q5MC来检测路上感应到的铁片从而把反馈到的信号送单片机使单片机按照预定的工作模式控制小车在各区域按预定的速度行驶并且单片机选择的工作模式不同也可控制小车顺着S形铁片行驶采用霍尔元件A44E检测小车行驶速度采用1602LCD实时显示小车行驶的时间小车停止行驶后轮流显示小车行驶时间311 要求32 方案比较与选择4 21路面检测模块4 22 LCD显示模块5 23测速模块5 24控速模块6 25模式选择模块73 程序框图74 系统的具体设计与实现9 41路面检测模块9 42 LCD显示模块943测速模块944控速模块945复位电路模块946模式选择模块95 最小系统图106 最终PCB板图127 系统程序138 致谢469 参考文献4710 附录481 设计任务设计并制作了一个智能电动车图1 车辆从起跑线出发出发前车体不得超出起跑线在第一个路程CD区36米以低速行驶通过时间不低于10s第二个路程DE速通过时间不得于秒自动记录显示时间行驶距离图2车辆沿着S形铁片行驶自动转弯自动寻找正确方向和铁片当离开S型铁片跑道或者感应不到铁片一段时间的时候小车自动停止并记录行驶时间路程平均速度并通过LCD显示出来2 方案比较与选择根据设计任务要求并且根据我们自己的需要而附加的功能该电路的总体框图可分为几个基本的模块框图如图3所示图321 路面检测模块采用铁片感应器TL-Q5MC来检测路面上的铁片从而给单片机中断脉冲原理图接线如图4所示图422 LCD显示模块采用1602LCD由单片机的总线模式连接为节约电源电量并且不影响LCD的功能LCD的背光用单片机进行控制使LCD的背光在小车行驶的过程中不亮因为我们不必看其显示在其它我们需要看显示的内容的时候LCD背光亮23 测速模块231 方案1采用采用霍尔开关元器件A44E检测轮子上的小磁铁从而给单片机中断脉冲达到测量速度的作用霍尔元件具有体积小频率响应宽度大动态特性好对外围电路要求简单使用寿命长价格低廉等特点电源要求不高安装也较为方便霍尔开关只对一定强度的磁场起作用抗干扰能力强因此可以在车轮上安装小磁铁而将霍尔器件安装在固定轴上通过对脉冲的计数进行车速测量232 方案2采用红外传感器进行测速但无论是反射式红外传感器还是对射式红外传感器他们对都对外围环境要求较高易受外部环境的影响稳定性不高且价格较为昂贵通过对方案1方案2的比较其优缺点综合多方面因素决定选用方案1其原理图接线如图5所示图524 控速模块241 方案1使用功率三极管作为功率放大器的输出控制直流电机线性型驱动的电路结构和原理简单成本低加速能力强但功率损耗大特别是低速大转距运行时通过电阻R的电流大发热厉害损耗大对于小车的长时间运行不利242 方案2采用继电器对电动机的开或关进行控制通过开关的切换对小车的速度进行调整此方案的优点是电路较为简单缺点是继电器的响应时间慢易损坏寿命较短可靠性不高243 方案3采用由双极性管组成的H桥电路用单片机控制晶体管使之工作在占空比可调的开关状态精确调整电机转速这种电路由于工作在管子的饱和截止模式下效率非常高H桥电路保证了可以简单地实现转速和方向的控制电子开关的速度很快稳定性也很高是一种广泛采用的调速技术综合3种方案的优缺点决定选择方案3其电路原理图如图6所示图625 模式选择模块模式选择模块通过一个74LS00与非门和两个不带锁按钮来控制单片机单片机的两个中断口从而按动按钮来选择小车走动的路型来选择小车的速度是快速中速慢速走完路程小车停止后还可以通过按钮选择想要在LCD上想看的信息比如总时间走过各段路程的时间平均速度总路程等小车走动的模式选择有1 直线型满足设计任务的基本要求能稳定的走完全程之后按顺序循环不断的显示走完全程所用的时间走完高速区所用的时间和走完低速区所用的时间这三个时间或者可以通过两个按钮以及LCD显示的菜单选择所要看的内容如平均速度全程距离以及那三个时间2 S型满足设计任务的发挥部分的要求小车能自动的感应到在前面或在后面铁片即第一次转弯后若感应到的是错误的方向则小车会后退自动调整方向沿着S型的铁片走当走完S型铁片后的一定时间里小车自动停止之后自动进入菜单由我们自己选择要看的内容时间平均速度和所走的距离3自动型小车先以一定的速度走完全程之后再以一定的速度倒退回起点再调整速度在一定的时间内走完全程走完后LCD显示的内容与直线型显示的内容一样3 程序框图单片机主程序框图速度感应程序框图和铁片感应程序框图分别如图7所示 图7 4系统的具体设计与实现41 路面检测模块 应用一个金属感应器安装在车盘下离地略小于或约四毫米当金属传感器检测到铁片时将对单片机发送中断信号单片机运行中断改变输给电机驱动信号的电压占空比来控制小车的速度42 LCD显示模块采用1602LCD由单片机的总线模式连接为节约电源LCD的背光用单片机进行控制43 测速模块通过霍尔元件感应磁铁来产生脉冲 当霍尔元件在离磁场较近时输出会是高电平其它时候是低电平 一个车轮均匀放四个小磁铁计算一秒所得的脉冲数从而计算出一秒小车轮子转动圈数再测量出小车车轮周长即可计算出小车当前速度累加可得到当前路程44 控速模块考虑到元器件的缺少以及我们所用的电路的驱动电机的电路原理图和和小车自带的电路的电机驱动原理图一样所以暂时使用小车自带的电机驱动电路图45 复位电路模块单片机的复位电路通过手动来实现复位电路图如图8所示图846 模式选择模块两个中断口使用和感应铁片感应速度所使用的中断口一样通过一个与非门和按钮控制原理图如图9所示图95最小系统图 该系统主要用到的是单片机所以主要的部分是最小系统图该最小系统图如图10所示图126 最终PCB板图该最小系统的最终PCB板图包括LCD接口以及其他的外部扩展电路部分考虑到最小系统的简洁以及容易看懂外部扩展电路不在最小系统图上显示分别如图11图12所示图11图127系统程序按照预定的功能系统实现预定的功能的程序如下所示include include 宏定义区 define LCD_RW P2_6 读写控制端define LCD_RS P2_7数据命令选择端define LCD_E P2_5执行使能端define LCD_DataP1 P1口define Write0x00低电平写入define Read0x01高电平读出define Data0x01高电平选择数据define Cmd0x00低电平选择命令define Enable0x00跃变到低电平时执行命令define Disable0x01 define True0x01define False0x00define LCD_Init0x38初始化模式define LCD_DispCtr 0x0C开显示及光标设置define LCD_CloseCtr0x08关显示define LCD_CLS 0x01清屏幕define LCD_EnterSet 0x06显示光标 define BusyP1_7忙信号 define CircleLength0132小车转一轮的长度为132m define P03P0_3 后电机define P04P0_4 后电机define P01 P0_1 前电机define P02P0_2 前电机define P31P0_5 控制液晶背光define P33P3_3 define Line0x000代表直线模式define Curve0x011代表S型模式define Normal0x000 代表正常速度define Low0x011 代表低速define High0x022 代表高速 全局函数声明区 void LCDInit void LCD初始化void SetWriteCmd void 设置写命令模式void SetReadCmd void 设置读命令模式void SetWriteData void 设置写数据模式void WriteCmd char cmd 写命令void WriteData char ddata 写数据void ExecuteCmd void 执行命令void SetXY char xchar y 定位显示地址void DisplaySingleChar char xchar ychar cchar 显示单个字符void DisplayString char xchar ychar str 显示一段字符串void Delay unsigned int time 延时主程序void DelayUs unsigned int time 延时子程序bit IsBusy void 判断忙标志函数void DisplayTime void 显示时间void DisplayAVGSpeed void 显示平均速度void DisplayDistance void 显示路程 void INTInit void 所有中断初始化void SpeedINT void 测速中断void ComputeTime void void ComputeSpeedANDDistance void 计算速度和距离 void CtrSpeedINT void 控速中断void Time0INT void void Time1INT void 控速单位时间中断void Clock0_Init void 时钟中断初始化void Clock1_Init void 时钟中断初始化void CtrSpeed void 全局变量区float SpeedCount 0 测速计数脉冲float Speed 00float Distance 00 char Time1INTCount 0T1中断时间计时float PassTime 000小车行走的时间short IsT0INT 1bit IsT1INT判断T1是否已经响应中断short IsT0INT2 1char Thx5 0xf40xf40xc50xf40xff 3ms3ms15ms3mschar Tlx5 0x480x480x680x480xff char Thx0 0xd8char Tlx0 0xf0char Thx1 0xb1 20mschar Tlx1 0xe0short Round 0short Back 0short Back0 0bit Backidbit Stop 0char Area0 0char Area1 0区域变量char LowSpeedArea1StartTimechar LowSpeedArea1EndTimechar HighSpeedAreaEndTimechar LowSpeedArea2EndTimechar LowSpeedArea1PassTime 0 第一个低速区通过时间char HighSpeedAreaPassTime 0高速区通过时间char LowSpeedArea2PassTime 0第二个低速区通过时间char ReadyToGo 4倒计时char flagbit Roundid 0char Nocurve 0 char ChangeFlagchar Mode bit Runningbit SelectedAll模式和速度是否选择完毕标志bit IsSelectingMode模式选择标志bit IsSelectingSpeed速度选择标志bit ModeSelected已经被选择的模式标志char SelectedMode 10模式选择是否完毕标志bit NextNext键标志bit SpeedSelected已经被选中的速度方案标志char SelectedSpeed速度选择是否完毕标志bit ChoosingDisplay人工选择菜单开始标志bit SelectedShow显示选择标志bit SelectedReturn返回选择标志bit Selected确定返回键选择标志bit ReturnSelection返回键启用标志bit AVGSpeedShow平均速度显示标志bit TotalDistanceShow总路程显示标志bit ReturnMain返回主菜单标志bit AutoDisplay自动显示标志bit GoToChoosingDisplay人工选择标志bit AutoMode 0char PassLineID 0char PassLine 0float PrepareDistancefloat FirstDistancefloat SecondDistancefloat ThirdDistanceint FirstHighint SecondHighint ThirdHighfloat Rate 125 5ms时的速度float Count 4时间的倍数 全局函数实现区 void main P01 0P02 0P03 0P04 0P31 1单片机复位背光开Delay 40 延时等待LCD启动LCDInit 初始化LCDDisplayString 0x00 Starting DisplayString 0x01Designed By 202 Delay 300 WriteCmd LCD_CLS EA 1 开总中断EX0 1开INT0中断IT0 1INTO边沿触发EX1 1 开INT1中断IT1 1 INT1边沿触发SelectedAll False 开始模式和速度选择 DisplayString 0x00Choose The Mode DisplayString 0x01you want Delay 50 WriteCmd LCD_CLS IsSelectingMode Truewhile 1 WriteCmd LCD_CLS DisplayString 0x00 Line Mode DisplayString 0x01Next Yes Delay 300 延时消除抖动while 1 不断检测中断直到按确定键或是NEXT键 if Next True 如果按Next键则直接跳出breakif ModeSelected True 如果按确定键则设置模式为Line并跳出 SelectedMode Linebreak 如果什么键都没有按下那么一直显示等待 if ModeSelected True 按下了确定键退出模式选择 IsSelectingMode Falsebreak if Next True 按下了Next键显示下一个菜单项 Next FalseWriteCmd LCD_CLS DisplayString 0x00 Curve Mode DisplayString 0x01Next Yes Delay 300 延时消除抖动while 1 不断检测中断直到按确定键或是Next键 if Next True 如果再一次按下Next键则跳出breakif ModeSelected True 如果按下确定键则设置模式为Curve并跳出 SelectedMode Curvebreak if ModeSelected True 按下了确定键退出模式选择 IsSelectingMode Falsebreak if Next True 再一次按下了Next键则循环模式选择 Next FalseWriteCmd LCD_CLS DisplayString 0x00 AutoMode DisplayString 0x01Next Yes Delay 300 延时消除抖动while 1 if Next True breakif ModeSelected True AutoMode 1break if ModeSelected True IsSelectingMode Falsebreak if Next True Next Falsecontinue Delay 50 WriteCmd LCD_CLS if SelectedMode Line AutoMode 0 DisplayString 0x00 Now Choose a DisplayString 0x01 kind of Speed Delay 50 WriteCmd LCD_CLS IsSelectingSpeed Truewhile 1 WriteCmd LCD_CLS DisplayString 0x00 Normal Speed DisplayString 0x01Next Yes Delay 300 延时消除抖动while 1 if Next True 如果按Next键则直接跳出breakif SpeedSelected True 如果按确定键则设置速度为Normal并跳出 Thx0 0xecTlx0 0x78 5msThx1 0xf0Tlx1 0x60 4msThx2 0x8aTlx2 0xd0 30msThx3 0xf4Tlx3 0x48 3msSelectedSpeed Normalbreak 如果什么键都没有按下那么一直显示等待 if SpeedSelected True 按下了确定键退出速度选择 IsSelectingSpeed Falsebreak if Next True Next FalseWriteCmd LCD_CLS DisplayString 0x00 Low Speed DisplayString 0x01Next Yes Delay 300 延时消除抖动while 1 if Next True 如果再一次按下Next键则跳出breakif SpeedSelected True 如果按下确定键则设置速度为Low并跳出 SelectedSpeed Low这里没有速度设置因为默认速度就是Lowbreak if SpeedSelected True 按下了确定键退出速度选择 IsSelectingSpeed Falsebreak if Next True Next FalseWriteCmd LCD_CLS DisplayString 0x00 High Speed DisplayString 0x01Next Yes Delay 300 延时消除抖动while 1 if Next True 如果再一次按下Next键则跳出breakif SpeedSelected True 如果按下确定键则设置速度为High并跳出 Thx0 0xe0Tlx0 0xc0 8ms Thx1 0xe0Tlx1 0xc0 8ms Thx2 0x63Tlx2 0xc0 40ms Thx3 0xecTlx3 0x78 5msSelectedSpeed Highbreak if SpeedSelected True 按下了确定键退出速度选择 IsSelectingSpeed Falsebreak if Next True 再一次按下了Next键则循环速度选择 Next Falsecontinue SelectedAll True 标志模式选择和速度选择完毕Running TrueDelay 50 WriteCmd LCD_CLS if SelectedMode Line DisplayString 0x00Choosen Mode is DisplayString 0x01 Line Delay 50 WriteCmd LCD_CLS if SelectedMode Curve DisplayString 0x00Choosen Mode is DisplayString 0x01 Curve Delay 50 WriteCmd LCD_CLS if AutoMode 1 DisplayString 0x00Choosen Mode is DisplayString 0x01 AutoMode Delay 50 WriteCmd LCD_CLS if SelectedMode Line if SelectedSpeed Normal DisplayString 0x00Choosen Speed is DisplayString 0x01 Normal Delay 50 WriteCmd LCD_CLS if SelectedSpeed Low DisplayString 0x00Choosen Speed is DisplayString 0x01 Low Delay 50 WriteCmd LCD_CLS if SelectedSpeed High DisplayString 0x00Choosen Speed is DisplayString 0x01 High Delay 50 WriteCmd LCD_CLS INTInit 初始化所有中断DisplayString 0x00Left Times To Go while ReadyToGo- DisplaySingleChar 0x71ReadyToGo0x30 DisplaySingleChar 0x091s Delay 300 WriteCmd LCD_CLS DisplayString 0x050Go Delay 100 WriteCmd LCD_CLS DisplayString 0x00 Living DisplayString 0x01Designed by 202 if SelectedMode LineAutoMode 0 flag Area0else flag 1while flag 5 if AutoMode 1 自动模式 switch PassLineID case 0 if IsT0INT 1 P01 P02 P04 0P03 1 else P01 P02 P03 P04 0 break case 1 P01 P02 P03 0P04 1 break case 2 P01 P02 P04 0P03 1 break default break else if SelectedMode Line 直线模式 flag Area0 if IsT0INT 1 P03 1P04 0P01 P02 0 else P03 0P04 0P01 P02 0 else S型模式 if Nocurve 2 Round 0 Back0 0 Back 0 if Backid 1 P01 1P02 0P03 0P04 1 else P01 0P02 1P03 0P04 1 Back 1 else if Round 0 if IsT0INT2 1 P01 0P02 0P03 1P04 0 else P01 0P02 0P03 0P04 0 else if P33 0 if IsT0INT2 1 P01 0P02 0P03 1P04 0 else P01 0P02 0P03 0P04 0 else EX1 1 if Round2 if IsT0INT2 1 P01 1P02 0P03 1P04 0Backid 1 else P01 1P02 0P03 0P04 0 else if IsT0INT2 1 P01 0P02 1P03 1P04 0Backid 0 else P01 0P02 1P03 0P04 0 if IsT1INT 1 IsT1INT 0ComputeTime ComputeSpeedANDDistance 补中断路程加上最后一次中断缺失的路程ComputeSpeedANDDistance P04 1P03 0P01 P02 0Delay 90 P03 0P04 0行程结束小车停止P31 1 行程结束背光开ET0 0x0 关T0中断ET1 0x0 关T1中断EX1 0x01 开INT1中断Running FalseAutoDisplay True默认情况下直线模式会自动显示各个区域经过的时间WriteCmd LCD_CLS if SelectedMode Line 直线模式才显示 while 1 if GoToChoosingDisplay True breakDelay 200 WriteCmd LCD_CLS Delay 200 DisplayString 00 LowSpeedArea1 DisplayString 01 Costed DisplaySingleChar 0x0C1s LowSpeedArea1PassTime LowSpeedArea1EndTime-LowSpeedArea1StartTimeDisplaySingleChar 0x0A1LowSpeedArea1PassTime100x30 if LowSpeedArea1PassTime 9 通过第一个低速区的时间超过sDisplaySingleChar 0x0B1LowSpeedArea1PassTime100x30 if GoToChoosingDisplay True breakDelay 200 WriteCmd LCD_CLS Delay 200 DisplayString 00 HighSpeedArea DisplayString 01 Costed DisplaySingleChar 0x0C1s HighSpeedAreaPassTime HighSpeedAreaEndTime-LowSpeedArea1EndTimeDisplaySingleChar 0x0A1HighSpeedAreaPassTime100x30 if HighSpeedAreaPassTime 9 通过高速区的时间超过sDisplaySingleChar 0x0B1HighSpeedAreaPassTime100x30 if GoToChoosingDisplay True breakDelay 200 WriteCmd LCD_CLS Delay 200 DisplayString 00 LowSpeedArea2 DisplayString 01 Costed DisplaySingleChar 0x0C1s LowSpeedArea2PassTime LowSpeedArea2EndTime-HighSpeedAreaEndTimeDisplaySingleChar 0x0A1LowSpeedArea2PassTime100x30 if LowSpeedArea2PassTime 9 通过第二个低速区的时间超过sDisplaySingleChar 0x0B1LowSpeedArea2PassTime100x30 AutoDisplay False- 菜单选择你想要看的内容-总时间总路程以及平均速度 -ChoosingDisplay True WriteCmd LCD_CLS 首先显示主菜单然后显示第一个选项DisplayString 0x00Now Choose what DisplayString 0x01you want to see Delay 100 while 1 WriteCmd LCD_CLS DisplayString 0x00 Costed Time DisplayString 0x01Next Show Delay 250 延时消除抖动 不断检测确定键和Next键while 1 if Next True breakif SelectedShow True break 按下了确定键显示第一个选项的内容if SelectedShow True SelectedShow FalseSelectedReturn FalseSelected FalseWriteCmd LCD_CLS DisplayString 00Costed Time is DisplayTime DisplayString 0x0A1s ReturnSelection True 按下了确定键那么这个时候开启返回键的功能 AVGSpeedShow FalseDelay 250 延时消除抖动 按下了Next键则显示第二个选项if Next True 按下Next键显示AVGSpeed菜单项 Next FalseWriteCmd LCD_CLS DisplayString 0x00 AVGSpeed DisplayString 0x01Next Show ReturnMain FalseReturnSelection False 按下了Next键那么这个时候关闭返回键的功能AVGSpeedShow True 表明AVGSpeed选项已经显示过了Delay 250 延时消除抖动 显示第一个选项的内容后又不断检测返回键确定键和Next键while 1 if Next True breakif Selected True break if Next True Next FalseReturnMain FalseReturnSelection False 按下了Next键那么这个时候关闭返回键的功能if AVGSpeedShow False 还没有显示AVGSpeed选项显示它 即第一次选择了确定键WriteCmd LCD_CLS DisplayString 0x00 AVGSpeed DisplayString 0x01Next Show TotalDistanceShow False显示了AVGSpeed则表明TotalDistance还没有显示Delay 250 延时消除抖动 if AVGSpeedShow True 已经显示过AVGSpeed选项了则显示下一个选项 即第一次选择了Next键WriteCmd LCD_CLS DisplayString 0x00 Total Distance DisplayString 0x01Next Show TotalDistanceShow True 表明显示了TotalDistance选项Delay 250 延时消除抖动 if Selected True 按下了确定键或返回键 SelectedShow FalseSelectedReturn FalseSelected Falseif ReturnSelection True 第一次选择了确定键故这次按下的是返回键ReturnMain Trueif ReturnSelection False WriteCmd LCD_CLS DisplayString 00The AVGSpeed is DisplayAVGSpeed DisplayString 0x0A1ms ReturnSelection True 按下了确定键那么这个时候开启返回键的功能Delay 250 延时消除抖动 TotalDistanceShow False if ReturnMain True 按下了返回键返回主菜单 ReturnMain Falsecontinue 如果没有返回主菜单则继续检测Next键和确定键while 1 if Next True breakif SelectedShow True break 按下Next键显示下一个选项if Next True Next FalseReturnMain FalseReturnSelection False 按下了Next键那么这个时候关闭返回键的功能if TotalDistanceShow True ReturnMain Trueif TotalDistanceShow False 还没有显示TotalDistance选项显示它 WriteCmd LCD_CLS DisplayString 0x00 Total Distance DisplayString 0x01Next Show TotalDistanceShow True Delay 250 延时消除抖动 if Selected True 按下了确定键或返回键 SelectedShow FalseSelectedReturn FalseSelected Falseif ReturnSelection True 按下的是返回键ReturnMain Trueif ReturnSelection False if TotalDistanceShow False 表明AVGSpeed选项的内容还没有显示 WriteCmd LCD_CLS DisplayString 00The AVGSpeed is DisplayAVGSpeed DisplayString 0x0A1ms ReturnSelection True Delay 250 延时消除
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!