S-6-1 正文、结论、参考文献等标准格式(理工农科专业学生用)_第1页
S-6-1 正文、结论、参考文献等标准格式(理工农科专业学生用)_第2页
S-6-1 正文、结论、参考文献等标准格式(理工农科专业学生用)_第3页
S-6-1 正文、结论、参考文献等标准格式(理工农科专业学生用)_第4页
S-6-1 正文、结论、参考文献等标准格式(理工农科专业学生用)_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 绪论在全球倡导绿色环保的大趋势下,近年来我国加大了对车辆排放和噪声的管理,由于电动车具有无污染、低噪声和轻便快捷等优点,是一种绿色环保的交通工具,所以从保护环境和经济条件许可等因素综合来看,电动车目前乃至今后都有着广阔的发展空间。随着人们生活质量的提高,再加上智能化、多功能化产品概念的倡导,又从市场的角度来说,电动车自然会追求智能化,因此配有电量、速度和里程表的电动车成为了生产厂家和消费者的一个关注点。目前市面上电动车的速度表和里程表都是机械的,看起来不够直观与方便。如果能用LED直接显示出来里程数、速度值以及蓄电池电量,对电动车的发展将非常有意义。1.1 电动车仪表的现状现在市场上大部分

2、电动车配有指针式仪表,部分没有仪表,很少有用数字直接显示的速度/里程仪表,看起来不够直观与方便。而电量的显示多采用硬件电路直接控制,用发光二极管粗略地显示蓄电池的电量,不采用单片机控制,电路结构相当复杂,而且不能提供精确的电量。目前电动车上安装的大部分都是指针式仪表,那么指针式仪表的基本组成是什么呢?电动车指针式仪表包含累计行驶里程表、整车速度指针表、电池电压指针表、大灯指示、左右转向灯指示等。累计行驶里程表是由6个十进制的齿轮计数器组成,整车速度指针表是个阻尼转速表,它们共用一个转速输入信号进行换算,通过机械传动实现各自的指示功能。电压指针表采用50伏直流电压表的表头1。指针类仪表的集成度比

3、较低,电路的接线比较简单,仪表电路不依赖于控制器电路,能独立工作。这类机械式车速表是由旋转磁场作用于转动盘,使转动盘连同车速表指针发生同向的偏转。当电磁转矩与弹簧产生的阻力矩平衡时,指针偏转停留在某一角度上。指针偏转角与车速成正比,因而可用其表示车速12。机械式车速表的缺陷是明显的。由于表盘指针偏转程度正比于软轴转动时产生的磁力,当转速较低的时候,磁力较小,随转速变化的波动较大。因此,低速时车速表指针摆动剧烈、测量及显示精度不高。1.2 电动车仪表的发展随着电子技术的发展,现在一些电动车已经开始使用液晶仪表,该仪表是以专用霍尔传感器的开关信号传到液晶显示仪表单片机上的一种仪器,通过计算单位时间

4、内车轮的转数,便可得到行驶时速,将行驶时速与时间相乘,则可得到行驶的里程。另外,也有的无刷电机控制器内部选用单片机作为译码芯片,能把电机运行时速和累计行驶里程直接计算出来,输送到液晶显示仪表,这种液晶显示仪表总成内部就没有单片机了。液晶显示仪表虽然能精确显示各种数据,但是这种仪表的缺点就是抗阳光紫外线辐射能力差,对使用环境温度要求高,所以液晶显示仪表不能长时间放在太阳光底下晒,只能在-10-40的环境温度下使用。长时间在高温或低温环境下使用,将导致液晶屏的不可逆损伤,这样液晶屏的显示数值就会模糊,直至无法显示12。在世界进入数字化时代的今天,新概念的电动车仪表最直观的变化就是用LED数码管取代

5、指针式表盘,直接用数字显示速度、里程和电量。1.3 设计的意义仪表的电子化已经是未来发展的趋势,基于以上的原因,我设计了基于单片机的电动车仪表。该仪表不仅能交替显示速度和里程,还能直观的显示蓄电池的电量。在近几年中,随着计算机技术的飞速发展,促使了大规模集成电路技术的成熟,可供选择的单片机种类也十分多,因此可以满足不同功能的仪表的需要。另外,这些单片机大都能提供功能齐全的开发、仿真系统,使得新产品的开发方便、稳定,大大缩短了开发过程。集成芯片体积小、稳定性高、抗干扰能力强、控制灵活,能适应电动车仪表对高可靠性、防震、防水等工作环境的要求。在生产和调试过程中很容易实现系统化、自动化,大大提高了生

