基于51单片机智能小车的设计内容摘要:
问题远不止这些,但是,无论怎样的挫折,无论怎样的想要放弃,最后都坚持了下来。 有困难就查资料,有困难就请教同学,有困难就解决困难 !本着这样的信念和心态,我们解决了一个个的困难, 虽说结果不能达到预期结果,但从中我们也学到了很多知识,从原来一点都不知道的 HX1838(红外接收) ,L298N( 驱动 ), DS18B20(测温度) 到最后的的每一个 元 件都 有所了解,我觉得这就是我们坚持到最后的最大成果,其实在很多事情来临时,我们不仅仅关心的是最后的结果,更重要的是拥有其中的过程。 在整个动手过程,既加深了我们对单片机的理论认识,又通过智能小车这个很有意思的载体,实现了对单片机的应用。 同时,对我而言,这次课程设计还有更重要的意义,那就是我开启了对单 片机制作的兴趣,个人希望在以后的工作学习中,加强这方面的训练,多制作出自己感兴趣的单片机作品。 设计心得体会(雷军) 经过这一个 星期的实习,过程曲折真是一语难尽。 从开始时充满激情总以为什么都很简单,到最后差点有点想放弃的冲动,这之间的复杂心情,点点滴滴无不令我回味无长。 特别是在设计程序的过程中,我明白到做一个好程序的不易,做一个好的编程者就更加艰难,突然就很佩服那些编程者。 这我们组一 共三个人,小车整体上是我们三个都在做,但个人的侧重点不同,魏璐主要负责查询资料和设计论文,我和陈志伟 主要负责硬件搭建和软件调试。 通过这次课程设计,加强了我们动手、思考和解决问题的能力。 在整个设计过程中,我们一共用了三个板子,一个是我们以前焊的 51 板,红外接收电路以及 12864的显示电路,硬件大体就是这样。 在电路焊接的过程中,我们是不停的返工,经过不停的 智能小车的设计 13 / 29 修改测试,最终将硬件搭接好了。 剩下的主要是软件调试,这个我们花了好长时间,几乎是三个人换着调的,这个真是太麻烦了,稍微有点错误,就出现 问题,这个真是对我们耐心的大挑战,不过最后还是没达到预期的效果 ,感觉有点遗憾。 我觉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的 功能,并且对于其在电路中的使用有了更多的认识。 平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。 而且还可以记住很多东西。 比如一些芯片的功能,比如 HX1838(红外接收) ,L298N( 驱动 ), DS18B20(测温度)等等。 平 时看课本,这次看了,下次就忘了,通过动手实践让我们对各个元件印象 深刻。 认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。 所以这个期末测试之后的课程设计对我们的作用是非常大的。 在课程设计的过程中,真正体会到了理论运用到实际中是具有很大的差别 的。 往往会 出现意想不到的问题,我们必须得做到冷静耐心的去分析问题,而不是焦躁不安,轻言放弃。 当然了,这次的课程更重要的是团队的合作,我们必须得各尽所长才能解决 各种困难。 设计心得体会(陈志伟) 万事开头难。 在刚开始接触到硬件的时候,根本就无从下手,在几番请教过别人之后,才有一点点的头绪,之后才知道先干什么,后干什么。 在这次的智能小车设计过程中,我们先查找有关的芯片和元器件的资料,了解它的用法及各个管脚的功能,然后先按模块进行硬件是焊接,先把各个模块调试好,在将模块组装在一起。 在这次的智能小车设计中,小车的模块 分为电机驱动模块,红外接收模块,温度检测模块,液晶显示模块,稳压模块,单片机最小应用系统等。 在红外接收模块调试中,我们遇到了本设计中遇到的最大问题,当我们把遥控解码之后,程序烧到单片机中之后,按了遥控器中的按键,红外接收模块中的发光二级管已经亮了,这说明红外能接受到遥控的信号,而单片机却没有反应,我们所用的红外是 HX1838,经过几个人不停的调试,不 断地修改程序,在小车接收到遥控的信号时,大家都由衷的高兴,可是还是不能达到我们所预期的结果,难免心中有些遗憾。 在整个的过程中,我清楚的意识到团队合作的重要性。 一个大的项目不是一个人可以完成的,虽然我们在课程设计的一开始,就已经分工好。 但是在整个过程,在开始的硬件搭建时我们三个人都有参加,如果不了解硬件的组成,软件调试和论文根本就没有办法完成。 我们在查资料的时候,我们都会资源共享。 在整个过正中我们每个人都会有一份芯片的资料。 总之, 这次的课程设计,让我获益匪浅。 我明白了团队协作,分工合作的团队精神。 在经过大家不停的奋战 之后,我们的智能小车终于完成的。 功夫不负有心人。 智能小车的设计 14 / 29 元件清单: 名称 型号 数量 遥控接收器 HX1838 1 驱动芯片 L298N 1 LCD 液晶显示器 12684 1 温度传感器 18SB20 1 二极管 1N4007 8 电容 104 1 电 机 两相 直流 电机 2 单片机 AT89C52 1 车体 1 程序清单 : 主程序: include include include sbit EA0=P3^4。 sbit EA1=P3^5。 sbit EB0=P3^6。 sbit EB1=P3^7。 uchar table[]={多功能小车 }。 uchar x[33]。 uchar ircode[4],star=0,count1=0,count2,bye=0,chuliok=0。 //uchar y[5]={2343,1353,1452,1848,1749}。 uchar count3,count4=0。 void Temp() { ReadTemp()。 //开启温度采集程序 temp_to_str()。 //温度数据转换成液晶字符 Write_Com(0x90+6)。 //液晶字符显示位置 Print(TempBuffer)。 //显示温度 智能小车的设计 15 / 29 } void timer0init(void) //定时器 0 定时方式 2 初始化 { TMOD=0x02。 TH0=0x00。 TL0=0x00。 ET0=1。 EA=1。 TR0=1。 } void int0init(void) //外部中断 0 初始化 { IT0=1。 EX0=1。 EA=1。 } void chuli( void) //字节数据处理 { int i,j,k=1,a。 for(j=0。 j4。 j++) { for(i=0。 i8。 i++) { a=a1。 if(x[k]6) a=a|0x80。 k++。 } ircode[j]=a。 } chuliok=1。 } void go(void) {EA0=0。 EA1=1。 EB0=0。 EB1=1。 } void back(void) {EA0=1。 EA1=0。 EB0=1。 EB1=0。 } void left(void) {EA0=0。 EA1=1。 EB0=1。 EB1=0。 } void right(void) {EA0=1。 EA1=0。 EB0=0。 EB1=1。 } void key() //按键扫描与处理 {count3=ircode[2]。 // EA0=0。 // EA1=0。 // EB0=0。 智能小车的设计 16 / 29 // EB1=0。 //默认打开电源为停止 switch(count3) { case 0x1A: go()。 break。 //前进键 case 0x05: back()。 break。 //后退 case 0x01: left()。 break。 //左拐弯 case 0x03: right()。 break。 //右拐弯 default: break。 } } void main() { Ini_Lcd()。 timer0init()。 int0init()。 dis_hanzi(0x80+2,table,5)。 Write_Com(0x90)。 chinesedis(当前温度值: )。 Write_Com(0x88)。 chinesedis(行驶方式: )。 Write_Com(0x90+7)。 chinesedis(℃ )。 while(1) { P1=0x07。 Delay_Nms(1010)。 P1=0x0a。 Delay_Nms(1010)。 Temp()。 if(bye) { chuli()。 bye=0。 } if(chuliok) { P1=0x01。 chuliok=0。 star=0。 } if(star) { 智能小车的设计 17 / 29 EA0=0。 EA1=0。 EB0=0。 EB1=0。 } key()。 Write_Com(0x98+2)。 Write_Data(ircode[2])。 } } void timer0() interrupt 1 //定时器中断 { count1++。 } void int0() interrupt 0 //外部中断与数据接收 { if(star) { if(count132) //判断是否为引导吗 count2=0。 x[count2]=count1。 count1=0。 count2++。 if(count2==33) { bye=1。 } } else { star=1。 count1=0。 } } 子程序: ( 1) Header file for generic 80C52 and 80C32 microcontroller. Copyright (c) 19882020 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. */ ifndef __REG52_H__ define __REG52_H__ /* BYTE Registers */ 智能小车的设计 18 / 29 sfr P0 = 0x80。 sfr P1 = 0x90。 sfr P2 = 0xA0。 sfr P3 = 0xB0。 sfr PSW = 0xD0。 sfr ACC = 0xE0。 sfr B = 0xF0。 sfr SP = 0x81。 sfr DPL = 0x82。 sfr DPH = 0x83。 sfr PCON = 0x87。 sfr TCON = 0x88。 sfr TMOD = 0x89。 sfr TL0 = 0x8A。 sfr TL1 = 0x8B。 sfr TH0 = 0x8C。 sfr TH1 = 0x8D。 sfr IE = 0xA8。 sfr IP = 0xB8。 sfr SCON = 0x98。 sfr SBUF = 0x99。基于51单片机智能小车的设计
相关推荐
加交流电压。 在黑暗环境里,它的电阻值很高,当受到光照时,只要光子能量大于半导体材料的禁带宽度,则价带中的电子吸收一个光子的能量后可跃迁到导带,并在价带中产生一个带正电荷的空穴,这种由光照产生的电子 — 空穴对增加了半导体材料中载流子的数目,使其电阻率变小,从而造成光敏电阻的阻值下降。 光照愈强,阻值愈低。 入射光消失后,由光子激发产生的电子 — 空穴对将逐渐复合,光敏电阻的阻值也就逐渐恢复原值
程序、一线发码子程序。 主程序直接调用这些子程序,结构 清晰明了,又方便调试和修改程序。 设置是否有键按下的标志 F0, F0为 1,有键按下; F0 为 0,则无键按下。 软件编程具体的流程图如图31所示。 开 始初 始 化启 动 上 行 线发 送 语 音 或命 令 码显 示 站 台按 键 扫 描F 0 = 1 ?。 上 行 线 按 键处 理运 行 到 上 行 线 终 点 站吗。 显 示 站
设计要求 ( 1) 设计一出租车自动计费器,计费包括起步价、行车里程计费、等待时间计费三部分。 设起步价为 元,起步里程为 2 公里,当行程超过 2 公里,每公里按 元计费。 等待时间超过 2 分钟,按照 元每分钟计费。 ( 2) 用液晶 1602 显示总金额、行车时间、等待时间。 总费用显示范围为 — 元,精确到 元,行车里程显示范围为 0— 99km,精确到 1km,等待时间显示范围为 0—
11 由以上流程图,可以得出水位控制程序清单如下: ORG 0000H AJMP MAIN ORG 0030H SJMP LOOP ORG 0050H MAIN: SETB CLR CLR ACALL DELAY SETB SETB WAIT: JB ,DONE1。 检测转换是否完成 SJMP WAIT。 等待转换完成 DONE1 : CLR CLR MOV A,P0 CLR C SUBB A
系统可编程)/IAP(在应用可编程),无需专用 编程器 ;可通过串口( )直接下载 用户程序 ,数秒即可完成;内部集成 MAX810专用复位电路(外部晶体 20M以下时,可省外部复位电路);时钟源 特点是外部高精度晶体 /时钟,内部 R/C 振荡器,用户在下载 用户程序 时,可选择是使用内部 R/C振荡器还是外部晶体 /时钟。 常温下内部 R/C振荡器频率为: ~。 精度要求不高时
时,我们需要提前探知其前 方是否存在障碍物,这样就可以在行进过程中,自动选择远离障碍物的路线。 在避障模块的选择时,有两种选择,一种是使用红外避障,还有一种是超声波避障。 红外避障是通过发射和接收光信号,在通过一系列的转换变为数字信号,来判断前方障碍物。 这种方式容易受到其他光的干扰,使得检测结果不准确。 而且由于其光束比较集中,在探测时其探测的区间较小,可能会造成避障不成功。