版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中北大学2013届毕业设计说明书第34页共34页中北大学2013届毕业设计说明书第1页共33页基于单片机自行车测速系统设计摘要随着居民生活水平的不断提高,自行车不再仅仅是普通的运输、代步的工具,而是成为人们娱乐、休闲、锻炼的首选。自行车的速度里程表能够满足人们最基本的需求,让人们能清楚地知道当前的速度、里程等物理量。本论文主要阐述一种基于霍尔元件的自行车的速度里程表的设计。以AT89C52单片机为核心,ITR9606红外传感器测转数,实现对自行车里程/速度的测量统计,采用24C02实现在系统掉电的时候保存里程信息,并能将自行车的里程数及速度用LCD实时显示。文章详细介绍了自行车的速度里程表的硬件电路和软件设计。硬件部分利用霍尔元件将自行车每转一圈的脉冲数传入单片机系统,然后单片机系统将信号经过处理送显示。软件部分用汇编语言进行编程,采用模块化设计思想。该系统硬件电路简单,子程序具有通用性,完全符合设计要求。关键词:里程/速度;红外线传感器元件;单片机;LCD显示
BikespeedsystemdesignbasedonsinglechipABSTRACTWiththedevelopingofpeople’slife,thebicycleisnotonlytheuniversaltooloftransportationandsubstituteforwalking,butbecomesthefirstchoiceofentertainmentandexercising.Thebicyclemileage/speedcanfulfillthebasicneedofpeople’slife,sothattheycanlearnthespeedandthemileageofthebicycle.Inthispaper,thebicyclemileage/speeddesignbasedontheHallelementiselaborated.ByAT89C52askernel,usingITR9606Hallelementtomeasurerevolution,themeasureandstatisticareachieved.Therangeinformationissavedby24C02whenthepowerisoff,thebicyclespeedcanbedisplayedonLCD.Inthisarticle,thehardwarecircuitandsoftwaredesignofbicyclemileage/speedinstrumentareintroducedindetail.Aboutthehardware,thepulsenumberistransmittedofonecycleofthebicycleintoSingleChipMicrocomputersystem.ThenthesignalprocessedbySingleChipMicrocomputersystemissenttodisplayscream.Aboutthesoftware,inassemblelanguage;theprogramisdesignedinthemodeofmodules.Thesystemhassimplehardware,commonsub-program,andmeetsthedemandofdesign.Keyword:Mileage/speed;Hallelement;Singlechipmicrocomputer;LCD
目录1引言…………………12系统总方案论证与分析……………22.1课题主要任务及内容……………………22.2任务分析与实现………………22.3硬件方案设计…………………32.4软件的方案设计………………53硬件电路设计…………………63.1概述……………63.2系统总电路图……………………63.3单片机简介………………………73.3.1单片机的引脚功能介绍………73.3.2单片机中断系统介绍………113.4传感器及其测量系统…………113.5单片机外围电路的设计………123.5.1时钟电路的设计……………13.5.2复位电路的设计……………13.5.3显示电路的设计……………14软件程序设计……………………174.1概述……………174.2中断程序的设计………………174.3总程序的设计…………………184.4本章小结………………………225系统的调试………………………235.1硬件调试………………………235.2软件调试………………………235.3故障分析与解决方案…………256结论……………27参考文献……………28致谢………………30
1引言随着人们生活水平的逐渐提高,人们对于生活质量的要求也日益增加,尤其是对健身的要求。自行车在中国普遍作为代步工具。而在国外,自行车却是一项十分受欢迎的健身运动。因为它无污染,价位低廉,老少皆宜。而且在运动过程中可以充分享受到大自然,对于忙碌的现代人来说,无疑是一种较好的放松方法。在中国这种情况也在慢慢发生变化。因此爱好自行车运动的人十分学要一款能测速的装置,以知道自己的运动情况。并根据外界条件,如温度,风速等进行适当的调节,已达到最佳运动的效果。而对于自行车运动员来说,最为关心的莫过于一段时间内的训练效果。因为教练要根据一段时间内运动员的训练效果进行评估,从而进行适当的调整已使运动员达到最佳的状态。因此需要一种装置进行对训练中各种参数的测定记录[1]。
码表主要针对那些业余爱好者,他们运动一般会选择晴朗凉爽的天气进行运动,所以温度和风速对运动员几乎没影响,只要能精确的测量速度和里程以及时间即可。并能在运动员达到预期运动量后能准确提醒运动员已达到预期要求[2]。
本设计以AT89C52单片机为主控芯片,把红外线传感器传来的脉冲信号进行处理,预算,精确的计算出行驶的速度和里程,然后在传送给LCD显示器,从LCD上显示出运动的一系列数据,而且还可以通过显示器进行人机对话,可以通过显示器和键盘进行一些参数的设置,比如像将要安装的自行车的轮圈的半径设置,以及预设运动量的和时间的设置。这些都需要通过显示器进行设置,其中的时间是用芯片内自带的计数器进行计数的。
本设计是以AT系列单片机为主控制芯片,采用红外线元件检测小车行驶速度。程序用C语言编写,由主程序、外部中断服务程序、定时器中断服务程序、延时子程序等模块组成。主程序主要完成程序的初始化和键盘处理,外部中断服务程序由测量、计算、读数等部分组成。2系统总方案论证与分析2.1课题主要任务及内容本课题主要任务是利用红外线传感器、单片机等部件设计一个可用LCD液晶显示器实时显示里程和速度的自行车的速度里程表。本文主要介绍了自行车的速度里程表的设计思想、电路原理、方案论证以及元件的选择等内容,整体上分为硬件部分设计和软件部分设计。本文首先扼要对该课题的任务进行方案论证,包括硬件方案和软件方案的设计;继而具体介绍了自行车的速度里程表的硬件设计,包括传感器的选择、单片机的选择、显示电路的设计;然后阐述了该自行车的速度里程表的软件设计,包括数据处理子程序的设计、显示子程序的设计;最后针对仿真过程遇到的问题进行了具体说明与分析,对本次设计进行了系统的总结。具体的硬件电路包括AT89C52单片机的外围电路以及LCD显示电路等。软件设计包括:芯片的初始化程序、定时中断采样子程序、显示子程序等,软件采用汇编语言编写,软件设计的思想主要是自顶向下,模块化设计,各个子模块逐一设计。2.2任务分析与实现本设计的任务是:以通用MCS-51单片机为处理核心,用传感器将车轮的转数转换为电脉冲,进行处理后送入单片机。里程及速度的测量,是经过MCS-51的定时/计数器测出总的脉冲数和每转一圈的时间,再经过单片机的计算得出,其结果通过LCD显示器显示出来。本系统总体思路如下:假定轮圈的周长为L,车轴上装一个有缺口的圆版,在圆板的外侧装置一个红外线传感器,车轮转动一圈经,红外传感器及记录一次输入信号。综合分析,本设计中取m=1。当轮子每转一圈,通过红外线传感器采集到一个脉冲信号,并从引脚P3.2中断0端输入,传感器每获取一个脉冲信号即对系统提供一次计数中断。每次中断代表车轮转动一圈,中断数n轮圈的周长为L的乘积为里程值。计数器T1计算每转一圈所用的时间t,就可以计算出即时速度v。要求达到的各项指标及实现方法如下:1.利用红外传感器里程数的脉冲信号。2.对脉冲信号进行计数。 实现:利用单片机自带的计数器T1对红外传感器脉冲信号进行计数。3.对数据进行处理,要求用LCD显示里程总数和即时速度。实现:利用软件编程,对数据进行处理得到需要的数值。最终实现目标:自行车的速度里程表具有里程、速度测试与显示功能,采用单片机作控制,显示电路可显示里程及速度。2.3硬件方案设计测速,首先要解决是采样的问题。使用单片机进行测速,可以使用简单的脉冲计数法。只要转轴每旋转一周,产生一个或固定的多个脉冲,将脉冲送入单片机中进行计算,即可获得转速的信息。常用的测速元件有霍尔传感器、光电传感器和光电编码器。里程测量传感器的选择也有以下几种方案:利用编码器对车轮的圈数进行测量、利用霍尔传感器对里程进行测量、利用红外线传感器进行里程测量。使用霍尔传感器获得脉冲信号,其机械结构也可以做得较为简单,只要在转轴的齿轮盘上粘上一粒磁钢,霍尔元件固定在前叉上,当车子转动时霍尔元件靠近磁钢,就有信号输出,转轴旋转时,就会不断地产生脉冲信号输出。如果在齿轮盘上粘上多粒磁钢,可以实现旋转一周,获得多个脉冲输出。这种传感器不怕灰尘、油污,在工业现场应用广泛[3]。红外线传感器具光源稳点,操作简单功耗低的优点,相比霍尔传感器安装简单,对磁场的抵抗力较强,且使用较为简单。故本文采用红外线传感器进行信号的采集[4]。本文采用的红外线传感器为ITR9606,ITR9606的包含一个红外发光二极管和一个NPN型硅光电晶体管,该元件是个4端元件,外观、平面图如图1图2所示:图1图2单片机由于将CPU、内存和一些必要的接口集成到一个芯片上,并且面向控制功能将结构作了一定的优化,所以它有一般芯片不具有的特点:1.体积小、重量轻;2.电源单一、功耗低;3.功能强、价格低;4.全部集成在一块芯片上,布线短、合理;5.数据大部分在单片机内传送,运行速度快、抗干扰能力强、可靠性高[5]。目前,单片机被广泛的应用于测控系统、工业自动化、智能仪表、集成智能传感器、机电一体化产品、家用电器领域、办公自动化领域、汽车电子与航空航天器电子系统以及单片机的多机系统等领域。在设计中选用的是AT89C52单片机。外部信号外部信号红外传感器外部存储器AT89C52单片机里程显示速度显示图3系统的原理框图2.4软件的方案设计通过软件控制单片机的功能是单片机的主要特点和优点,程序的设计要考虑合理性和可读性,遵循模块化设计的原则,采用自顶向下的设计方法。模块化设计使程序的可读性好、修改及完善方便。软件设计包括主程序、行车过程中里程和速度计算子程序、延时子程序、中断服务子程序、显示子程序等等。中断子程序是将传感器产生的信号接入外部中断0,将经过74LS74分频后的信号接入外部中断1,利用中断和定时器对分别对里程进行累加、每转一周的时间进行测量。数据处理子程序是将进入单片机的脉冲信号与实际要显示值之间有一定的对应关系,经过软件编程显示所需要的值。显示子程序是将数据处理的结果送显示器显示。系统软件总体流程图如图4所示。初始化初始化P3.7=1?计算里程显示里程开始图4软件总体流程图3硬件电路设计3.1概述自行车的速度里程表的硬件电路设计是基础部分,它包括信号的捕获、放大、整形,单片机的计算处理,数码管的实时显示和单片机外围基本电路的设计,两大主要器件就是传感器和单片机。传感器是获取自然或生产领域中信息的关键器件,是现代信息系统和各种设备不可缺少的信息采集工具。光敏传感器是一种将光学量信号转变为电信号的器件或装置。随着信息产业、工业自动化、医疗仪器等的飞速发展和计算机应用的普及,需要大量的传感器将被测或被控的非电信号转换成可与计算机兼容的电信号。作为输入信号,这就给光敏传感器的快速发展提供了机遇,形成了光学传感器的产业。其中最具代表的磁传感器就是红外线传感器,在自动检测系统中,利用红外线传感器测转数是一种最基本的测量工作[6]。单片机是本次设计的核心部件,它是信号从采集到输出的桥梁,而且包括计算、定时、信息处理等功能[7]。3.2系统总电路图3.3单片机简介单片机是指集成在一个芯片上的微型计算机,也就是把组成微型计算机的各种功能部件,包括CPU(CentralProcessingUnit)、随机存储器RAM(RandomAccessMemory)、只读存储器ROM(Read-onlyMemory)、基本输入/输出(Input/Output)接口电路。定时器/计数器等部件都制作在一块集成芯片上,构成一个完整的微型计算机从而实现微型计算机的基本功能。单片机内部结构示意图如图5所示[8]。定时/计数器定时/计数器中断系统CPU存储器并行I/O口串口I/O口TXD TXDRXDTINTP0-P3图5单片机内部结构示意图3.3.1AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8KBytes的可反复擦写的只读程序存储器(EPROM)和256字节的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大,AT89C52单片机适合于许多较为复杂控制场合应用。如图6所示图6AT89C52引脚图AT89C52提供以下标准功能:8K字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,5个中断源,一个全双工串行通信口,片内具有振荡器及时钟电路。AT89C52管脚图如图5所示。主要性能参数:MCS-51产品指令系统完全兼容4K字节在系统编程(ISP)Flash闪速存储器1000次擦写周期4.0-5.5V的工作电压范围全静态工作模式:0HZ-33MHZ三级程序加密锁128*8字节内部RAM32个可编程I/O口线2个16位定时/计数器6个中断源全双工串行UART通道低功耗空闲和掉电模式中断可从空闲模式唤醒系统看门狗(WDT)及双数据指针掉电标示和快速编程特性灵活的在系统编程(ISP-字节或页写模式)功能特性概述:AT89C51提供以下标准功能:4K字节闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89S51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中到内容,但振荡器停止工作并禁止其它所有工作部件直到下一个硬件复位[9]。管脚说明:VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0
口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C52的一些特殊功能口,如下表所示:P3.0RXD(串行输入口)P3.1TXD(串行输入口)P3.2/INTO(外部中断0)P3.3/INT1(外部中断1)P3.4T0(计时器0外部输入)P3.5T1(计时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,
ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度[10]。3.3.2中断是指当计算机执行正常程序时,系统中出现某些急需处理的事件,CPU暂时中止当前的程序,转去执行服务程序,以对发生的更紧迫的事件进行处理,待处理结束后,CPU自动返回原来的程序执行AT89C52系列单片机的系统有5个中断源,2个优先级,可实现二级中断服务嵌套。由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求;由中断优先级寄存器IP安排各优中断源的优先级;同一优先级内各终端同时提出中断请求时,由内部的查询逻辑确定其响应次序。采用的外部中断方式包括外部中断0和外部中断1,它们的中断请求信号分别由单片机引脚/P3.2和/P3.3输入[11]。外部中断请求有两种信号方式:电平触发方式和脉冲触发方式。电平触发方式的中断请求是低电平有效。只要在和引脚上出现有效低电平时,就激活外部中断方式。脉冲触发方式的中断请求则是脉冲的负跳变有效。在这种方式下,在两个相邻机器周期内,和引脚电平发生变化,即在第一个机器周期内为高电平,第二个机器周期内为低电平,就激活外部中断。由此可见,在脉冲方式下,中断请求信号的高电平和低电平状态都应至少维持一个机器周期,以使CPU采样到电平状态的变化,本次设计所采用的触发方式为脉冲触发方式[12]。3.4传感器及其测量系统本次设计信号的捕获采用的是红外线传感器。
红外传感器件具有许多优点,它们的结构牢固、体积小、重量轻、寿命长、安装方便、功耗小、频率高(可达1MHz)、耐震动、不怕灰尘、油污、水汽及烟雾等的污染或腐蚀。红外线性器件的精度高、线性度好;红外开关器件无触点、无磨损、输出波形清晰、无抖动、无回跳、位置重复精度高。取用各种补偿和保护措施的霍尔器件工作温度范围宽,可达-55℃~150℃。按照红外器件的功能可将它们分为:红外线性器件和红外开关器件,前者输出模拟量,后者输出数字量。通过它,将许多非电、非磁的物理量例如力、力矩、位置、位移、速度、加速度、角度、角速度、转数、转速以及工作状态发生变化的时间等,转变成电量来进行检测和控制[13]。3.5单片机外围电路的设计3.5时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊地一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。AT89C52片内由一个反相放大器构成振荡器,可以由它产生时钟。常用的时钟电路有两种方式,一种是内部时钟方式,另一种为外部时钟方式[14]。本设计采用前者。单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和电容,就构成一个稳定的自激振荡器。单片机内部时钟方式的振荡电路如图11所示。图11单片机片内振荡电路电路中的电容C1和C2常选择为30P左右。对外接电容的值虽然没有严格的要求,但电容的大小会影响振荡器的高低、振荡器的稳定性、起振的快速性和温度的稳定性。而外接晶体的振荡频率的大小,主要取决于单片机的工作频率范围,每一种单片机都有自己的最大工作频率,外接的晶体振荡频率不大于单片机的最大工作频率即可。此外,如果单片机有串行通信,则应该选择振荡频率除以串行通信频率可以除尽的晶体。本设计晶振采用12MHz,则计数周期为S3.5.2AT89C52单片机的复位输入引脚RET为AT89C52提供了初始化的手段。有了它可以使程序从指定处开始执行,即从程序存储器中的0000H地址单元开始执行程序。在89C52的时钟电路工作后,只要在RET引脚上出现两个机器周期以上的高电平时,单片机内部则初始复位。只要RET保持高电平,则89C52循环复位。只有当RET由高电平变成低电平以后,89C52才从0000H地址开始执行程序[15]。本系统的复位电路是采用按键复位的电路,如图12所示,是常用复位电路之一。单片机复位通过按动按钮产生高电平复位称手动复位。上电时,刚接通电源,电容C相当于瞬间短路,+5V立即加到RET/VPD端,该高电平使89C52全机自动复位,这就是上电复位;若运行过程中需要程序从头执行,只需按动按钮即可。按下按钮,则直接把+5V加到了RET/VPD端从而复位称为手动复位。复位后,P0到P3并行I/O口全为高电平,其它寄存器全部清零,只有SBUF寄存器状态不确定。图12按键复位电路工作原理:通电瞬间,RC电路充电,RST引脚出现高电平,只要RST端保持10ms以上高电平,就能使单片机有效地复位。3.5HJ1602A
是一种工业字符型液晶,能够同时显示16x02
即32个字符。(16列2行)。在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单[16]。
在单片机系统中应用晶液显示器作为输出器件有以下几个优点:
由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。
液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多[17]。字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。(1)引脚说明:
第1脚:VSS为地电源。
第2脚:VDD接5V正电源。
第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平
R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0~D7为8位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
(2)1602LCD的RAM地址映射以及标准字库表
LCD1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字符图有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母。
它的读写操作、屏幕和光标的操作都是通过指令编程来实现的(说明:1为高电平,0为低电平)。
指令1:清显示,指令码01H,光标复位到地址00H位置。
指令2:光标复位,光标返回到地址00H
。
指令3:光标和显示模式设置
I/D:光标移动方向,高电平右移,低电平左移
。S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效
。
指令4:显示开关控制。
D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示。
C:控制光标的开与关,高电平表示有光标,低电平表示无光标。
B:控制光标是否闪烁,高电平闪烁,低电平不闪烁
。
指令5:光标或显示移位
S/C:高电平时移动显示的文字,低电平时移动光标
。
指令6:功能设置命令
DL:高电平时为4位总线,低电平时为8位总线。
N:低电平时为单行显示,高电平时双行显示。
F:低电平时显示5X7的点阵字符,高电平时显示5x10的点阵字符
(有些模块是
DL:高电平时为8位总线,低电平时为4位总线)。
指令7:字符发生器RAM地址设置。
指令8:DDRAM地址设置。
指令9:读出忙信号和光标地址。
BF为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙,模块就能接收相应的命令或者数据。
指令10:写数据。
指令11:读数据。
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。1602
内部显示地址如图13所示图13例如第二行第一个字符的地址是40H,那么是否直接写入40H
就可以将光标定位在第二行第
一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1,所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)
。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602
液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下图所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H
中的点阵字符图形显示出来,我们就能看到字母“A”[18]。4软件程序设计4.1概述在硬件设计完毕之后,接下来就是设计中最核心和最为主要的软件部分设计。所谓软件设计就是把软件需求变换成软件的具体设计方案(即模块结构)的过程。模块化结构设计即是根据要求和硬件设计的结构,将整个系统的功能分成许多小的功能模块,再根据这些小的功能模块进行程序编写的过程。这样的设计方法,使得系统的整个功能和各部分的功能趋于明朗化。当系统出现问题,就可以根据功能设置找出问题的根源,从而更快地解决问题。所以说,在整个设计过程中,软件设计必须与硬件设计紧密地结合在一起。4.2中断程序的设计定时中断是为满足定时或计数的需要而设置的。在单片机内部有两个定时/计数器,以对其中的计数结构进行计数的方法,来实现定时或计数功能。当结构发生计数溢出时,即表明定时时间或计数值已满,这时就以计数溢出信号作为中断请求,去置位一个溢出标志,作为单片机接受中断请求的标志。这种中断请求是在单片机芯片内部发生的,因此无须在芯片上设置引入端[19]。定时/计数器控制寄存器TCON是8位寄存器,地址为88H,可以位寻址。其高4位用于定时/计数器中断控制,低4位借给外部中断,用做中断标志和触发方式选择位。本设计采用定时中断,对自行车的里程和速度进行计数。中断子程序流程图如图14所示。关中断关中断开始现场保护开中断中断处理关中断现场恢复开中断中断返回图14中断子程序流程图4.3总程序的设计#include<reg51.h>#include<stdio.h>#include"Delay.h"#include"Lcd1602.h"sbitKEY1=P3^7;sbitKEY2=P3^6;sbitKEY3=P3^5;ulongFrq;ucharCnt;ulongRun=0;uchararrRun[6];uintSpeed;uchararrSpeed[6];bitSecFlag=0;bitStartFlag=0;floatTotal=0;uchararrTotal[5];uchararrFrq[4];voidInitINT(){ EX0=0; IT0=1; EA=1;}voidKeyScan() //按键扫描{ if(KEY1==0) { DelayMS(5); //消抖 if(KEY1==0) { while(!KEY1); StartFlag=1; //开始标志位为1时开始工作,为0时停止 GotoXY(12,0); Print("ON\0"); EX0=1; //开外部中断0 } } if(KEY2==0) //等待计时开始 { DelayMS(5); if(KEY2==0) { while(!KEY2); StartFlag=0; GotoXY(12,0); Print("OFF\0"); EX0=0; } } if(KEY3==0) //结束计算总价 { DelayMS(5); if(KEY3==0) { while(!KEY3); } }}voidInitTimer(){ TMOD=0X01; //定时器控制字 TH0=0X3C; //初值 TL0=0XB0; ET0=1; //允许定时器0中断 TR0=1; //启动定时器 EA=1; //允许cpu中断}voidmain(){ InitLcd(); //初始显示 DisplayString("RUN=0KmOFF",0X00); DisplayString("Speed=m/s",0X40); InitINT(); InitTimer(); while(1) { KeyScan(); if(SecFlag==1) //1秒时间到 { SecFlag=0; Run=Run+(Frq/50);//50圈作为1km //显示总的里程 sprintf(arrRun,"%4ld",Run); arrRun[4]='\0'; //换行 GotoXY(4,0); Print(arrRun); Frq=Frq/2; sprintf(arrFrq,"%4ld",Frq); //显示当前速度 arrFrq[4]='\0'; GotoXY(6,1); Print(arrFrq); Frq=0; } }}voidISR_INT0()interrupt0 //外部中断0子程序,用于采集总圈数{ //记录的圈数 Frq++;}voidISR_Timer0()interrupt1 //定时器中断0子程序,定时一秒{ TH0=0X3C; TL0=0XB0; Cnt++; if(Cnt>=18) { Cnt=0; SecFlag=1; }}4.4本章小结在主程序模块中,需要完成对各接口芯片的初始化、自行车里程和速度的初始化、中断向量的设计以及开中断、循环等待等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器、速度寄存器,并对它们进行初始化。然后主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计速等不同的操作。将根据里程寄存器中的内容计算和判断出行驶里程数。中断1用于控制定时器T1的启/停,当输入为0时关闭定时器。此控制信号是将轮子圈数的计数经二分频后形成。这样,每次定时器T1的开启时间刚好为转一圈的时间,根据轮子的周长就可以计算出自行车的速度。5系统的调试电路调试是整个系统功能否实现的关键步骤,我们将整个调试过程分为三大部分:硬件调试、软件调试和综合调试。5.1硬件调试硬件调试主要是针对我的转速测量系统的单片机硬件电路分别进行调试。这一部分硬件调试主要分成两大块:上电前的调试和上电后的调试。上电前的调试在上电前,我们必须确保电路中不存在断路或短路情况,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。在这部分调试中主要使用的工具是万用表,用来完成检测电路中是否存在断路或者短路情况等。特别是数码管的连接部分,有PROTEL制作的PCB确保要和原理图上的图一致,有些在电路板上没法连接的线路,要用短接线把接好,对照着原理图部分,一部分一部分地用万用表测量,注意焊点之间,确保焊点没有短接在一起,同时注意焊点的美观,确保没有开路以及短路的现象出现。上电后的调试在确保硬件电路正常,无异常情况(断路或短路)方可上电调试,上电调试的目的是检验电路是否接错,同时还要检验原理是否正确,在本次课程设计中,上电调试主要只转速测量系统的单片机控制部分、数码管点亮部分、和上位机通信是的电平转换和串口通信部分的硬件调试[20]。单片机控制部分硬件调试:这一部分调试主要是检查时钟电路、复位电路是否接对,单片机的电源以及地是否接好,以及其他的一些管脚的接法。看单片机通电后能否可以正常工作等这一系列问题。5.2软件调试单片机程序调试思路:单片机部分调试工作的完成主要应用LCA51软件来完成,这一部分工作首先将转速测量系统中的各个模块——计算程序中的除法程序、双字节的二-十进制数制转换程序,压缩BCD码十进制数转换为非压缩BCD码的程序以及显示部分程序调试好,不断调试,不断修改直到正确为止。LCA51软件是一种非常实用的多窗口编辑、调试软件。LCA51软件全面支持汇编语言,C51语言,PL/M51语言的编译/连接、调试。软件支持单文件方式和工程化管理两种模式。用户可自定义各种语言的关键词.软件完全支持源语句级在线调试。高级语言还支持源文件调试和汇编语言指令行对照调试。用户可同时打开多个窗体编辑、调试、变量观察.用户可在线对原文件直接编辑、编译、连接、加载和调试,软件支持编译错误源文件定位。调试时用户可动态观察、修改设定变量(包括CPU片内寄存器、特殊寄存器及外部寄存器、内存)的值[21]。调试主要方法和技巧:通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。1.跟踪调试调试应用程序所提供的重要性能也许就是跟踪应用程序。跟踪应用程序使用户能够在运行应用程序时,看到PC指针在应用源代码程序中的确切位置,LCA51提供以下方法对程序的执行进行跟踪。跟踪型单步执行一条源语句程序。但是,如果调用一函数,则进入函数中,再执行函数的第一条源语句行前停止。通过型单步仅执行下一条源语句程序,然后又停止。如果是调用一函数,运行完整个函数并停止在函数返回处。2.断点调试如果已知程序中某块代码实际运行正常的情况下,仍用跟踪调试方法,将大大浪费时间,而且很枯燥,因此调试中第二个重要工具是在源代码中预定处设置断点,大多数调试程序通过使用断点中止程序执行。注意:如果用户调试高级语言,因为系统要占用2个断点,所以可设置的断点数为最大断点个数减2。LCA51调试软件还提供一次性断点:执行到光标所在行。如果用户按热键F4,调试程序继续执行程序代码,直到它到达光标行处或调试程序遇到另一个断点。3.查看变量显然,通过一系列指令查看应用程序,了解导致某一错误的执行也是一种非常有效的方法。LCA51软件提供了以下几种方法对变量进行查看。通过添加观察项菜单可以将用户希望观察的变量添加到观察窗口中,长期进行观察。用户程序在单步或断点停下时,将更新变量的取值。用户可以直接移动鼠标到相应的变量名上,点击鼠标左键,将出现一个提示窗口,显示这个变量的当前值。用户还可以打开程序空间窗口、内部数据窗口、外部数据窗口进行数据块观察[22]。4.更改数值如果用户在调试过程中了解到变量的内容(超值、未定义等)会对程序性能产生影响或引起异常时,立即更改变量的内容是很有效的方法,以确保该值在正确范围内不会产生错误。LCA51软件提供一系列更改变量数值的方法,以便用户能检查程序对整个变量值范围的反应,而无需为设置每个值而重新加载调试。在更改对话框中用户输入要更改的取值,点击确定按钮。用户可以在输入框中输入十六进制或十进制数据[23]。程序调试过程:整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试。首先要对计算程序进行调试,其中关键就是那个四字节除三字节的程序显得尤为重要,在整个程序中,四字节的被除数是确定的常数,而除数是测量记数的值,当各个模块调试时,我们可以先对除数先赋不同的值,利用查看内部数据的数据窗口观察出计算出来的结果和用计算器算得的结果是否一致,可以举例多次数据,确保程序正确,才能得到想得到的数据[24]。其次、二进制到十进制的转换,我们依然可以利用上述列举的方法,多次给出数据,然后运行程序,可以设置观察变量,观察出程序转换的结果。最后、拆分压缩BCD码十进制以及最后的显示程序,可以利用上述提到的各种方法,观察30-34H内部的数据,缓冲数据的观察检查完毕后,调用显示程序,观察数码管上显示的数据是否是内存缓冲中需要显示的数据。5.3故障分析与解决方案故障出现情况:1、红外传感器不能产生有效的TTL电平,产生波形不稳2、单片机的中断服务程序不能执行,不管是定时中断还是外部中断;3、中断执行低速情况也就是软件记数功能不对;4、测得的转速不准确,而且在波形频率变化下显示转速却不变5、单片机显示部分无法工作,显示不稳定;6、信号发生器模拟转速测量正确,接电机不稳定7、通信时单片机接收显示数据不正常,PC机接收乱码;解决方案(针对上述故障一一对应的解决方案):(1)硬件电路中红外线传感器应工作在5V电压,中间引脚接地,数据线接单片机的外部中断0。在电机的转轴上还要贴上一粒磁钢,利用光电信号产生方波。利用万用表检查时发现接5V和地的PCB上的线都坏了,重新用线接在电路板上。当波形出来后,显示的波形不稳,而且不够理想,后来在信号线与地之间接了472的瓷片电容滤波。波形得到了大大改善;(2)首先检查程序中的开头,中断入口地址,发现中断定时0的地址写成中断定时1的入口地址了。外部中断没有执行跟没有中断信号加入有关系。在前面还没有解决的时候,我们暂时用信号发生器来代替外部中断9的输入,由于中断执行与否我们没法看到,可以用设置中断点的方法或者利用示波器,在中断服务程序中重新编写一些程序观察单片机的某一输出口的波形变换或者中断程序中让数码管点亮等直观可以看到的方法来检查中断的执行情况;(3)中断服务程序中程序设计有问题,要先读去反映转速的TH0,TL0,再去清0,软件记数的高字节VTT应该在定时中断0中的服务程序中自增的同时清TH0,TL0,在外部中断程序中要读取三字节的记数值后同时清三个记数器,再从中断返回;(4)在确定转速计算程序的正确性的条件下出现了转速不准确,就是在调用转换程序时出现了问题,观察程序时发现调用子程序是传送的参数不对,在用寄存器R的时候出现了重复现象,导致转换过程中出现了混乱。在波形频率改变而转速不改变由于在调用显示程序时候在调用之后在显示这里死循环,不能适时进行计算了。(5)由于显示部分的程序是动态显示,是一位一位的显示,在位选信号这里出现了问题,在左移的时候出现问题,以及显示完一个字型后调用的延时时间不合理导致显示不稳定,出现闪烁现象,改变时间到1毫秒左右就差不多对了。(6)后来在接信号发生器时候要是接正弦波时候一样发生不稳定跳转的现象,由此可以推测,在传感器输入的信号不是理想的方波,而且电平值不够大,所以在红外线传感器信号输出端接滤波电容以及一个10K的上拉电阻就可以解决问题了。(7)由于单片机与PC机之间的设置以及电平转换不一致具体参见通信部分的毕业设计[25]。6结论该课题的主要任务是开发一个以MCS-51单片机为核心的自行车的速度里程表。本设计主要分为硬件部分和软件部分,硬件部分着重考虑硬件电路的简单性,故尽可能简化硬件电路,节省线路板的空间,达到硬件电路最优化设计。软件采用汇编语言编写,采用模块化设计思想,程序可读性强。通过仿真、实验验证了系统的可行,能满足设计要求,达到设计的指标,实现对自行车里程/速度的计算功能,并用LCD显示,里程与速度分别根据以下公式求得:里程=脉冲总数×车轮周长速度=车轮周长÷车轮转一圈所用的时间本系统操作简单,易于实现。硬件部分采用的器件应用较广泛,且价格低廉,如AT89C52单片机、D触发器74LS74、存储器24C02、驱动器74LS244等。这就意味着所有的器件功能比较强大、稳定。尤其是本次设计的核心元件AT89C52单片机,软件技术成熟,并具有种类齐全的支持芯片。这类微处理器既可用作控制器又适合于做数据处理,而且成本也甚是低廉。软件采用模块化设计,可读性强,方便二次开发。
本次设计电路简单、低成本,而且能够满足人们对高性能、多功能自行车的要求,可在很多里程/速度测量场合使用,具有广泛的应用前景。参考文献[1]李文峰.新型电动自行车电子测速系统[J].[2]张怀强,周通.基于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 检验所管理主体责任制度
- 招商服务中心人员责任制度
- 场所内治安防范责任制度
- 食堂卫生追究责任制度
- 夏季安全防火责任制度
- 自来水安全生产责任制度
- 市政安全管理责任制度范本
- 物流安全员岗位责任制度
- 园区卫生责任制度范本
- 小学防汛工作责任制度
- 鼓膜穿孔护理
- 水准测量平差表(含公式可自动计算)
- 大量不保留灌肠技术技能操作标准
- 全国各地开展一盔一带安全守护行动PPT
- -卫生资格-正高-疾病控制-正高-章节练习-传染性疾病控制-试题(案例分析题)(共341题)
- GA/T 1147-2014车辆驾驶人员血液酒精含量检验实验室规范
- FZ/T 73001-2016袜子
- 试验8家鸽解剖课件
- 教育学课件王道俊6版
- 《常用分析仪器使用与维护》配套教学课件
- 《新能源汽车故障诊断技术》教案
评论
0/150
提交评论