6、产效率,适合大批量生产的需求,促进了单片机的生产成本大大降低。用单片机来实现速度、里程及电量的测量和显示,将大大节省成本,而且性能稳定,便于开发利用1115。本设计的电动车仪表,综合了里程,速度,电量显示等功能,另外还加入了超速报警功能,使之更加人性化。这次设计采用了电子集成电路,实现了智能化,具有很强的实用性。由于电动车操作简单,老少皆宜,是城乡居民出行使用的经济时尚型交通工具,将会受到人们的普遍欢迎。2 系统总体设计2.1 总体设计思路:假定轮圈的周长为L,在轮圈上安装m个永久磁铁,则测得的里程值最大误差为L/m。经综合分析,本设计中取m=1。当轮子每转一圈,通过开关型霍尔元件传感器采集到

7、一个脉冲信号,并从外部中断0输入,传感器每获取一个脉冲即对系统提供一次计数中断。每次中断代表车轮转动一圈,根据中断数n与车轮的周长可以计算出里程值。计数器T1计算每转一圈所用的时间t,再根据车轮的周长,就可以计算出即时速度v。里程和速度的显示可以通过按键开关设置为交替显示,当开关不闭合时,里程指示灯亮,LED显示里程值;当开关闭合时,速度指示灯亮,LED切换显示当前速度v;若电动车超速,系统发出报警提示,报警指示灯亮。对于蓄电池电量的测量和显示,采用模数转换芯片将采集到的模拟电压信号转换成数字信号,通过对单片机系统进行软件编程,使单片机能按规定的时序来采集这些数字信号,通过一定的算法计算出被测

8、电压的值,最后单片机系统将计算好了的被测电压值按一定的时序送入电量显示电路模块加以显示。2.2 系统总体框图系统总体框图如图2-1所示。传感器放大器波形变换波形整形数据存储电路速度/里程显示A/D转换电路报警电路电量显示单片机AT89C52电压采集电路 图2-1 系统总体框图本系统由信号预处理电路、单片机AT89C52、LED显示电路、蓄电池电压采集电路、串口数据存储电路、A/D转换电路等组成。其中信号预处理电路包含信号放大、波形变换和波形整形。对待测信号进行放大的目的是降低对待测信号的幅度要求;波形变换和波形整形电路则用来将放大的信号转换成可与单片机相连的TTL信号。经过预处理的脉冲信号进入

9、单片机的外部中断0引脚,用于对轮子圈数的计数输入。轮子每转一圈,霍尔传感器就输出一个低电平脉冲。根据里程寄存器中的内容,计算行驶的里程数。经二分频后的脉冲信号进入外部中断1引脚,用于控制定时器T1的启/停,当输入为0时关闭定时器。这样,每次定时器T1的开启时间刚好为转一圈的时间,根据轮子的周长就可以计算出电动车的速度。里程数是采用I2C总线并通过E2PROM来存储,既节省了所需单片机的口线和外围器件,同时也简化了显示部分的软件编程。3 系统软件设计3.1 软件设计思路由于一个完整的单片机系统,包括软硬件两个方面,硬件是系统可靠运行的“载体”,是基础,而软件则是使“载体”产生动力的发电机,二者相

10、辅相成,缺一不可,所以在硬件电路设计的基础上,我对基于单片机的电动车仪表进行了软件方面的设计。这次设计主要采用模块化的设计方法,首先要确定用什么样的主程序,然后根据这个主程序进行分析,从而设计出所需要的子程序模块,接着对每个模块进行分析,根据它们的功能要求来设计相对应的软件,最后运用Keil与Proteus软件的联调来进行仿真与调试。基于单片机的电动车仪表设计的软件设计包括主程序、里程测量程序、速度测量程序、A/D转换程序、里程显示子程序、速度显示子程序、延时子程序等几大部分,下面就其主要部分分别加以设计分析。3.2 主程序设计在主程序中,需要完成对各接口芯片的初始化、电动车里程和速度初始化、

