数理与信息工程专业 智能小汽车设计和实现

上传人:文*** 文档编号:240899580 上传时间:2024-05-16 格式:DOC 页数:40 大小:400.55KB
返回 下载 相关 举报
数理与信息工程专业 智能小汽车设计和实现_第1页
第1页 / 共40页
数理与信息工程专业 智能小汽车设计和实现_第2页
第2页 / 共40页
数理与信息工程专业 智能小汽车设计和实现_第3页
第3页 / 共40页
点击查看更多>>
资源描述
目录第1节 引 言.31.1 智能小汽车系统概述.31.2 本设计任务和主要内容3第2节 系统主要硬件电路设计4 2.1 系统方案论证与比较4 2.2 单片机主机系统电路52.2.1 时钟电路5 2.2.2 复位电路6 2.3 电机的选择与论证6 2.4 电机驱动方案与电路6 2.5 探测障碍物方案与电路8 2.6 光源检测方案与电路9 2.7 显示部分方案与电路9 2.8 电源方案与PCB电路.10 2.9 入库前后声音提示方案与电路.11 2.10 拦栅控制电路.12 2.11 车速检测模块电路.13第3节 系统的软件设计.143.1 系统主程序设计.143.2 小车行使程序.32第4节 结束语.39参考文献.40附录.41智能小汽车第1节 引 言 题目要求设计一智能小汽车,小车能够准确寻找到光源,并随着光源的引导,能够顺利地进入车库,同时在行程过程中能准确地显示小车的行使路程的总时间。根据要求本设计用两个电机来控制小车的转向,用红外对管传感器来检测障碍物,用光敏电阻来检测光源,用夜晶来显示小车的行使时间和车库拦栅上升的时间、高度以及当前温度等。与此同时通过语音电路来实现人性化的人机互动。作品可以作为高级智能玩具,也可以作为大学生学习嵌入式控制的强有力的应用实例,该系统将会有更广阔的开发前景。1.1 智能小汽车系统概述本设计制作了一款具有智能判断功能的小车,功能强大。小车具有以下几个功能:自动避障功能(避免撞到车库的三块木板);趋光功能(寻找前方的点光源并行驶到位、寻找车库门);显示小车行走的总时间以及车库拦栅上升的时间、高度以及当前温度,同时在小车准备入库时和入库后进行语音提示。在小车行走控制中作品以两直流电动机为主驱动,通过各类传感器件来采集各类信息,送入主控单元AT89C51单片机,处理数据后完成相应动作,以达到自动控制。在开启和关闭车库拦栅时用步进电机来控制,并通过单片机来实现相应动作。直流电机驱动电路采用三极管8550、8050组成的H桥型驱动电路及应用光藕芯片对两路电源进行分离。步进电机采用L298N和IN5408来驱动,其中避障采用红外对管收发来完成;趋光部分通过两路光敏电阻对光源信号的采集,再将信号送到单片机处理去判别方向,并由控制单元处理数据后完成相应动作,实现了无人控制即可完成一系列动作,相当于简易机器人。1.2 本设计任务和主要内容 本论文主要研究单片机控制的智能小汽车系统,小车控制技术及系统设备的软、硬件各个部分进行了研究。主要内容如下: 根据小车的特点,进行智能小汽车控制系统的整体研究与设计。对其设计进行了深入的研究,重点研究小车入库控制方式。 LCD显示小车行走的总时间以及车库拦栅上升的时间、高度以及当前温度,同时在小车准备入库时和入库后进行语音提示。第2节 系统主要硬件电路设计2.1 系统方案论证与比较( 方案一:采用各类数字电路来组成小车的控制系统,对外围避障信号,各路趋光信号进行处理,车库拦栅上升下降控制,温度显示等。本方案电路复杂,灵活性高,效率低,不利于小车智能化的扩展,对各路信号处理比较困难。 方案二:采用AT89C51单片机来作为整机的控制核心单元。红外线探头采用市面上通用的发射管与及接收头,经过单片机调制后发射。车库拦栅控制部分用步进机来驱动再将采集到的各类信号送往单片机进行综合分析处理,实现准确有效的动作,此系统比较灵活,采用软件方法来解决复杂的硬件电路部分使系统硬件简洁化,各类功能易于实现,能很好地满足题目的要求,并容易扩展功能。 比较以上两种方案的优缺点,方案二简洁、灵活、可扩展性好,能达到题目的设计要求,因此采用方案二来实现。本系统可由图2-1所示的几个部分组成。图2-1 单片机控制系统原理框图其中传感器原理框图如图2-2所示。图2-2 传感器原理框图22 单片机主机系统电路AT89C51单片机是51系列单片机的一个成员,是8051单片机的简化版。内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C51构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。图2-3 单片机主机系统图2.2.1时钟电路 单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图2-3所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。 图2-3中外接晶体以及电容C2和C1构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值均为30P左右,晶振频率选12MHz。2.2.2复位电路 为了初始化单片机内部的某些特殊功能寄存器,必须采用复位的方式,复位后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。复位后系统将输入/输出(1/0)端口寄存器置为FFH,堆栈指针SP置为07H, SBUF内置为不定值,其余的寄存器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。复位操作有两种情况,即上电复位和手动(开关)复位。本系统采用上电复位方式。 图2-3中R9和Cl组成上电复位电路,其值R取为10K, C取为22pF。2.3 电机的选择与论证方案一:采用普通的直流电机。直流电动机具有优良的调速特性,调速平滑、方便,调整范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无数快速启动、制动和反转。方案二:采用步进电机。步进电机的一个显著特点是具有快速的启停能力,如果负荷不超过步进电机所能提供的动态转矩值,就能够立即使步进电机启动或反转。另一个显著特点是转换精度高,正转反转控制灵活。考虑到时间的限制,同时普通的直流电机电路设计相对简单且容易获得,所以在设计小车行走过程中采用选择方案一的现成的直流电机作为动力驱动。在车库拦栅控制部分,采用方案二的步进电机来进行控制。2.4 电机驱动方案与电路方案一:采用继电器对电动机的开或关进行控制,通过控制开关的切换速度实现对小车的速度进行调整。这个电路的优点是电路结构简单,其缺点是继电器的响应时间长,易损环,寿命短,可靠性不是很高。方案二:小车行走电路采用两对互补型晶体管8550(PNP)型和8050型(NPN)接成桥式电路。用AT89C51软件编程来控制各晶体管导通,分别对应电机的正转与反转,同时为了达到效果我将控制电路电源和电动机电源隔离开来,在桥式电路之前加了光电耦合器(U5B TP521-2),该电路的优点是电路简单,通过单片机的软件控制互补型晶体管的导通与截止,方便的调整电动机的运动状态。缺点是当两个输入端都为高电平时,驱动电路的三极管同时导通,容易烧坏晶体管。方案三:(1)车库拦栅控制部分采用集成电路L298N和二极管IN5408组成的电路来作为驱动,其原理如同方案二,同样利用晶体管的导通与截止来驱动电机的转动。L298N内部包含4通道逻辑驱动电路。是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。1脚和15脚可单独引出连接电流采样电阻器,形成电流传感,因此对步进机来说,可以非常好的对其驱动。(2)采用驱动步进机专用芯片ULN2003A,该芯片电路简单,容易控制,但驱动力比较大。在本次设计中的小车行走电路,由于继电器对设计中的种种限制,所以采用方案二中的8050和8550组成的桥电路。对车库拦栅控制部分,因为题目要求电机能够自如提起放下拦栅(重量比较重),由于没能找到达林顿管ULN2003A,因此我们采用驱动力比较大的L298N来驱动,因此采用方案三(1)。图2-4 电动机PWM驱动电路该电路的工作原理如下所示:电动机驱动由单片机两路输入,可分为四种情况讨论:(1)当A端输入为低电平、B端输入为高电平时,使Q1、Q4管截止,Q2、Q3管导通,电动机正转。 (2)当A端、B端输入都为高电平时,经过光电传输,使Q1、Q2、Q3、Q4管都截止,电动机不运转。 (3)当A端输入为高电平、B端输入为低电平时,使Q1、Q4管导通、Q2、Q3管截止,电动机反转。(4)当A端、B端输入都为低电平,经过光电传输,使Q1、Q2、Q3、Q4管都导通,这在电路中是不允许出现的现象.考虑到电动机的启动时电流很大,而且电动机波动较大,容易造成电压不稳、等干扰,我运用了P521光耦集成块,将控制部分与电动机的驱动电路隔离开来,确保安全。2.5 探测障碍物方案与电路方案一:采用超声波测距障碍。超声波测距模块利用其测距原理可以可靠地判断小车前方是否有障碍物,如果传感器接收到反射回来的超声波,则通过单片机来控制小车前进路线。但是超声波受环境影响较大,电路复杂,而且地面对超声波的反射,会影响系统对障碍物的判断。方案二:采用红外对管。电路中带有集成锁相环路解码器LM567或使用LM393 。当红外发射管检测到障碍物时,LM567输出端输出低电平,否则输出高电平,并将信号传给单片机来控制小车避障和前行的动作。利用单片机来产生信号对红外线发射管进行调制发射,发射出去的红外线遇到避障物的时候反射回来,红外线接收管对反射回来信号进行解调,输出TTL电平。外界对红外信号的干扰比较小,且易于实现,价格也比较便宜。通过比较以及材料够得的容易情况,选择了方案二中红外对管电路比较合理。在此模块中是使用红外对管和集成电路LM393,通过红外发射管是否检测到障碍物情况,经过LM393输出端输出电平的高低,将此信号送给单片机,使之执行相应的动作,其电路原理图如图2-5所示。图2-5 避障检测的电路原理图2.6 光源检测方案与电路方案一:利用光敏电阻组成的电路。当光敏电阻检测到光源时,光敏电阻对是否接受到光源时会产生高低不同的信号脉冲,这样将信号传给单片机从而控制小车向光源行使到达车库。方案二:利用红外发射、接收器组成的电路,具有可大幅度减少外界干扰,灵敏度高,信噪比强等优点,但是,电路复杂、调试难度大。另外,电动车进入车库后,要求小汽车能够立即停车,通过红外发射、接收器检测车库障碍物,然后通过单片机动作使电动车立即刹车。但容易车身压线,不符合题目要求。因此,不采用此方案。基于上述理论分析,选择方案一。设计中,在车头安装了两个光敏电阻,把电动车引到有光源的车库,原理是这样的:当左边的光敏电阻检测到光源时,小车会往左转,当左边的光敏电阻检测到光源时,小车会往左转。加上其他传感器的信息采集,从而让小车准确如库,其电路原理图如图2-6所示。图2-6 光源检测电路原理图2.7 显示部分方案与电路方案一:采用LED数码管显示小车行驶的时间和路程以及拦栅上升时间和高度,在本系统中要用到10只LED数码管进行动态显示即可达到要求。其优点是价格便宜,寿命长;缺点是只能显示09的数字和一些简单的字符,电路设计繁锁,且占用空间。方案二:采用LCD(12864)液晶显示,其优点是能显示更多的字符,工作电流比LED小,故其功耗低,且可以有良好的人机界面,直观,显示效果漂亮,体积小。综合考虑选择此方案。由于12864液晶不仅可以显示数字,而且可以显示汉字和图象,这样设计产生的效果非常直观,具有人性化设计。在本设计中采用12864作为显示部分,电路原理图如图2-7所示:图2-7 显示、单片机最小系统模块的电路原理图2.8 电源方案与PCB电路方案一:采用双电源供电。用两个电源分别给控制系统和电机系统供电,将两个系统完全隔离,利用光电耦合器传输信号,将电动机驱动所造成的干扰彻底消除,这样就提高了系统的稳定性。方案二:用单电源给电机系统供电,但是控制系统对电流需求量大,因为电机启动瞬间电流会很大,会造成控制系统电压不稳,干扰较大,严重时可能造成单片机系统掉电。综上所述,采用方案二且用5节1.5V的干电磁组成7.5V的电源或使用蓄电池给电机系统供电,用1节9V的干电磁与7805组成输出恒为5V的电源给控制系统供电。本设计考虑到小车所能承受的压力有限,所以采用比较简单的由7805组成的电源对小车系统进行供电。其电路图如图2-8所示。图2-8 电源供电模块PCB图2.9 入库前后声音提示方案与电路 方案一:采用74LS04非门组成的普通电路,由单片机产生不同的频率信号来完成声音提示,此方案易于实现,成本也不高,能完成声音提示功能,可给人以提示的可懂性比较差。 方案二:采用ISD1420可分段录放音模块,能够给人以直观的提示,但IDS1420录放音模块价格比较高,也可以采用此方案来处理,但由于该芯片最大录音时间为20S,可读性比较好,具有人性化的操作,对题目设计来说可能达不到要求。方案三:采用ISD2560 录放音模块,同样能够给人以直观的提示,价格也比较高,同时该芯片最大录音时间为60S,可读性很好,具有人性化的操作,可以满足题目要求。综上所述:方案一对一般的报警可以达到要求,但在设计中要求做到人性化的要求,因此放弃方案一,对方案二和方案三采用录音时间长的ISD2560来实现,这样更能保证设计的可靠性和有效性。此模块有三部分电路组成,可以独立地完成各自的功能,语音播放功能可以达到直观,具有人性化的服务。声光电路结构简单,主要用以报警提示。温度检测电路利用DS18B20温度传感器的特点,可以准确地检测到周围环境的温度。其原理图如图2-9所示。图2-9 声光、语音提示检测模块2.10 拦栅控制电路 电路主要是步进机驱动电路,由于拦栅有一定的重量,所以驱动电动机的驱动力就必须大,因此采用驱动力大的专用芯片L298N来驱动。其原理图如图2-10所示。图2-10 拦栅控制电路2.11 车速检测模块电路在车轴上固定安装一对红外对管,在车轮圆周上粘贴一段白纸条。当车轮转动时,遮光条通过红外对管,使其得到通断相间的高低电平信号。得到的信号经过由LM393组成的过压比较器,使输出电压规范到两个标准值,在发送至单片机分析处理,以实现车速和薄铁片距离的计算。具体路如图2-11所示。 设计中,我们将红外对管安装在后轮上,因为前轮要完成转弯的功能,如果将红外对管安装在前轮,转弯的灵活性就变差了,而且测的数据不够准确。图2-11 车速检测的电路原理图第3节 系统的软件设计系统软件设计主要包括:主程序设计,小车驱动子程序设计,显示子程序。31 系统主程序设计 图3-1 主程序流程图根据设计要求,可得本系统的程序流程图如图3-1所示。本系统的控制器采用常用的AT89C51,因为控制小车比较模块化,所以使用汇编语言进行软件编写。 ;12864(带字库汉字显示演示程序) RS EQU P2.0 RW EQU P2.1 E EQU P2.2 PSB EQU P2.3 DI BIT P2.4 ;DS18B20输入端 RST EQU P2.5 DIR_RD EQU P3.0;- COUNT EQU 31H LCD_DATA EQU 36H LCD_DATA1 EQU 37H LCD_DATA2 EQU 38H STORE EQU 39H DAT EQU 2EH ;DS18B20、液晶数据暂存 TEMPH EQU 3AH TEMPL EQU 3BH;- ORG 0000H LJMP START ORG 001BH LJMP TIM1 ORG 0100H;-START: MOV SP,#70H MOV 2AH,#00 ;上升时间用定时器2 MOV 2BH,#00 ;高度 MOV 2CH,#00 MOV 20H,#00 ;储存上升时间 MOV 21H,#00 MOV 40H,#00 ;储存上升高度 MOV 41H,#00 MOV 42H,#00 MOV 43H,#00 MOV TEMPH,#00H MOV TEMPL,#00H SETB P2.6 ;片选端 (语音) CLR P2.7 ;复位端 SETB P3.1 ;声光端 MOV TMOD,#00010000B MOV TH1,#HIGH(65536-50000) MOV TL1,#LOW(65536-50000) MOV IE,#10001000B MOV R5,#20 CLR RS CLR RW CLR E LCALL DS18B20 ;DS18B20先转换一次 SETB DI CLR TR1 CLR RST ;复位 LCALL DELAY4 SETB RST NOP SETB PSB ;通讯方式为8位数据并口;*液晶初始化*LGS0: MOV A,#34H ;34H-扩充指令操作 LCALL SEND_I ;写指令子程序 MOV A,#30H ;30H-基本指令操作 LCALL SEND_I MOV A,#01H ;清除显示 LCALL SEND_I MOV A,#06H ;指定在资料写入或读取时,光标的移动方向 LCALL SEND_I ;DDRAM 的地址计数器(AC)加1 MOV A,#0CH ;开显示,关光标,不闪烁 LCALL SEND_I;*; 显示字符;*XSZF: MOV DPTR,#TAB1A ;显示汉字和字符 MOV COUNT,#08H ;地址计数器设为16。 MOV A,#80H ;第一行起始地址 LCALL SEND_I LCALL QUSHU MOV DPTR,#TAB1B ;显示汉字和字符 MOV COUNT,#10H ;地址计数器设为16。 MOV A,#90H ;第二行起始地址 LCALL SEND_I LCALL QUSHU MOV DPTR,#TAB1C ;显示汉字和字符 MOV COUNT,#08H ;地址计数器设为16。 MOV A,#88H ;第三行起始地址 LCALL SEND_I LCALL QUSHU MOV DPTR,#TAB1D ;显示汉字和字符 MOV COUNT,#08H ;地址计数器设为16。 MOV A,#98H ;第四行起始地址 LCALL SEND_I LCALL QUSHU MOV DPTR,#TAB1E0 ;显示汉字和字符 MOV COUNT,#2H ;地址计数器设为16。 MOV A,#9FH ;第四行起始地址 LCALL SEND_I LCALL QUSHU ;温度;*; 按键操作; 升 降 停按键;*N0:JB P3.7,N1 SETB TR1 CLR P2.6 CLR P2.7 MOV A,#8DH LCALL SEND_I MOV A,#18H LCALL SEND_D CALL TIM1 JMP SHANGSHENGN1:JB P3.5,N2 CLR TR1 SETB P2.6 SETB P2.7 CALL TIM1 JMP STOP03N2:JB P3.6,N0 SETB TR1 SETB P2.6 MOV A,#8DH LCALL SEND_I MOV A,#19H LCALL SEND_D CALL TIM1 JMP XIAJIANG;*; 上升子程序0;*SHANGSHENG :JB P3.5,ST CLR TR1 SETB P2.6 SETB P2.7 CALL TIM1 JMP STOP03ST:MOV R0,#00HSTART1:MOV A,R0 MOV DPTR,#TABLE MOVC A,A+DPTR JZ SHANGSHENG MOV P0,A CALL DELAY1 INC R0 LJMP START1 RET;*; 上升子程序1;*SHANGSHENG1 :JB P3.6,ST1 MOV 2AH,#00H MOV 2BH,#00H MOV 2CH,#00H SETB TR1 SETB P2.6 MOV A,#8DH LCALL SEND_I MOV A,#19H LCALL SEND_D CALL TIM1 JMP XIAJIANG0ST1:MOV R0,#00HSTART11:MOV A,R0 MOV DPTR,#TABLE MOVC A,A+DPTR JZ SHANGSHENG1 MOV P0,A CALL DELAY1 INC R0 LJMP START11 RET;*;停止子程序1 (上升下降停止键无效 P3.4有效并且进行软件复位);*STOP: JB P3.6,STOP00 SETB TR1 SETB P2.6 MOV A,#8DH LCALL SEND_I MOV A,#19H LCALL SEND_D CALL TIM1 JMP XIAJIANG0STOP00:JB P3.7,STOP0 MOV 2AH,#00H MOV 2BH,#00H MOV 2CH,#00H SETB TR1 CLR P2.6 CLR P2.7 MOV A,#8DH LCALL SEND_I MOV A,#18H LCALL SEND_D CALL TIM1 JMP SHANGSHENG1STOP0: MOV R0,#00HSTOP1: MOV A,R0 MOV DPTR,#TABLF MOVC A,A+DPTR MOV P0,A CALL DELAY1 INC R0 JZ STOP JMP QQQQ: RET;*; 停止子程序2 下降;*STOP2:JB P3.6,STOP02 SETB TR1 SETB P2.6 CALL TIM1 JMP XIAJIANGSTOP02: MOV R0,#00HSTOP12: MOV A,R0 MOV DPTR,#TABLF MOVC A,A+DPTR JZ STOP2 MOV P0,A CALL DELAY1 INC R0 RET;*; 停止子程序3 上升;*STOP3:JB P3.7,STOP03 SETB TR1 CLR P2.6 CLR P2.7 CALL TIM1 JMP SHANGSHENGSTOP03: MOV R0,#00HSTOP13: MOV A,R0 MOV DPTR,#TABLF MOVC A,A+DPTR JZ STOP3 MOV P0,A CALL DELAY1 INC R0 RET;*; 下降子程序0;*XIAJIANG:JB P3.5,XX CLR TR1 SETB P2.6 CALL TIM1 JMP STOP2XX: MOV R0,#00HXIAJIANG1:MOV A,R0 MOV DPTR,#TABLG MOVC A,A+DPTR JZ XIAJIANG MOV P0,A CALL DELAY11 INC R0 LJMP XIAJIANG1 RET;*; 下降子程序1;*XIAJIANG0:JB P3.7,XX1 MOV 2AH,#00H MOV 2BH,#00H MOV 2CH,#00H SETB TR1 SETB TR0 CLR P2.6 CLR P2.7 MOV A,#8DH LCALL SEND_I MOV A,#18H LCALL SEND_D CALL TIM1 JMP SHANGSHENG1XX1: MOV R0,#00HXIAJIANG10:MOV A,R0 MOV DPTR,#TABLG MOVC A,A+DPTR JZ XIAJIANG0 MOV P0,A CALL DELAY11 INC R0 LJMP XIAJIANG10 RET;*; 自动计时1;*TIM1: PUSH ACC PUSH PSW MOV TH1,#HIGH(65536-50000) MOV TL1,#LOW(65536-50000) DJNZ R5,X3 MOV R5,#20 CALL CLOCK CALL DISP CALL RTEMP CALL WORK CALL GAODU CALL DISP1X3: POP PSW POP ACC RETI;*运行时间*CLOCK: MOV A,2AH ADD A,#01 DA A MOV 2AH,A CJNE A,#05H,X5 MOV 2AH,#00H MOV 2BH,#00H MOV 2CH,#00H CLR TR1 SETB P2.6 CLR P2.7 CLR P3.1 CALL DELAY3 CALL DELAY3 CALL DELAY3 SETB P3.1 CALL DELAY3 CALL DELAY3 CALL DELAY3 CLR P3.1 CALL DELAY3 CALL DELAY3 CALL DELAY3 SETB P3.1 CALL DELAY3 CALL DELAY3 CALL DELAY3 CLR P3.1 CALL DELAY3 CALL DELAY3 CALL DELAY3 SETB P3.1 CALL STOP LJMP N0X5: RET;*; 储存并显示运行时间;*DISP: MOV R1,#20H MOV A,2AH MOV B,#10H DIV AB MOV R1,B INC R1 MOV R1,A MOV A,#86H LCALL SEND_I MOV A,21H ADD A,#30H LCALL SEND_D MOV A,20H ADD A,#30H LCALL SEND_D RET;*; 运行高度;*GAODU: MOV A,2BH ADD A,#01 DA A MOV 2BH,A CJNE A,#01H,X4 MOV 2BH,#00 MOV A,2CH ADD A,#07 DA A MOV 2CH,A CJNE A,#100H,X4 MOV 2CH,#00X4: RET;*; 储存高度;*DISP1: MOV R1,#40H MOV A,2BH MOV B,#10H DIV AB MOV R1,B INC R1 MOV R1,A INC R1 MOV A,2CH MOV B,#10H DIV AB MOV R1,B INC R1 MOV R1,A INC R1 MOV A,#8EH LCALL SEND_I MOV A,#20H LCALL SEND_D MOV A,43H ADD A,#30H LCALL SEND_D MOV A,42H ADD A,#30H LCALL SEND_D RET;*;DS18B20子程序;*DS18B20: LCALL RST18B20 MOV A,#11001100H LCALL WRITE MOV A,#01000100H LCALL WRITE RET;*;DS18B20复位子程序;*RST18B20:CLR DI MOV R2,#240 DJNZ R2,$ SETB DI MOV R2,#20 DJNZ R2,$ CLR C ORL C,DI JNC S2 MOV R6,#120S1: CLR C ORL C,DI JNC S2 DJNZ R6,S1 JMP RST18B20S2: MOV R2,#250S3: DJNZ R2,S3 SETB DI RET;*;DS18B20写命令子程序;*WRITE: MOV R2,#08W_LOOP1: CLR DI MOV R3,#5 DJNZ R3,$ RRC A MOV DI,C MOV R3,#30 DJNZ R3,$ SETB DI DJNZ R2,W_LOOP1 RET;*;DS18B20读命令子程序;*READ: MOV R2,#08R_LOOP1: CLR DI MOV R3,#5 DJNZ R3,$ SETB DI NOP MOV C,DI RRC A MOV R3,#30 DJNZ R3,$ SETB DI NOP DJNZ R2,R_LOOP1 RET;*;读温度子程序;*RTEMP: LCALL RST18B20 MOV A,#11001100B LCALL WRITE MOV A,#10111110B LCALL WRITE LCALL READ MOV TEMPL,A LCALL READ MOV TEMPH,A LCALL RST18B20 MOV A,#11001100B LCALL WRITE MOV A,#01000100B LCALL WRITE RET;*;温度数据处理子程序;*WORK: MOV A,#9CH LCALL SEND_I MOV A,TEMPL ANL A,#0F0H SWAP A MOV DAT,A MOV A,TEMPH ANL A,#07H SWAP A ORL A,DAT MOV DAT,A ;温度整数值 MOV DPTR,#TABLE3 MOV B,#100 DIV AB MOVC A,A+DPTR LCALL SEND_D MOV A,B MOV B,#10 DIV AB MOVC A,A+DPTR LCALL SEND_D MOV A,B MOVC A,A+DPTR LCALL SEND_D MOV A,#2EH LCALL SEND_D MOV A,TEMPL ;小数计算与显示 ANL A,#0FH MOV DAT,A MOV DPTR,#TABLE2 MOVC A,A+DPTR ADD A,#30H LCALL SEND_D MOV A,DAT MOV DPTR,#TABLE1 MOVC A,A+DPTR ADD A,#30H LCALL SEND_D RET;=
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


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

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


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