自行车里程计数表的设计(孙洋洋).doc
扬州工业职业技术学院2009 2010学年第二学期毕业设计课题名称: 自行车里程计数表的设计 设计时间: 2009.10.10-2010.3.30 系 部: 电子信息工程系 班 级: 0701应用电子 姓 名: 孙洋洋 指导教师: 钱 松 自行车里程计数表的设计孙洋洋 0701应用电子摘 要:本文的主要任务是应用所学习的电路知识以及单片机知识,在学校已有的单片机开发板、已经调试成功的有源滤波器、集成运放组成的放大电路设计一个能够实时测量并显示自行车历程的自行车里程计数表。拟采用典型传感器霍尔传感器作为测量数据采集的基本器件,利用有源滤波器对霍尔传感器采集的信号进行高次杂波的滤除以及波形性能的优化,同时采用基于运放设计的放大电路,对信号进行放大并送入单片机进行分析处理,最后送到单片机开发板上的LCD显示模块进行显示。采用 C语言根据功能需求进行程序的编写与调试,保证软硬件正常工作,完成产品相应功能。要求能设计过程中的各种原理图,理解工作原理图,理解程序编写的思路,所有设计资料符合GB以及学院毕业设计的要求本文先对里程表设计当中所需设备作了详细介绍,对设计中存在的问题进行了说明;而后对硬件和软件部分的设计和实现作了认真的分析;然后给出了系统的建模过程及相应的系统模型,在此基础上进行了控制仿真,并对仿真效果进行了比较。本里程表的设计具有结构简单,成本低廉,显示清晰,稳定可靠等优点。并且可进行扩充,加入时速表的功能,更加方便的了解你现在所处的情况。关键词:里程计 单片机 霍尔传感器 有源滤波器 PCBBicycle Mileage Count TableSun Yangyang0701 Applicable ElectronicAbstract: This paper is the main task of the application of study circuit knowLCDge and knowLCDge, the school has single-chip microcontroller development board, has the debugging successful active filter, integrated op-amp composed of amplifying circuit design a can real-time measurement and displays a bike course bike mileage count tables. Typical sensor is used as a measurement data acquisition hall sensor-based basic device, using active filter to hall sensors to collect the signals higher-degree clutter filter and waveform performance optimization, and based on the op-amp design amplifier circuit, the signal is to enlarge and into the microcontroller, finally analyzed with MCU development to plate on the LCD display module displayed. Using C language program function according to requirement of writing and debugging, ensure the normal work, software and hardware complete product corresponding function. Requests can design process of various principle diagram, understand working principle diagram, understand programming ideas, all design documents are compliant with GB and college graduation design requirements of this text firstly "milestones" design of the necessary equipment in detail, on problems existing in the design, explained Then for hardware and software part of the design and realization of the earnest analysis, Then presented system modeling process and the corresponding system model, based on which the control simulation, and the simulation results are compared.This "milestones" design is simple in structure, low cost, show clear, stable and reliable. And can be expanded, join a speedometer function, more convenient to understand that you are .Keywords: odometer Microcontroller Hallsensors Active filter PCB目 录第一章 绪论11.1本课题的研究的背景以及现实意义11.2本课题对于专业知识的综合应用情况11.3课题论述总体结构安排1第二章 自行车里程表的工作概述以及原理分析32.1自行车里程表的工作概述32.2确保自行车里程表的工作性能稳定的相关措施32.3系统硬件电路总体结构框图32.4自行车里程计总体电路原理图42.5各部分单元电路介绍42.5.1基于运放有源滤波器电路介绍52.5.2信号放大电路52.5.3单片机最小系统电路62.5.4LCD显示电路62.5.5核心器件-霍尔传感器6第三章 应用Protel实现电路原理图的绘制及PCB设计83.1Protel简介83.2绘制电路原理图的主要步骤83.3PCB人工布局、人工布线设计9第四章 自行车里程计C程序的编写与实现124.1软件编程实现124.1.1系统软件框图124.1.2自行车里程计频率的测量思路124.1.3键盘实现对里程计的控制134.2自行车里程计C语言程序144.2.1键盘扫描部分程序144.2.2存储器部分程序144.2.3显示部分程序164.2.4频率测量部分程序17第五章 总结195.1设计功能分析195.2 心得体会19参考文献20致 谢21附录22第一章 绪论1.1本课题的研究的背景以及现实意义自行车在现实生活中占有非常重要作用,目前自行车的使用已经从原来单一的交通工具发展为同时具有交通意义、健身锻炼以及相关娱乐功能。针对这样的发展实际情况,在完成学院的毕业设计工作中,我决定采用所学习的单片机知识以及相关的电路知识来进行自行车里程计的设计。目前市场自行车里程表的发展,其功能也逐渐从单一的里程显示发展到速度、时间显示,甚至有的还具有测量骑车人的心跳、显示骑车人热量消耗等功能,让人能清楚地知道当前的速度、时间、里程等物理量。所以本课题的研究具有一定的现实应用意义。1.2本课题对于专业知识的综合应用情况因为学习的知识深度的限制以及实际情况的考虑,我设计的自行车里程计的功能确定为能够正确显示自行车的里程。显示的方式采用ATMEL公司AT89S51单片机为驱动1602LCD显示器进行显示。采用扬州工业职业技术学院的单片机开发电路板作为电路实现的主要功能载体。在学院三年的单片机学习过程中,我们学习单片机都是采用学院设计的单片机开发板以及C语言进行学习,学院的51单片机开发板在单片机最小系统的基础上配置了数码管显示、LCD显示区、LCD显示区、独立键盘输入区以及模拟量输入、A/D转换等资源,满足了单片机实际开发的绝大部分要求。同时开发板上的电路结构也能够较好地锻炼自己电路方面的知识。采用C语言进行编程能够综合锻炼自己的实际程序编写的能力以及程序的调试功能。本课题的选题难度适中,能够对应用电子技术专业学习的专业课程有较为全面的应用与掌握,同时也与自己的专业能力符合。1.3课题论述总体结构安排第一章叙述了自行车里程表研究的背景以及现实意义第二章则主要介绍设计工作总体概述以及产品工作的原理,按照功能电路的分别进行详细的分析讨论,最终分析电路的总体工作原理。第三章主要讨论应用Protel软件来实现电路原理图的绘制以及印制板设计第四章是自行车里程表的软件实现部分,主要是利用C语言进行程序的编写,完成电路的测量功能。第五章为总结和展望,总结本课题设计的总体思路,产品的功能以及对于产品功能升级等进行情景展望。第二章 自行车里程表的工作概述以及原理分析2.1自行车里程表的工作概述自行车里程表是由数据采集,MCU,输入输出,数据存储四个功能部分构成。其中数据的采集是由霍尔传感器来完成的,它的输出是矩形脉冲,但是由于实际的工作环境以及霍尔传感器的工作特性,输出的波形要经过波形处理后(拟采用滤波器电路)向单片机系统提供转速信号。当数据送入AT89S51单片机后,单片机将对INT1脚的信号进行计数,当计数的脉冲达到1KM的时候,INT1申请中断,对外输出信号,输出的信号由显示部分送LCD进行显示,显示当前的行驶里程情况。在本次工作过程完成后,工作的数据存入单片机EEPROM中,以便下次行驶时在其基础上继续计数送出显示总共的里程数,以达到记忆的目的。其中键盘是人机交互的接口,系统设计使得键盘能够实现整个系统开关,显示器的开关,部分单元电路的控制。2.2确保自行车里程表的工作性能稳定的相关措施自行车里程计能实时地将所测的累计里程数显示出来,主要是将传感器输入到单片机的脉冲信号的频率(传感器将不同车速转变成不同频率的脉冲信号)实时地测量出来,考虑到信号的衰减、干扰等影响,在信号送入单片机前应对其进行放大整形,然后通过单片机计算出里程,再将所得数据存储到数据存储器,并由LCD显示模块交替显示所测里程。本设计的里程数的算法是一种理想情况的假设,(认为在一定时间内自行车是匀速行进,平均速度与时间的乘积即为里程数)。设计应综合考虑测速精度和系统反应时间。本设计用测量脉冲频率来计算速度,因而具有较高的测速精度。在计算里程时取了自行车的理想状态。实际中,误差控制在几米之内,相对于整个里程来说不是很大。为了保证系统的实时性,系统的速度转换模块和显示数据转BCD码模块都采用快速算法。另外,还应尽量保证其他子模块在编程时的通用性和高效性。本设计的里程值采用四位显示。2.3系统硬件电路总体结构框图图2-1自行车里程计总体结构框图2.4自行车里程计总体电路原理图自行车里程计总体电路原理图由霍尔传感器后的信号滤波电路以及单片机开发板电路两部分组成。图2-2为电路总原理图之一,单片机开发板电路的电路原理图,图2-3为电路总原理图之二,霍尔传感器信号滤波以及放大电路。经过滤波放大的信号图2-2自行车里程计电路总原理图之一霍尔传感器的信号图2-3自行车里程计电路总原理图之二2.5各部分单元电路介绍2.5.1基于运放有源滤波器电路介绍所谓滤波器就是根据信号中不同的频率分量,将需要的信号选取出来,不需要的信号进行削弱或者消除。在实际的使用中有低通滤波器(LPF)、高通滤波器(HPF)以及带通滤波器(BPF)三类,同时滤波器也可以分为有源滤波器以及无源滤波器两种,在各个电气性能方面,有源滤波器的性能要优于无源滤波器,所以在本设计中采用了有源滤波器电路。由于由霍尔传感器中传来的有用信号处于低频段,干扰则为高频谐波,所以本设计采取的有源低通滤波器。基于运放的有源滤波器电路图如图2-4所示 图2-4 基于运放的有源滤波器电路图2.5.2信号放大电路经过滤波器处理后,信号的高次谐波得到了很好的削弱,但是输出信号幅度较小,为了能够让单片机有效接受处理,信号需要进行放大处理,这里采用成熟的集成运放进行放大,放大电路的电路原理图如图2-5所示图2-5 基于运放的信号放大电路2.5.3单片机最小系统电路单片机最小系统电路由单片机、单片机复位电路、晶体振荡回路组成,能够完成单片机工作的最基本需要,单片机最小系统电路如图2-6所示图2-6 单片机最小系统电路2.5.4LCD显示电路单片机将计算处理的结果采用LCD进行显示,显示电路的电路原理图如图2-7所示图 2-7 LCD显示电路2.5.5核心器件-霍尔传感器霍尔传感器是一种能实现磁电转换的传感器,用它们可以检测磁场及其变化。霍尔传感器具有许多优点,它们的结构牢固,体积小,寿命长,安装方便,功耗小,频率高,耐震动,不怕灰尘、油污及盐雾等的污染或腐蚀。霍尔开关器件具有无触点、输出波形清晰、无抖动、位置重复精度高等优点。 霍尔效应:在一块半导体薄片上,其长度为,宽度为,厚度为,当它被置于磁感应强度的磁场中,如果在它的相对的两边通以控制电流,且磁场方向与电流方向正交,则在半导体另外两端将产生一个大小与控制电流方向和磁感应强度乘积成正比的电势h,即Uh=KhIB,其中Kh为霍尔元件的灵敏度。该电势就称为霍尔电势,半导体薄片就是霍尔元件。图2-8为常见的霍尔传感器的外形。图 2-8 霍尔传感器的外形图第三章 应用Protel实现电路原理图的绘制及PCB设计3.1Protel简介使用电脑设计电路原理图和电路板图是把电子技术从理论运用到实际的第一步。只有会设计电路原理图和电路板图才能进行电子产品的研发与开发。本软件就是从理论走向实际,掌握电子产品开发的基本技术。Protel99SE是澳大利亚ProtelTechnology公司推出的一个全32位的电路板设计软件。该软件功能强大,人机界面友好,易学易用,使用该软件设计者可以容易设计电路原理图、画元件图、设计电路板图、画元件封装图和电路仿真,是夜内人士首选的电路板设计工具。3.2绘制电路原理图的主要步骤1、进入Protel 99SE环境2、使用菜单File/New建立新设计数据库文件3、使用菜单File/New在打开窗口选择Schematic Document图标,建立新原理图文件4、将原理图打开5、设置画图环境6、添加元件库7、将所需元件从元件库中取出来,放置在图纸上,并且调整好位置8、使用连线工具将元件连起来,设置元件属性,对元件进行编号9、进行电气规格检查(ERC)10、建立网络表,为制作电路板图做准备绘制完成的单片机开发系统部分的原理图如图3-1所示图3-1 自行车里程计原理图(单片机控制部分)3.3PCB人工布局、人工布线设计人工布局就是将所有的元件一个一个放置到PCB上各个位置。操作较为繁琐,但是能够结合工艺的要求以及设计中实际要求进行,人工布局的效果一般来说效果要比自动布局好很多。在设计中,工程师基本都是采用自动布局的方案进行。这也要求作为电路板设计人员要具有丰富的经验以及长时间坚持的毅力。元件的布局与走线对产品的寿命、稳定性、电磁兼容都有很大的影响,是应该特别注意的地方。一般来说应该有以下一些原则:在放置顺序上应该先放置与结构有关的固定位置的元器件,如电源插座、指示灯、开关、连接件之类,这些器件放置好后用软件的LOCK功能将其锁定,使之以后不会被误移动。再放置线路上的特殊元件和大的元器件,如发热元件、变压器、IC等。最后放置小器件。元件布局还要特别注意散热问题。对于大功率电路,应该将那些发热元件如功率管、变压器等尽量靠边分散布局放置,便于热量散发,不要集中在一个地方,也不要高电容太近以免使电解液过早老化。 布线原则,每人都会有自己的体会,但还是有些通行的原则的。高频数字电路走线细一些、短一些好,大电流信号、高电压信号与小信号之间应该注意隔离(隔离距离与要承受的耐压有关,通常情况下在2kv时板上要距离2mm,在此之上以比例算还要加大,例如若要承受3KV的耐压测试,则高低压线路之间的距离应在3.5mm以上,许多情况下为避免爬电,还在印制线路板上的高低压之间开槽。),两面板布线时,两面的导线宜相互垂直、斜交、或弯曲走线,避免相互平行,以减小寄生耦合;作为电路的输人及输出用的印制导线应尽量避兔相邻平行,以免发生回授,在这些导线之间最好加接地线。走线拐角尽可能大于90度,杜绝90度以下的拐角,也尽量少用90度拐角同是地址线或者数据线,走线长度差异不要太大,否则短线部分要人为走弯线作补偿。走线尽量走在焊接面,特别是通孔工艺的PCB,尽量少用过孔、跳线,单面板焊盘必须要大,焊盘相连的线一定要粗,能放泪滴就放泪滴,一般的单面板厂家质量不会很好,否则对焊接和RE-WORK都会有问题,大面积敷铜要用网格状的,以防止波焊时板子产生气泡和因为热应力作用而弯曲,但在特殊场合下要考虑GND的流向,大小,不能简单的用铜箔填充了事,而是需要去走线,元器件和走线不能太靠边放,一般的单面板多为纸质板,受力后容易断裂,如果在边缘连线或放元器件就会受到影响;必须考虑生产、调试、维修的方便性;模拟电路来说处理地的问题是很重要的,地上产生的噪声往往不便预料,可是一旦产生将会带来极大的麻烦,应该未雨绸缎。对于功放电路,极微小的地噪声都会因为后级的放大对音质产生明显的影响;在高精度A/D转换电路中,如果地线上有高频分量存在将会产生一定的温漂,影响放大器的工作。这时可以在板子的4角加退藕电容,一脚和板子上的地连,一脚连到安装孔上去(通过螺钉和机壳连),这样可将此分量虑去,放大器及AD也就稳定了。另外,电磁兼容问题在目前人们对环保产品倍加关注的情况下显得更加重要了。一般来说电磁信号的来源有3个:信号源,辐射,传输线。晶振是常见的一种高频信号源,在功率谱上晶振的各次谐波能量值会明显高出平均值。可行的做法是控制信号的幅度,晶振外壳接地,对干扰信号进行屏蔽,采用特殊的滤波电路及器件等。单片机控制部分的PCB如图3-2所示。图3-2 单片机控制部分PCB(人工布局、人工布线)第四章 自行车里程计C程序的编写与实现4.1软件编程实现4.1.1系统软件框图本系统软件采用模块化设计方法。整个系统由初始化模块、频率测量模块、速度,里程计算模块、数据转BCD码模块、速度显示模块、里程显示模块、数据存储,读取模块、定时器中断服务模块以及其他功能模块组成。初始化模块里程显示模块EEPROM数据读出模块频率测量模块中断服务模块图4-1 系统软件框图4.1.2自行车里程计频率的测量思路用于频率测量的方法有很多,频率测量的准确度主要取决于所测的频率范围以及被测对象的特点.而测量所能达到的精度,不仅仅取决于作为标准器使用的频率源的精度,也取决于所使用的测量设备和测量方法。该设计能实时地将所测的速度与累计里程数显示出来,主要是将传感器输入到单片机的脉冲信号的频率(传感器将不同车速转变成不同频率的脉冲信号)实时地测量出来,考虑到信号的衰减、干扰等影响,在信号送入单片机前应对其进行放大整形,然后通过单片机计算出速度和里程,再将所得的数据存储到串口数据存储器,并由LCD显示模块交替显示所测速度与里程。本设计的里程数的算法是一种大概的算法(假设在一定时间内自行车是匀速行进,平均速度与时间的乘积即为里程数)。设计时,应综合考虑测速精度和系统反应时间。本设计用测量脉冲频率来计算速度,因而具有较高的测速精度。在计算里程时取了自行车的理想状态。实际中,误差控制在几米之内,相对于整个里程来说不是很大。另外,还应尽量保证其他子模块在编程时的通用性和高效性。本设计的速度和里程值采用6位显示,并包含两个小数位。我们所用的霍尔传感器是一块集成芯片。它结合了采样和放大功能与一体。首先我们把磁钢放在自行车的转轴上,而霍尔元件就放在与其水平的转轴上,当我们完成安装后,转动自行车的转轴,磁钢也就跟着一起转动,从而使霍尔传感器周围的磁场发生变化,这种变化将会导致霍尔电压变化从而产生一个毫伏级的方波,再通过其内部的整形和放大。产生出一个适合外部电路的脉冲电压。由于磁钢共分为8片,磁场将会改变8次,磁场强度大时输出高电平,磁场低时输出为低电平。所以将会产生8个方波,既每输出8个方波代表自行车转动了一周。例如:我们的自行车车轮在R=0.25m时,通过计算得出车轮的周长C=1.5m。由于每一圈霍尔传感器将输出8个脉冲,当自行车行驶1KM时会转动667次,这样每1KM将回产生5336个脉冲,单片机对这5336个脉冲计数,当达到这个数时单片机将会产生中断。通过单片机计算出来的速度和里程的数据,必须通过BCD码的转换才能输出给显示模块。总里程数的显示是设定出现在电动自行车开动,单片机开机经过初始化后显示出来,这样以来用户可以清楚的知道自己的车子已经运行了多少公里了。而速度的显示则是在计算出速度里程后立刻显示出来,体现实时性。4.1.3键盘实现对里程计的控制键盘是实现人机对话的必要设备,用户可用键盘向计算机输入数据或命令。本系统采用独立键盘接口,独立式按键是指直接用I/O口线构成单个的按键电路。每一个独立式按键单独占用一根I/O口线。其接口电路如图4.2所示。独立式按键接口电路配置灵活,软件结构简单。但每个按键要占用一根I/O口线,适用于按键数量少的键盘。电路中,按键输入低电平有效。按键未按时有上拉电阻保证此时输入为高电平。图4-2 独立式按键接口电路4.2自行车里程计C语言程序C语言由于具有良好的结构化特性以及可移植性,在学校的专业课程的学习中,老师也对C语言编程做了详细的讲解,所以本设计采用C语言编程如下。在本章主要分析程序的基本编程思路以及编程结构,所有源程序在附录中。程序编写中一定要注意结构化的程序设计,采用编写大量例子程序以及系统提供的子程序,在主程序中进行调用以及相应的修改。这样便于程序的读写与调试。4.2.1键盘扫描部分程序#include<reg52.h>/头文件包含程序,在本文件中对AT89S51/52进行了定义#include<math.h>/包含了C程序中常见的数学函数#include<stdio.h>/包含了stdio子函数#include<bin2hex.h>#include<intrins.h>#include<absacc.h>/ 在程序编写的时候要使用include加载需要的头文件#define uchar unsigned char #define uint unsigned int / 变量类型的宏定义,为程序定义变量提供方便Sbit k0=p1.0;Sbit k1=p1.1;Sbit k2=p1.2; / 定义人机接口的按键,增强程序的可读性Keyscan ( );/ 具体的键盘扫描程序4.2.2存储器部分程序#include<absacc.h>#include<reg51.h>#include<intrins.h> / 在程序编写的时候要使用include加载需要的头文件#define uchar unsigned char#define uint unsigned int /变量类型的宏定义,为程序定义变量提供方便#define_Nop()_nop_()/*定义空指令*/定义空操作,方便短暂的延时sbit scl=P11;sbit sda=P12;sbit DOG=P17;sbit LCD=P07;sbit LCD_1=P03;sbit LCD_2=P04;sbit LCD_3=P05;sbit LCD_4=P06;/输出结构的定义,增强程序的可读性uint LCD1_data,LCD2_data,LCD3_data,LCD4_data,LCD_data;ucharcode LCD_segment12=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x0,0xFF;/显示功能定义uchar x24c02_read(uchar address);void x24c02_write(uchar address,uchar info);void x24c02_init();void delay1(uchar x);void flash();void x24c01_init();void start();void stop();#includevoid writex(uchar j);uchar readx();void clock();void clrscr(void); /子程序调用前的函数声明/*延时程序*/*E2prom工作指示程序*/*E2prom初始化程序*/*E2prom起始信号程序*/*E2prom结束信号程序*/*E2prom写控制程序*/*E2prom读控制程序*/*E2prom读程序*/*EEPROM写地址和内容程序*/*延时子程序*/4.2.3显示部分程序#include<reg51.h>#include<intrins.h>#include<stdio.h>#include<string.h> / 在程序编写的时候要使用include加载需要的头文件#define UN unsigned char 变量的宏定义UN read_1byte(); /子程序调用前的函数声明void write_1byte(unsigned char x);void WriteToChip(UN a,b);void read(UN h,l,d);void JiaMi51();void JiaMi53();void ck(UN x);void csf(); /子程序调用前的函数声明UN d104;void del05s();UN btl_bz;UN icxh;unsigned int AllByte;/需读出的字节数不16位sbit lsLCDcs=P37;void delay();UN zh_adh8252r(UN x);UN zh_adh8252w(UN x);sfr16 DPTR=0x82;sbit ACC0=ACC0;sbit ACC1=ACC1;sbit ACC2=ACC2;sbit ACC3=ACC3;sbit ACC4=ACC4;sbit ACC5=ACC5;sbit ACC6=ACC6;sbit ACC7=ACC7; unsigned char bdata bm;sbit bm0=bm0;sbit bm1=bm1;sbit bm2=bm2sbit bm3=bm3;sbit bm4=bm4;sbit bm5=bm5;sbit bm6=bm6sbit bm7=bm7;UN data rmem6=0xff,0xff,0xff,0xff,0xff,0xff;UN code LCDcode=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,/0-90x88,0x83,0xa7,0xa1,0x86,0x8e /显示工作状态定义 void main() /显示主程序/*#串口*/void surt()interrupt 44.2.4频率测量部分程序本设计我们把8片磁钢放在自行车的转轴上,由于磁钢共分为8片,磁场将会改变8次,磁场强度大时输出高电平,磁场低时输出为低电平。所以将会产生8个方波,既每输出8个方波代表自行车转动了一周。一般的自行车车轮在R=0.25m时,通过计算得出车轮的周长C=1.5m。由于每一圈霍尔传感器将输出8个脉冲,当自行车行驶1KM时会转动667次,这样每1KM将回产生5336个脉冲,单片机对这5336个脉冲计数,当达到这个数时单片机将会产生中断。 外部信号由T1引脚输入,每产生依次负跳变计数器加1,每输入667个脉冲时计数器发生溢出中断,在中断服务程序中将P0取反依次。T1计数方式工作模式1的模式字为TMOD=50H,T0不用,TMOD的低4位可以任意取(但不能进入模式3),现取0。计算T1的计数初值X=216667=64869D=E400HTL1的初值位00H,TH1为E4H部分程序:#include<reg51.h>#define uchar unsigned char#define uint unsigned int /子程序调用前的函数声明sbit bita=P33;sbit bitb=P34;sbit bitc=P35;sbit bitd=p36;/*四位数abcd */ /输入输出接口控制uint sum=0;/*里程数 */uint k=0;uint store7=0,0,0,0,0,0,0;uchar equal7=0,0,0,0,0,0,0;code uchar dispcode10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar dispbit3=0,0,0,0;void disp();/显示子程序调用前的函数声明void measure();/测量子程序调用前的函数声明void mdelay(unsigned int Delay); /延时子程序调用前的函数声明void mlint0() interrupt 0 /中断服务子程序调用声明 TR0=1; /频率测量主程序运行第五章 总结5.1设计功能分析本文在学院单片机开发系统的基础上,应用霍尔传感器进行了自行车里程计的设计,在设计中,采用了霍尔传感器作为数据采集,并采用了有源滤波器电路对信号进行了滤波优化,同时采用了运放对信号进行了放大处理。最后采用单片机对信号进行处理,并通过LCD对信号进行了显示。电路硬件电路模块化设计,功能正确;软件部分采用了C语言编程,同样采用了模块化程序编写的理念,编写以及调用了大量的例子程序。电路软硬件实现功能良好。5.2 心得体会在本设计中我发现采用了学院的单片机开发板以及学院以及成型的滤波器电路、运算放大电路等开发典型电路板,设计开发的难度降低了很多。真的非常感谢这些基本的设计素材以及资料对自己毕业设计的帮助。在今后的工作中,将继续努力将自己的学习的知识应用到社会发展的各个方面来。参考文献1 樊明龙、任丽静. 单片机原理与应用. 化学工业出版社出版.2005.03;2郭锁利,基于Multisim 9的电子系统设计 仿真与综合应用 人民邮政出版社 20083张明莉,王斌,数字电子技术 机械工业出版社 2009.06;4万新, 电力电子技术 化学工业出版社 2009.05;5俞国亮, MCS-51单片机原理与应用 清华大学出版社 2008.09;6陈国先,PIC单片机开发与应用 机械工业出版社 2007.11;72004张大明. 单片微机控制应用技术. 北京:机械工业出版社. 2006.04;8张毅刚. 单片机原理及应用. 北京:高等教育出版社. 2006.11;9李维提、郭强.液晶显示应用技术.北京:电子工业出版社.2003.12;10郭庭吉8051 单芯片微电脑专题制作台科大图. 2003.12;11谢自美. 电子线路设计.实验.测试M.武汉:华中科技大学出版社2005.11;12夏路易. 电路板原理图与电路板设计教程北京:希望电子出版社.2002.06。致 谢初定课题时自己也有些茫然,看到如此长的程序也有些担忧,害怕自己没能力弄懂,但是我很庆幸有这么多热心的老师,无论是我的毕业设计指导老师还是以前的任课老师,甚至是从未带过我们课的电子系老师,只要我又困难找到他们,他们总能帮我解决,并尽力让我真正弄明白。在本课题的整个研究设计过程中,得到了许多老师和同学的帮助,借此机会向他们一并表示诚挚的谢意。首先感谢我的指导老师钱松老师。在整个的设计过程中,老师对我热心指导、严格要求,在选题、系统总体设计与技术方案上,给予宝贵的建议,提供了大量与设计相关的资料,帮助我建立了正确的设计思想,保证了课题的研究和开发工作的顺利完成。我从他那里学到的不仅仅是学术方面的知识,更重要的是严谨的治学态度。感谢电子系的各位老师,正是因为他们一丝不苟,任劳任怨的教学,我们才能具有扎实的基本功来进行并顺利完成设计任务。感谢老师们为我们提供了良好的设计环境和仪器设备。有了这些,我们才能够高效率的完成毕业设计任务。附录#include<reg52.h>/头文件包含程序,在本文件中对AT89S51/52进行了定义#include<math.h>/包含了C程序中常见的数学函数#include<stdio.h>/包含了stdio子函数#include<bin2hex.h>#include<intrins.h>#include<absacc.h>/ 在程序编写的时候要使用include加载需要的头文件#define uchar unsigned char #define uint unsigned int / 变量类型的宏定义,为程序定义变量提供方便Sbit k0=p1.0;Sbit k1=p1.1;Sbit k2=p1.2; / 定义人机接口的按键,增强程序的可读性Keyscan ( );/ 具体的键盘扫描程序If(k0=0)uchar a;for(a=255;a>0;a-)/延时if(k0=0)/有键按下measure(