11、中断向量的设计以及开中断、开定时器等工作。另外,在主程序中还需要设置里程寄存器、速度寄存器、电量寄存器,并对它们进行初始化。然后,主程序将根据各个标志寄存器的内容,分别完成计算里程、测量速度和测量电量等不同的操作。由电路仿真图可知(见图4-6)可知,P1.3和P1.7端口分别用于显示速度状态和里程状态。P1.6口用于里程显示和速度显示的切换,低电平为显示速度,高电平为显示里程。外中断0用于对轮子圈数的计数输入,轮子每转一圈,霍尔传感器就输出一个低电平脉冲。将根据里程寄存器中的内容,计算行驶里程数。外中断1用于控制定时器T1的启/停,当输入为0时关闭定时器。此控制信号是将轮子圈数的计数脉冲经二分

12、频后形成。这样,每次定时器T1的开启时间刚好为转一圈的时间,根据轮子的周长就可以计算出电动车的速度。主程序流程图如图3-1所示。开始初始化调用电量处理子程序NP1.6=1?Y调用速度处理子程序调用里程处理子程序 图3-1 主程序流程图注释:(1)在本系统初始化程序中,主要完成以下工作:将T1设置为外部控制定时器方式;外中断0以及外中断1设置为边沿触发方式;将部分内存单元清零;开中断及定时器;将EEPROM中的数据调入内存等。(2)程序完成了启动定时器、开中断,将EEPROM中的数据读入,先调用电量处理子程序,然后根据P1.6口的开关状态选择里程显示或速度显示,如果是P1.6口选择是1,那就调用

13、里程处理子程序,如果是P1.6口选择是0,那就调用速度处理子程序,如此循环。3.3 电压转换程序测量蓄电池电量的原理:这里主要是利用TLC549模数串口芯片,TLC549芯片的基准电压脚外接电压为+5V,由于蓄电池的电压(48V)超过了TLC549的电源电压,所以要将蓄电池的电压经过R1和R2分压后进入TLC549芯片的模拟输入,进行模拟采样。输入的模拟量,经过TLC549芯片的内部A/D转换器,转换成8位二进制数,其最小的分辨率为0.0196(VREF=0.0196V),D为转化的数字量,再通过V=(R1+R2)/R2*(D/255)*5(V)可以求得模拟电压,最后通过数码管就可将所测得电量

14、显示出来。用TLC549串口芯片的话,先选中该芯片,将该芯片的CS脚为低电平,在进行读取数据时,将CLK先拉高再拉低,在CLK下降沿的时候,将数据移出,这样不断的循环8次。电压转换程序的流程图如图3-2所示。开始CS置0选中芯片对模拟电压进行采样CLK置1CLK置0将数据通过DOUT送入单片机否是否有8次?是数据处理调用电量显示程序返回图3-2 电压转换程序的流程图3.4 里程测量程序采用外部中断0服务程序对行驶圈数进行计数,该计数值为十六进制数。由图3-3可知,60H62H单元存放圈数,轮子每转一圈,即产生一次外部中断,计数值加1。每计数一次后,对里程数据进行一次存储操作。根据计数器计出脉冲

15、数,用脉冲数除以电动车行驶0.1公里所要转的圈数,就可以算出电动车的里程数。把这个里程数与存储器原来的里程数相加即可得到目前的总里程数。总里程数的显示是设定出现在电动车开动,单片机开机经过初始化后显示出来,这样以来用户可以清楚的知道自己的车子已经运行了多少公里了。累加器堆栈保护状态字堆栈保护车轮圈数加1清A计数没溢出,转INTEX0OUT溢出进位61H、62H开外中断1状态字恢复累加器恢复中断返回开里程指示灯 图3-3里程测量流程图3.5 速度测量程序采用外部中断1控制定时器T1的启动和停止。当外部中断1输入为0时,定时器T1停止,当外部中断1输入为1时,定时器T1启动。外部中断1的输入信号是

