智能平衡电动小车设计报告

上传人:1888****888 文档编号:38793606 上传时间:2021-11-09 格式:DOC 页数:30 大小:975.54KB
返回 下载 相关 举报
智能平衡电动小车设计报告_第1页
第1页 / 共30页
智能平衡电动小车设计报告_第2页
第2页 / 共30页
智能平衡电动小车设计报告_第3页
第3页 / 共30页
点击查看更多>>
资源描述
2014年广西大学生电子设计大赛 2014年广西大学生电子设计大赛【本科组E题】智能平衡电动小车设计报告 学校:桂林电子科技大学 院系:计算机科学与工程学院 队员姓名:黎远明,孙翔,安聪颖 实验地点:创新学院B106 负责人:管芳 时间:2014年8月29日 设计摘要: 随着人工智能技术、计算机技术、自动控制技术的迅速发展,智能控制必将迎来它的发展新时代。整个智能小车设计主要以STC89C52单片机为控制核心,使用超声波模块检测距离,采用红外传感器控制躲避障碍。小车驱动采用减速直流电机,执行采用脉宽调制(PWM)技术实现对县级的精确控制。通过不断对单片机I/O口进行扫描来监测传感器的状态,控制小车循线、转弯、避障等动作,使得小车按预定轨道行驶,并在遇到障碍时发出指示并停车的功能。同时,运用显示屏和数码管,显示时间,路程和电压。关键词:智能小车,超声波测距,循线模块,PWM,声光指示Abstract: With the rapid development of artificial intelligence technology, computer technology, automatic control technology, intelligent control will usher in a new era of itsdevelopment.This dissertation discusses mainly on the design of the intelligent car  in STC89C52single-chip processor as the control core.Detection distance using ultrasonic module, using an infrared sensor control to avoid obstacles. Car driven by a DC motor reducer, execution using pulse width modulation (PWM) technology to achieve precise control of the county's. By constantly on the MCU I / O port for scanning to monitor the state of the sensor, control the car through the line, turning, obstacle avoidance and other actions, making the car traveling at a predetermined orbit, and give directions in the face of obstacles and park features.Key Word:Intelligence Balancing Electric Car, Ultrasonic Ranging, PWM,Sound and Light Indication目录1 系统方案11.1总体方案设计与比较11.2电机的比较与选择21.3循迹模块的选择与比较21.31循迹模块选择21.32寻迹传感器布局 31.4避障测距模块32 理论分析与计算42.1信号检测与控制 42.2节能 42.3直流电机调速原理42.4 PWM基本原理 52.5循迹模块算法分析(5路)63电路与程序设计73.1单片机控制系统73.2电源模块设计83.3驱动模块设计93.4循迹模块设计及程序流程93.5超声波测距模块 103.6程序大致流程114结果分析124.1调试仪器仪表 124.2系统测试 124.3调试过程及分析124.4调整与改正13附录1;程序源代码14附录2:元件清单261 系统方案整个电路系统采用模块化的设计方案,有寻迹检测、避障检测、超声波距离检测、驱动模块等多个模块。首先利用检测模块对路面信号进行检测,经过比较器处理之后,送给软件控制模块进行实时控制,输出相应的信号给驱动芯片驱动电机转动,从而控制小车沿着引导黑线行驶,同时,超声波模块进行测距, 小车用数码管,检测运作时的小车电压。在遇到硬币时,通过避障模块进行检测,并发出声光指示,控制小车停车5秒,后继续按照引导黑线走完全程。1.1总体方案设计与比较方案一:采用STC89C52单片机作为整机的控制单元。以STC89C52单片机为核心的控制电路,运用循迹模块、避障检测、超声波距离检测、驱动模块等多个模块,实现小车在行驶中转弯、蔽障、测距等问题。同时利用1620和数码管,显示时间,路程,以及电压。并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现寻线,停车,声光指示等智能化控制,以及各种数据显示。 方案二:选用一片CPLD作为系统的核心部件,实现控制与处理的功能。 CPLD复杂可编程逻辑器件,是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围,是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。具有速度快、编程容易、资源丰富、开发周期短等优点,可利用VHDL语言进行编写开发。但CPLD在控制上较单片机有较大的劣势。同时,CPLD的处理速度非常快,而小车的行进速度不可能太高,若采用该方案,必将在控制上遇到很多不必要增加的难题。 综合考虑了传感器、电机的驱动等诸多因素,方案一简洁、灵活、可扩展性好,并且我们对单片机掌握的比较好,且能达到题目的设计要求,因此本设计采用方案一来实现,充分利用STC89C52的单片机资源。1.2电机的比较与选择方案一:采用步进电机步进电机的一个显著特点就是具有快速启停能力,如果负荷不超过步进电机所能提供的动态转矩值,就能够立即使步进电机启动或反转。另一个显著特点是转换精度高,正转反转控制灵活。方案二:采用直流伺服电机 直流伺服电机具有优良的速度控制性能,它输出较 大的转矩,直接拖动负载运行,同时他又受控制信号的直接控制进行转速调节,在很多方面具有优越性,但是直流伺机电机价格昂贵,且不易购买方案三:采用减速直流电机。 直流电动机具有优良的调速特性,调速平滑、方便,调整范围广;过载能力强,能承受频繁的冲击负载,可实现频繁的无级快速启动、制动和反转;能满足生产过程自动化系统各种不同的特殊运行要求。 由于减速直流电机更易于购买,并且电路相对简单,并能完成所需的功能,故采用减速直流电机作为动力源。1.3循迹模块的选择与比较1.31循迹模块选择方案一:采用发光二极管+光敏电阻易受到外界光源的干扰,有时甚至检测不到黑线,主要是因为可见光的反射效果跟地表的平坦程度、地表材料的反射情况均对检测效果产生直接影响。克服此缺点的方法:采用超高亮度的发光二极管能降低一定的干扰,但这又会增加检测系统的功耗。方案二:脉冲调制的反射式红外发射接收器。 由于采用带有交流分量的调制信号,则可大幅度减少外界的干扰;此外红外发射接收管的工作电流取决于平均电流,如果采用占空比小的调制信号,在平均电流不变的情况下,瞬时电流很大(50100mA)(ST-188允许的最大输入电流为50mA),则大大提高了信噪比。此种测试方案反应速度大约在5us。   通过比较,方案二更加有优势,故选择红外发射接收器制作循迹模块。1.32寻迹传感器布局     方案一:一字形布局 反射式光电传感器在小车前方一字形简单排布。在一字形中传感器的间隔有均匀布局和非均匀布局两种方式,均匀布局不利于弯道信息的准确采集,通常采取的是非均匀布局。考虑到弧度信息采集的连贯性,非均匀布局的理论依据是等角度分布原则,即先确定一合适的定点,从顶点依次等角度画射线,射线与传感器水平线相交的位置即为传感器的位置。这种方案信息检测相对连贯,准确,使控制程序算法简单,小车运行连贯,稳定。 方案二:M形布局。传感器呈M形排布。这种方案的优点在于拓宽了边沿传感器的检测范围,更适合于小车快速行进中的弯道检测,但相对一字形布局来说,M形布局不利于信息检测的稳定,易于产生振荡,不利于小车行驶的稳定。由于本次寻迹实验要求比较简单,考虑到方案的可行性并且保持小车运行稳定,故此次采用方案一来进行传感器的布局。1.4避障测距模块 方案一: 超声波测距。超声波传感器是利用超声波的特性研制而成的传感器。超声波是一种振动频率高于声波的机械波,由换能晶片在电压的激励下发生振动产生的,它具有频率高、波长短、绕射现象小,特别是方向性好、能够成为射线而定向传播等特点。  方案二:视觉测距。视觉传感器具有从一整幅图像捕获光线的数以千计的像素。在捕获图像之后,视觉传感器将其与内存中存储的基准图像进行比较,以做出分析。视觉传感器的优点是易于多目标测量和分类,分辨率好。但它不能直接测量距离,算法复杂,处理速度慢。  由于超声波传感器价格合理,功能齐全。而视觉传感器价格昂贵,且算法复杂,不易于控制,故选择超声波模块。2 理论分析与计算2.1信号检测与控制  本系统采用红外检测电路,当系统检测到外侧的黑线时,系统通过单片机向电机发送控制指令,从而使小车左侧轮子停转,右侧轮子正常运转,以实现小车左转的目的。同理,当系统检测到内测黑线时,小车相应会右转,这样就能实现小车沿着黑线行驶。同时红外对管检测路面信息,能控制小车转弯和防止小车出界。  并且用超声波检测前方障碍,可防止与障碍物相撞。 2.2节能  本车采用可充电电池驱动小车行驶,比一次性电池更加节能环保。开关电源调节器件以完全导通或关断方式工作。因此,开关电源功耗极低,比线性电源更加节能。2.3直流电机调速原理 依据直流电动机转速公式:n=(U-IR)/K 。其中U为电枢端电压,I为电枢电流,R为电枢电路总电阻,为磁通量,K为电动机结构参数。  由公式可以看出,可以通过改变励磁磁通量、电枢电路总电阻R、电枢端电压U三种方法来调节转速。 (1)改变励磁磁通量主要是针对励磁式直流电机(定子上也为绕组,通电产生磁场,相当于电磁铁),改变励磁电流进而改励磁磁通量,而我们用的直流电极是永磁式直流电机(定子为永久磁铁),所以不能通过改变励磁磁通量的方法改变速度。 (2)通过改变电枢电路的总电阻R来调速,由n=(U-IR)/K可知,当R变大时,n变小。 (3)通过改变电枢端电压U来调速,调节电枢端电压可以实现无级调速,是应用范围最为广泛的调速方法。  2.4 PWM基本原理 采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。PWM 控制技术就是以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所需要的波形。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。通俗的说PWM 是采用数字量对模拟量进行合成的方法。  由于电压UAB的正、负变化,使电流波形存在两种情况:  (1)电动机负载较重(如id1 ),这时平均负载电流大,在续流阶段电流仍维持正方向,电机始终工作在第象限的电动状态; (2)电动机负载较轻(如id2 ),平均电流小,在续流阶段电流很快衰减到零,于是VT2和VT3集一射极两端失去反压,在负的电源电压(Us)和电枢反电动势的共同作用下导通,电枢电流反向,沿回路3流通,电动机处于制动状态。与此相仿,在0t<ton期间,当负载轻时,电流也有一次倒向。 双极式可逆PWM变换器电枢平均端电压用公式表示为:   仍以=Ud/Us来定义PWM电压的占空比,则与ton的关系为 :   调速时,的变化范围为l1 ; 当为正值时,电动机正转; 为负值时,电动机反转;=0时,电动机停止。   直流脉宽调速系统中包括一个具有继电特性的脉宽调制变换器,它在本质上是一个开关控制系统。P10 P11 P12 P13 P14 2.5循迹模块算法分析(5路)左电机 右电机P20 P211转 1转0不转 0不转P10 P11 P12P13 P14 方向00000前进011左转101前进001左转110右转100右转左转0右转3电路与程序设计3.1单片机控制系统 89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。 采用此芯片与复位电路,晶振回路即可构成单片机控制系统,电路图如图所示:程序流程图如下:3.2电源模块设计 电源模模块,由3部分组成,升压模块,稳压模块,和降压模块,利用LM2587,LM2596以及LM2576芯片,达到三合一,节约了成本,同时提高了模块的性能。 3.3驱动模块设计 采用内部集成H桥式芯片每一组PWM波用来控制一个电机的速度,而另外两个I/O口可以控制电机的正反转,控制比较简单,电路也很简单,一个芯片内包含有8个功率管,这样简化了电路的复杂性。3.4循迹模块设计及程序流程 循迹模块是智能车系统的关键模块之一,其主要功能是准确,快速,超前地采集路面信息,把它转变成电信号,传送到单片机中处理。 原理: 红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射强度的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反 射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。单片机就是否收到反射回来的红外光为依据来确定黑线的 位置和小车的行走路线。程序设计流程图:循迹避障程序入口读红外传感器状态左转右转前进依据状态选择小车运行方式3.5超声波测距模块 车测距上我们选择了HC-SR04超声波模块传感,HC-SR04可提供2cm-400cm的非接触式距离感测功能,模块包括超声波发射器、接收器与控制电路。超声波是指频率高于20KHz的机械波。超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离。 此超声波测距模块的工作原理:接收回路为谐振回路,将收到的微弱回波信号检出,送信号放大电路放大,收到产生脉冲输出送单片机中断端,单片机收到中断信号后停止计时,计算出距离值,保存等待读出或直接经UART 送出。接收过程中,单片机定时控制放大电路的增益,逐渐提高,以适应距离越来越弱的回波信号。超声测距传感器的核心功能是测量距离,通过发射器发射超声波,超声波遇到物体反射回来被接收器接收。传感器将所测量的量转换成数字信息,即将非电量转换为便于测量的电量,这样单片机就能计算出超声波从发射到接受用的时间,测量时间*声速/2=距离。车测距上我们选择了HC-SR04超声波模块传感,HC-SR04可提供2cm-400cm的非接触式距离感测功能,模块包括超声波发射器、接收器与控制电路。超声波是指频率高于20KHz的机械波。超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离。3.6程序大致流程此设计由寻迹检测、避障检测、超声波距离检测、驱动模块等多个模块组合而成。89S52 循迹程序 硬币检测声光控制显示路程时间 停车程序 4结果分析 4.1调试仪器仪表  设计及测试中所用的仪器及工具主要有:秒表、数字万用表、信号发生器、示波器、MCS51仿真机、直流稳压电源等 电源:可充电电池。  常用仪表:数字万用表、AVR Studio。4.2系统测试 对小车的整体的调试按照模块来进行,分为以下几个步骤: 首先测试电源的工作情况,各个模块能否得到良好供电。 然后检查单片机能否正常的烧写程序和工作。 红外对管安装完成后根据测试数据调试程序。 测试两前轮电机的工作情况,并试验电机的驱动能力。 让小车在黑色轨道上初步循迹运行。 反复测试各参数变化对小车的影响,找出最有效的配置。 对小车运行过程中各种可能出现的情况测试,发现问题,找出解决方法。整理数据,优化程序设计。 经过多次调试,本系统能够基本满足设计要求,能够较快较平稳的沿路面行驶。4.3调试过程及分析由于各模块往单片机发送的数据都是数字信号,在对各模块进行检测的时候,用万用表对输出信号进行检测,观测是否输出相应的电压变化即检测出各模块的工作状态。 在小车调试完成后我们用万用表对小车的整体完成情况进行测试,根据程序设计流程图可以看出本系统用一套程序就可以完成基本部分和发挥部分的各项任务,在测试时,我们对小车分别行使一圈用时情况和和小车上坡时的状态进行记录。测试次数小车行驶一圈的秒数(S)是否超出跑道遇到硬币时,是否声光指示,并停车是否能 爬上坡135是是否233是否否332否否是 430否是是4.4调整与改正 在设计的过程中发现了自身知识的不足,也发现我们必须具备专业基础知识才能成功的设计出一件合格的东西。这次课程设计收获很多,体会也很深刻,并且对我们所学的东西也产生了浓厚的兴趣。在设计过程中,也学会了很多新的东西,如对一些初次使用的模块的认识与掌握。当然最重要的是学到了关于基本电子设计的一些方法,同时也加深了对一些常用的电子元件的理解以及其基本用法的掌握。 通过多次调试,发现小车有以下几方面的问题及因素影响:  (1) 程序逻辑方面不够严谨,导致在行驶过程中不按预期的路线去行驶。究其原因,一方面由于电路自身缺陷导致程序有误,另一方面由于C语言掌握不够,需要加强。 (2) 小车车身前重后轻难以上坡 针对以上问题,改进方案如下: (1) 解决方案:先对程序进行软件调试,进行单步运行,软件调试成功在进行硬件调试,最终实现预期要求(2) 加重小车前身的重量,及利用软件控制电机有足够的速度冲上上坡。附录1;程序源代码#include<reg52.h>#include"delay.h"#define uint unsigned int #define uchar unsigned charsbit beef=P15;/蜂鸣器和灯sbit ena=P20; /左使能端sbit enb=P21; /右使能端sbit tan1=P10;/探头1sbit tan2=P11;/探头2sbit tan3=P12;/探头3sbit tan4=P13; /探头4sbit tan5=P14; /探头5sbit LCD_RST=P22 ;/复位,0复位;sbit LCD_CE=P23; / 片选,芯片使能,(片选为零时,开使能端) sbit LCD_DC=P24; / 1写数据,0写命令;sbit SDIN=P25; /串行数据传输端;sbit SCLK=P26; /串行时钟输入端;sbit Trig=P00;uint secondsg=0,secondss=0,secondsb=0; /时间显示uint dis=0,count3=0;/距离uchar tt=0; /定时器里面的uint us=0;/10usuint ms=0;/1msuint s;/100msuchar count1=0,count2=0; /计数次数uchar lspeed=0,rspeed=0; /左右轮速度uchar j=0; /全部检测到黑线的次数void stop();void HC_init()TMOD=0x09;TR0=1;TH0=0;TL0=0; uint HC_jisuan()uint dist,timer;timer=TH0;timer<<=8;timer=timer|TL0;dist=timer/53; /晶振11.0592MHz /距离cm=微秒us/58return dist; /1个机器周期是12个时钟周期 timer*12/(58*11.0592)=timer/53void HC_run()uint tempH=0x00,tempL=0x00;TH0=0;TL0=0;Trig=0;Trig=1;delay_1ms(1);Trig=0;while(TH0-tempH!=0|TL0-tempL!=0)|(TH0=0&&TL0=0)tempH=TH0;tempL=TL0;delay_1ms(1);code unsigned char font6x86 = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , / sp 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 , / ! 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 , / " 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 , / # 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 , / $ 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 , / % 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 , / & 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 , / ' 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 , / ( 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 , / ) 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 , / * 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 , / + 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 , / , 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 , / - 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 , / . 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 , / / 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E , / 0 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 , / 1 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 , / 2 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 , / 3 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 , / 4 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 , / 5 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 , / 6 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 , / 7 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 , / 8 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E , / 9 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 , / : 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 , / ; 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 , / < 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 , / = 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 , / > 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 , / ? 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E , / 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C , / A 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 , / B 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 , / C 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C , / D 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 , / E 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 , / F 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A , / G 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F , / H 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 , / I 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 , / J 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 , / K 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 , / L 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F , / M 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F , / N 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E , / O 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 , / P 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E , / Q 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 , / R 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 , / S 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 , / T 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F , / U 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F , / V 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F , / W 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 , / X 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 , / Y 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 , / Z 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 , / 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 , / 55 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 , / 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 , / 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 , / _ 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 , / ' 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 , / a 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 , / b 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 , / c 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F , / d 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 , / e 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 , / f 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C , / g 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 , / h 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 , / i 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 , / j 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 , / k 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 , / l 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 , / m 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 , / n 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 , / o 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 , / p 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC , / q 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 , / r 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 , / s 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 , / t 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C , / u 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C , / v 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C , / w 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 , / x 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C , / y 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 , / z 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 / horiz lines;/* 函数名称:LCD_write_byte函数功能:模拟SPI接口时序写数据/命令LCD入口参数:data :写入的数据; command :写数据/命令选择;出口参数:无 备 注: */void LCD_write_byte(unsigned char dat, unsigned char command) unsigned char i; LCD_CE = 0; /5110片选有效,允许输入数据 if (command = 0) /写命令 LCD_DC = 0; else LCD_DC = 1; /写数据for(i=0;i<8;i+) /传送8bit数据 if(dat&0x80)SDIN = 1;elseSDIN = 0;SCLK = 0;dat = dat << 1;SCLK = 1; LCD_CE = 1; /禁止5110 /* 清屏函数 */ void LCD_clear() unsigned int i; LCD_write_byte(0x0c, 0); LCD_write_byte(0x80, 0); for (i=0; i<504; i+) LCD_write_byte(0x00, 1); /* 函数名称:LCD_init函数功能:5110初始化入口参数:无出口参数:无 备 注: */void LCD_init(void)LCD_RST=0; delay_1ms(10); LCD_RST=1; LCD_write_byte(0x21, 0);/ 使用扩展命令设置LCD模式 LCD_write_byte(0xc6, 0);/ 设置液晶偏置电压 LCD_write_byte(0x06, 0);/ 温度校正 LCD_write_byte(0x13, 0);/ 1:48 LCD_write_byte(0x20, 0);/ 使用基本命令,V=0,水平寻址 LCD_clear(); / 清屏 LCD_write_byte(0x0c, 0);/ 设定显示模式,正常显示 LCD_CE = 0; / 关闭LCD /* 函数名称:LCD_set_XY函数功能:设置LCD坐标函数入口参数:X :083 Y :05出口参数:无 备 注: */void LCD_set_XY(unsigned char X, unsigned char Y) LCD_write_byte(0x40 | Y, 0); / column LCD_write_byte(0x80 | X, 0); / row /* 函数名称:LCD_write_char函数功能:显示英文字符入口参数:c: 显示的字符出口参数:无 备 注: */void LCD_write_char(unsigned char c) unsigned char line; c -= 32; /数组的行号 for (line=0; line<6; line+) LCD_write_byte(font6x8cline, 1);/*函数名称:LCD_write_english_string函数功能:显示英文字符串入口参数:*s: 显示的字符串出口参数:无 备 注:*/ void LCD_write_english_string(unsigned char X,unsigned char Y,char *s ) LCD_set_XY(X,Y); while (*s) LCD_write_char(*s); s+; void LCD_write_number(unsigned char X,unsigned char Y,unsigned char c) unsigned char line; LCD_set_XY(X,Y); c -= 32; /数组的行号 for (line=0; line<6; line+) LCD_write_byte(font6x8cline, 1);void timeshow() LCD_write_english_string(0,1,"Time"); LCD_write_number(42,1,secondsg+0x30); /时间个位秒钟 LCD_write_number(36,1,secondss+0x30); /时间十位秒钟 LCD_write_number(30,1,secondsb+0x30); /时间十位秒钟void disshow() int disq,disb,diss,disg; dis=(count1/35)*15; disq=dis/1000; disb=(dis/100)%10; diss=(dis/10)%10; disg=(dis%10); LCD_write_english_string(0,2,"Distance"); LCD_write_number(54,2,disq+0x30); LCD_write_number(60,2,disb+0x30); LCD_write_number(66,2,diss+0x30); LCD_write_number(72,2,disg+0x30);/*使能端初始化函数*/void initen()ena=1;enb=1;/*定时器0初始化函数*/void init_time0()TMOD=0x01;/GATE=0,定时模式,方式1TH0=(65536-10)/256;/装初值TL0=(65536-10)%256;EA=1;/打开外部中断总开关ET0=1;/选择定时器0TR0=1;/打开定时器0的开关/*定时器0中断服务函数*/void time0() interrupt 1TR0=0;/关闭定时器us+;TH0=(65536-10)/256;/装初值TL0=(65536-10)%256;TR0=1;/打开定时器count1+;count2+;if(count1<=lspeed)ena=1;elseena=0;if(count2<=rspeed)enb=1;elseenb=0;if(count1=100)count1=0;if(count2=100)count2=0;void sum()if(us=100)us=0;ms+;if(ms=100)ms=0;s+;if(s=10)s=0;tt+;if(tt=20) tt=0; secondsg+; if(secondsg>9) secondss+; secondsg=0;if(secondss>9) secondsb+; secondss=0; /*外部中断0初始化函数*/void init_zd0()EA=1;/打开中断总开关EX0=1;/选择外部中断0IT0=1;/下降沿触发void int0() interrupt 0stop();beef=0;delay_1ms(1500);delay_1ms(2500);delay_1ms(2500);beef=1;delay_1ms(2500);delay_1ms(2500);delay_1ms(2500);/*前进函数*/void go(uchar l,uchar r) /左右轮速度lspeed=l;rspeed=r;ena=1;enb=1;/*停车函数*/void stop()ena=0;enb=0;/*红外检测函数*/uchar hongwai()uchar i=0;if(tan1=0&&tan2=0&&tan3=0&&tan4=0&&tan5=0)i=0;j+;if(tan2=0&&tan3=1&&tan4=1)i=1;if(tan2=1&&tan3=0&&tan4=1) i=2;if(tan2=0&&tan3=0&&tan4=1)i=3;if(tan2=1&&tan3=1&&tan4=0)i=4;if(tan2=0&&tan3=1&&tan4=0)i=5;if(tan2=1&&tan3=0&&tan4=0)i=6;if(tan1=0)i=7;if(tan5=0)i=8;return i; /*寻线函数*/void xunxian(uchar i)if(i=0)go(40,40);if(i=1)go(20,40);if(i=2)go(40,40);if(i=3)go(30,40);if(i=4)go(40,20);if(i=5)go(40,40);if(i=6)go(40,30);if(i=7)go(10,60);if(i=8)go(60,10);void main()uchar a=0,b=0;/循环次数 与传值变量initen();init_time0();init_zd0();LCD_init(); /5110初始化 LCD_clear(); /5110清屏beef=1;while(1)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸下载 > CAD图纸下载


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

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


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