16、将轮子圈数的计数脉冲经二分频后形成。这样每次定时器T1的计数时间为轮子转一圈所用的时间。由图3-4可知,68H6BH单元存放轮子转一圈的时间。定时器计出每转一圈的时间,用电动车车轮的周长除以转一圈所用的时间就得出电动车的速度。堆栈保护关外中断1溢出标志为0转INTEX11,将时间计数值放入暂存单元68H6BH溢出时,计时单元赋#0FFH将时间计数值移入暂存单元68H6BH清A计时单元置0清溢出标志堆栈恢复返回开里程指示灯 图3-4 速度测量流程图3.6 里程显示子程序关闭速度指示灯,开启里程指示灯当显示里程时,如图3-5所示,先关闭速度指示灯,开里程指示灯,再将轮子的圈数转换为公里数,然后在数

17、码管中显示公里数,最后子程序返回。将圈数转换成公里数显示公里数子程序返回图3-5 里程显示程序流程图3.7 速度显示子程序当要显示速度时,如图3-6所示,首先进行关里程指示灯,开启速度指示灯,接着调用速度转换子程序,然后与设定速度比较,超速报警,最后调用显示子程序在数码管中显示出来。关闭里程指示灯,开启速度指示灯调每圈时间转换为速度子程序是否超速?报警关报警器显示速度YN子程序返回 图3-6 速度显示程序的流程图4 软件调试4.1 Keil的概述Keil C51是Keil公司针对80C51系列单芯片,在Windows平台上开发出的一套工具软件,透过Keil uVision2的IDE(整合发展环

18、境),提供80C51汇编语言与C51语言的编辑、编译/连结、除错/模拟测试,并具备完善的项目管理系统(Project),以及系统文件说明等功能20。Keil uVision2的功能结构说明如下:(1)Keil uVision2 IDE提供项目管理的整合作业环境,拥有编译、组译、连结等建构项目的功能。(2)提供各种厂牌型号80C51核心兼容单芯片系统的开发使用。(3)C51提供ANSI C程序语言编译器(ANSI C Compiler);A51提供8051汇编程序组译器(Macro Assembler)。(4)在程序的连结时,提供ANSI 标准链接库、LIB51链接库管理员与RTX51实时操作系

19、统。 (5)Keil uVision2 Debugger:有强大的除错工具和平行仿真系统。可执行单步执行,芯片内部缓存器、内存、输出入界面的实时监看功能1920。4.1.2 Keil的使用Keil uVision2使用简介如下:(1)点击Keil uVision2ProjectNew Project可新建一个工程,点击“保存”按钮后,选择对应的单片机型号。本设计采用AT89C52,所以选择Atmel的AT89C52,点击“确定”按钮。 (2)点击Keil uVision2FileNew可新建一个工程文件。点击Keil uVision2FileSave可保存新建的工程文件。如果采用C语言编程,工

20、程文件的名称后缀为.c,如果采用汇编语言编程,工程文件的名称后缀为.asm。本设计采用汇编语言,工程文件保存到keil目录里,工程文件名为che.asm,然后点击保存。(3)在Source Group 1上右键单击Add Files to Group Source Group 1为工程添加相应的工程文件。在弹出的对话框中选中工程文件,再点击Add按钮,然后点击Close按钮即可将工程文件添加到工程当中。(4)在工程文件中写入单片机程序,点击保存按钮保存文件。然后点击Keil uVision2ProjectBuild tartget可编译修改过的源文件。点击Keil uVision2Projec

21、tRebuild tartget可重新编译所有的源文件。(5)如果程序出现错误,在Output Window窗口会有错误和警告提示,修改并重新编译程序内容,直到Output Window窗口出现“0 Error(s),0 Warning(s)”。如图4-1所示。 图4-1输出提示信息至此,我们在Keil C51上做了一个完整工程的全过程。但这只是纯软件的开发过程,如何使用程序下载器看一看程序运行的结果呢?单击“Project”菜单,再在下拉菜单中单击“Options for TargetTargrt1”,单击“Output”中单击“Create HEX File” 选项,点击“确定”,使程序编

22、译后产生HEX代码,供下载器软件使用。就可把程序下载到AT89C52单片机中。如图4-2所示。 图4-2 设置生成HEX代码4.2 Proteus介绍4.2.1 概述由于微电子技术的迅猛发展,单片机在汽车、通信、办公自动化、工业控制、高级玩具、家用电器等方面都得到了广泛的应用。单片机作为嵌入式系统的核心器件,其系统设计包括硬件电路设计和程序设计两个方面,调试过程一般分为软件调试、硬件测试、系统调试3个过程。软件调试一般比较容易进行,但如果要进行硬件电路测试和系统调试则比较麻烦,因为要进行这两个过程必须在电路板制作完成、元器件焊接完毕之后进行,而且电路板的制作、元器件的安装、焊接费时费力。如果采

23、用作为单片机系统仿真软件Proteus,则不用制作具体的电路板也能够完成以上工作。毫无疑问,在使用Proteus进行系统虚拟开发成功之后再进行实际制作,必然可以提高开发效率、降低开发成本、提高开发速度,而这些因素对于企业来讲是非常重要的。4.2.2 Proteus 软件介绍Proteus是基于SPICE3F5仿真引擎的混合电路仿真软件,不仅能够仿真模拟、数字电路以及模数混合电路,更具特色的是它能够仿真基于单片机的电子系统。Proteus不但完全支持MCS-51及其派生系列单片机的设计系统,另外也能仿真基于AVR和PIC系列的单片机系统。Proteus软件可提供的模拟、数字、交(直)流等元器件达

24、30多个元件库,共计数千种。此外,对于元件库中没有的器件,使用者也可依照需要自己创建。软件调试方面,其自身只带汇编编译器,不支持C语言。但可以将它与Keil C51集成开发环境连接,将用汇编和C语言编写的程序编译好之后,可以立即进行软、硬件结合的系统仿真,像使用仿真器一样来调试程序21。4.2.3 Proteus 的工作过程运行Proteus 的ISIS 程序后,进入该仿真软件的主界面。在工作前,要设置view 菜单下的捕捉对齐和system 下的颜色、图形界面大小等项目。通过工具栏中的p(从库中选择元件命令)命令,在pick devices 窗口中选择电路所需的元件,放置元件并调整其相对位置

25、,元件参数设置,元器件间连线,编写程序;在source 菜单的Define code generation tools 菜单命令下,选择程序编译的工具、路径、扩展名等项目;在source菜单的Add/Remove source files 命令下,加入单片机硬件电路的对应程序;通过debug 菜单的相应命令仿真程序和电路的运行情况。Proteus 软件所提供了30 多个元件库,数千种元件。元件涉及到数字和模拟、交流和直流等21。4.2.4 Proteus 软件所提供的调试手段 Proteus 提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。对于单片机硬件电路和软件的

26、调试,Proteus 提供了两种方法:一种是系统总体执行效果,一种是对软件的分步调试以看具体的执行情况。对于总体执行效果的调试方法,只需要执行debug 菜单下的execute 菜单项或F12 快捷键启动执行,用debug 菜单下的pause animation 菜单项或pause 键暂停系统的运行;或用debug 菜单下的stop animation 菜单项或sHift-break 组合键停止系统的运行。其运行方式也可以选择工具栏中的相应工具进行。对于软件的分步调试, 应先执行debug 菜单下的start/restart debugging 菜单项命令,此时可以选择step over 、s

27、tep into 和 step out 命令执行程序(可以用快捷键F10、F11 和ctrl+F11),执行的效果是单句执行、进入子程序执行和跳出子程序执行。在执行了start / restart debugging命令后,在debug 菜单的下面要出现仿真中所涉及到的软件列表和单片机的系统资源等,可供调试时分析和查看。4.3 Proteus与Keil的联调(1)当Proteus里的硬件图画好后,双击AT89C52,出现如图4-3的对话框:图 4-3图形编辑窗口(2)单击“Program File:”后面的文件夹,打开刚保存的keil文件夹,选中“che.hex”,出现如图4-4的框图: 图

28、4-4选择程序执行文件(3)单机“打开”,出现如图4-5的对话框,单机“OK”,程序便被加载入单片机里,可以进行仿真调试了。图 4-5添加程序执行文件(4)当改变一次汇编语言软件程序,就要在Keil C51里再编译一次产生hex文件,这样才能在Proteus里看到改变程序后的仿真结果。4.4 调试结果以及现象分析在Proteus绘制好原理图后,调入已编译好的目标代码文件*.HEX,可以在Proteus的原理图中看到模拟的实物运行状态和过程。Proteus具有设计灵活,便于仿真的特点,可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。因此在单片机开发应用中,Proteus将获得愈来愈广

29、泛的应用。 如图4-6为里程仿真图1,由图可知,开关没有闭合,而且是发光二极管D1亮,而发光二极管D2不亮,表明此时显示的是里程状态,数码管显示为004,表示此时电动车所行使的里程是0.4公里,电动车蓄电池此时的电量为48V。 图4-6 里程仿真图1如图4-7为里程仿真图2,由图可知,开关没有闭合,而且是发光二极管D1亮,而发光二极管D2不亮,表明此时显示的是里程状态,数码管显示为014,表示此时电动车所行使的里程是1.4公里,电动车蓄电池此时的电量为40V。图4-7 里程仿真图2如图4-8为速度仿真图,由图可知,开关闭合,而且是发光二极管D1不亮,而发光二极管D2亮,表明此时显示的是速度状态

30、,数码管显示为018,表示此时电动车所行使的速度为18Km/h。由于小于电动车最大限速20Km/h,所以发光二极管D3不亮,而且喇叭不报警,电动车蓄电池此时的电量为35V。图4-8 速度仿真图 如图4-9为报警显示仿真图,由图可知,开关闭合,而且是发光二极管D1不亮,而发光二极管D2亮,表明此时显示的是速度状态,数码管显示为025,表示此时电动车所行使的速度为25Km/h。由于大于电动车最大限速20Km/h,所以发光二极管D3亮,而且喇叭报警,电动车蓄电池此时的电量为21V。图4-9 报警显示仿真图4.5 调试故障及原因分析在软件仿真过程中遇到的一些问题,具体故障和解决方法如下:1、数码管显示

31、不正确本次设计的电量显示电路采用的是共阴极接法,在仿真时错用共阳极数码管,导致数码管不能正确显示。 2、LED不断闪烁 本设计采用动态显示方式编写软件,应选择合适的延时周期。如果时间选择不合适,LED就会不停闪烁,这时可适当调整时间常数即可解决问题。结 论 本次设计的电动车仪表能够显示出电动车行驶的总里程数、行驶速度以及蓄电池所剩的电量,具有超速报警提醒以及里程数据自动记忆的功能,也可应用于摩托车、汽车等机动车上。本论文着重对电动车仪表进行了软件方面的设计,软件采用汇编语言编写,采用模块化设计思想,程序可读性强。通过仿真、实验验证了系统的可行,能满足设计要求,达到了设计的指标,实现了对电动车速

32、度、里程和电量的计算功能,并能用LED显示出来。总体上来讲,主要因为时间跟自身水平有限,软件程序还有一些可以改进的地方。致 谢首先,我要感谢我的指导老师白秋产老师。白老师以其严谨求实的治学态度、高度的敬业精神和大胆创新的进取精神对我产生了重要的影响。在他的耐心指导和大力支持下我完成了本次设计。同时,在此次毕业设计过程中我也学到了许多了关于单片机方面的知识,实验技能也有了很大的提高。 另外,我还要特别感谢同学们对我做毕业设计的帮助,以及感谢我的父母对我的鼓励,使我得以顺利完成论文。同时还要感谢我们电子与电气工程学院的各位领导,为我们的毕业设计准备了充足硬件设施。为保证我们的设计能顺利完成,还特别

33、开设了几个实验室给我们使用。同时,指导老师不时地询问我们毕业设计的进展情况,不断给予讲解,使设计能顺利进行。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请再次接受我诚挚的谢意!参 考 文 献1 吴文琳,电动自行车结构与使用维修.机械工程出版社,20052张新德,电动自行车维修技术.机械工程出版社,20063 杨素行,模拟电子技术基础简明教程.高等教育出版社,19974 余孟尝,数字电子技术基础简明教程.高等教育出版社,19985 雷玉堂,王庆有,何加铭,张伟风.光电检测技术.中国计量出版社,19966 罗自维.传感器

34、应用.电子工业出版社,19927 李军,贺庆之.检测技术及仪表.中国工业出版社,19968 黄贤武,郑筱霞.传感器原理与应用.成都:电子科技大学出版社,19999 刘振玉.光电技术.北京:北京理工大学出版社,198910 黄贤武,郑筱霞.传感器原理与应用.成都:电子科技大学出版社,199911 丁镇生.传感器及传感技术应用.北京:电子工业出版社,199812 黄贤武,郑筱霞,曲波.传感器实际应用电路设计.成都:电子科技大学出版社,199713 李钟实.实用电子报警器精选百例.北京:科学技术文献出版社,199714 李华.MCS-51系列单片机实用接口技术.北京:北京航空学院出版社,199315

35、 余永权.单片机与家用电器智能化技术.电子工业出版社,199116 谢筑森.单片机开发与典型应用设计.中国科学技术大学出版社,199717 公茂法.单片机人机接口实例集.北京:北京航空学院出版社,199818 楼然苗,李光飞.51系列单片机设计实例.北京:北京航空航天大学出版社,200319 周立功.单片机实验与实践.北京:北京航空航天大学出版社,200420 严天峰.单片机应用系统设计与仿真调试.北京航空航天大学出版社,200521 徐爱钧.单片机原理实用教程-基于Proteus虚拟仿真.电子工业出版社,2009附录A 内存的设定:由于本系统处理的功能较多,因此一部分内存单元用于特定的用处。

36、其主要内存单元及用处如下:50H:EEPROM器件寻址字节存放单元;51H:EEPROM传送字节数存放单元;30H:EEPROM发送数据缓冲单元;40H:EEPROM读出数据存放单元;0A0H:EEPROM寻址字节写;0A1H:EEPROM寻址字节读;62H:DPTR计数扩展高8位;6CH:定时器T1计数扩展高8位;6DH:定时器T1计数扩展高816位;60H、61H、62H:里程计数单元;68H、69H、6AH、6BH:存放自行车每圈的时间数;70H、71H、72H、73H:显示BCD码数据存放用;11H15H:存放被除数;16H19H:存放除数附录B完整的che.asm代码源程序:;*;

37、; SPEED/MILE FOR BIKE PROGRAM ; ;*; 60H,61H,62H作里程计数单元,6CH,6DH作T1计数扩充单元,; 68H,69H,6AH,6BH存放自行车每圈时间数,70H,71H,72H,73H; 作显示BCD码存放数用,11H-15H存放被除数,16H-19H存放除数 ;定义VSDA EQU P1.5 ;EEPROM数据传送口VSCL EQU P1.4 ;EEPROM时钟传送口SLA EQU 50H ;EEPROM器件寻址字节存放单元NUMBYT EQU 51H ;EEPROM传送字节数存放单元MTD EQU 30H ;EEPROM发送数据缓冲单元MRD

38、EQU 40H ;EEPROM读出数据存放单元SLAW EQU 0A0H ;EEPROM寻址字节写SLAR EQU 0A1H ;EEPROM寻址字节读DPHH EQU 62H ;DPTR计数扩展高8位TH1H EQU 6CH 定时器T1扩展高8位TH1HH EQU 6DH ;定时器T1扩展高8-16位CLK BIT P3.7 ;定义I/O口 CS549 BIT P3.6DOUT BIT P3.5 GW BIT P3.1SW BIT P3.0SJGW EQU 43HSJSW EQU 42HGW1 BIT P1.2SW1 BIT P1.1BW1 BIT P1.0SJGW1 EQU 70HSJSW1

39、 EQU 71HSJBW1 EQU 72H; PROGRAM INPUT ;ORG 0000H ;程序执行开始地址LJMP START ;跳到STARTORG 0003H ;外中断0中断程序入口LJMP INTEX0 ;跳至INTEX0中断服务程序ORG 000BH ;定时器T0中断程序程序RETI ;中断返回ORG 0013H ;外中断1中断程序入口LJMP INTEX1 ;跳至INTEX1中断服务程序ORG 001BH ;定时器T1中断程序程序LJMP INTT1 ;跳至INTEX1中断服务程序ORG 0023H ;串行口中断入口地址RETI ;中断返回ORG 002BH ;定时器T2中断

40、程序程序RETI ; 中断返回;*; PROGRAM CLEAR; 上电初始化程序;*CLEARMEN: MOV TMOD ,#90H ;T1为16位外部控制定时器MOV SP,#75H ;堆栈在75H开始SETB PX0 ;外中断0优先级为1SETB IT0 ;外中断0用边沿触发SETB IT1 ; 外中断1用边沿触发CLR A ;清AMOV 20H,A ;清内存中特定单元MOV 6CH,A ;MOV 6DH,A ;MOV 70H,A ;MOV 71H,A ;MOV 72H,A ;MOV 73H,A ;MOV 60H,A ;MOV 61H,A ;MOV 62H,A ;MOV 63H,A ;

41、清内存中特定单元DEC A ; A 为#0FFHMOV 68H,A ;内存置数据#0FFHMOV 69H,A ;内存置数据#0FFHMOV 6AH,A ;内存置数据#0FFHMOV 6BH,A ;内存置数据#0FFHSETB TR1 ;开定时器T1SETB EA ;开中断允许SETB EX0 ;开外中断0SETB ET1 ;开定时中断T1SETB P3.4 ;关报警器LCALL VIICREAD ;将EEPROM中原里程数据调入内存RET ;子程序返回;* ; PROGRAM START;*START: LCALL CLEARMEN ;上电初始化START0: LCALL ADCLCALL L

42、OOPLCALL VDATJB P1.6,DISPLAYS ; P1.6=1,显示里程 LCALL DISPLAYV; 显示速度START2: SJMP START0 ; 转START0循环 ;*;INTEX0 PROGRAM;里程计数程序,用外中断0实现,计数用60H-62H内存单元;*INTEX0: PUSH ACC ;累加器堆栈保护PUSH PSW ;状态字堆栈保护INC 60H ; 圈加1CLR A ; 清ACJNE A,60H,INTEX0OUT ; 计数没溢出转INTEX0OUTINC 61H ; 溢出进位(61H加1)CJNE A,61H,INTEX0OUT ; 计数没溢出转IN

43、TEX0OUTINC 62H ;溢出进位(62H加1)INTEX0OUT: LCALL VIICWRITE ;里程数据存入EEPROMSETB EX1 ;开外中断1POP PSW ;状态字恢复POP ACC ;累加器恢复RETI ;中断返回;*;INTEX1 PROGRAM;每转1圈时间计数处理程序,每圈时间放在68H-6BH单元中;*INTEX1: PUSH ACC ;堆栈保护PUSH PSW ;CLR EX1 ; 关外中断1JNB 00H,INTEX11; 溢出标志为0转INTEX11MOV TL1,#0FFH ;溢出时计时单元赋#0FFH(显示速MOV TH1,#0FFH ; 度为零)M

44、OV 6CH,#0FFH ;MOV 6DH,#0FFH ;INTEX11: MOV 68H,TL1 ; 将时间计数值移入暂存单元68H-6BHMOV 69H,TH1 ;MOV 6AH,6CH ;MOV 6BH,6DH ;CLR A ;清AMOV TL1,A ;计时单元置0MOV TH1,A ;MOV 6CH,A ;MOV 6DH,A ;CLR 00H ;清溢出标志POP PSW ;堆栈恢复POP ACC ;RETI ;中断返回;*;INTT1 PROGRAM;T1计数器中断服务程序。(计数器T1由外中断1输入控制,当为高电平时计时开始);*INTT1: PUSH ACC ;堆栈保护PUSH P

45、SW ;INC 6CH ;6CH计时单元加1MOV A,6CH ;移入AJNZ INTT11 ;不等于0转INTT11INC 6DH ;进位,6DH单元加1MOV A,6DH ;移入AJNZ INTT11 ;不等于0转INTT11SETB 00H ;计时器溢出,置溢出标志INTT11: POP PSW ;恢复堆栈 POP ACC ; RETI ;中断返回;*;DISPLAY S;里程显示控制程序;*DISPLAYS: SETB P1.3 ;点亮LED1(显示里程状态)CLR P1.7 ;关闭速度指示灯LCALL SSS ;将圈数转为公里数LCALL DISPLAY ;显示公里数据LJMP START0 ;跳回START0;*;DISPLAY V;速度显示控制程序;*DISPLAYV: CLR P1.3 ;关闭 LED1(里程)灯SETB P1.7 ;点亮LED2(显示时速状态)LCALL VVV ;每圈时间换算为Km/h程序MOV A,71H ;将十位数(BCD码)值移入ASUBB A,#02H ;与预定报警值比较JNC WARING ;时速超过20时报警SETB P3.4 ;关报警灯V1: LCALL DISPLAYR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论