资源描述
哈尔滨工程大学毕 业 论 文题 目:出租车计价器设计专 业: 姓 名: 目 录1摘要 12第一章绪论. 23第二章 总体方案的设计. 34第三章 系统硬件电路设计 45第四章 软件设计 126第五章 仿真与调试. 147. 第六章 实物制作. 168参考文献. 189结论.1910附录1 整机电路图. 2011附录2 源程序. 21 摘 要时代变迁,电子技术也在智能化、自动化、人性化,传统出租车计价器已经满足不了人们的要求。出租车计价器计费是否准确、出租车司机是否超速才是乘客关心的问题,而计价器营运数据的管理是否方便才是乘客最关心的问题,计价器营运数据的管理是否方便才是出租车死机最关注的。因此怎样设计出一种面面俱到的计价器十分重要。本设计利用AT89C52单片机,具有性能可靠、电路简单、成本低等特点。所设计的出租车计价器的主要功能有:数据的复位、数据输出、路程输出、计时计价、单价输出及调整、显示当前的系统时间等功能,同时在不计价的时候还能作为时钟为司机同志提供方便。关键词 出租车;计价器;单片机第一章 绪论 入21世纪,出租车已经广泛地出现在我们周围。随着人们生活水平的不断提高,出租车的使用频率也越来越高,出租车行业也以高质量的服务给人们带来了出行的享受。随着出租车行业的发展,对出租车计费器的要求也越来越高。二十世纪后半期,随着集成电路和计算机技术的飞速发展,数字系统也得到了飞速发展,其实现方法经历了由分立元件、SSI、MSI到LSI、VLSI以及UVLSI的过程。同时为了提高系统的可靠性与通用性,微处理器和专业集成电路(ASIC)逐渐取代了通用全硬件LSI电路,而ASIC以其体积小、重量轻、功耗低、速度快、成本低、保密性好而脱颖而出。目前,业界大量可编程逻辑器件(PLD),尤其是现场可编程逻辑器件(FPLD)被大量地应用在ASIC的制作当中。在可编程集成电路的开发过程中,以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术最新成果的电子设计自动化(EDA)技术主要能辅助进行三方面的设计工作:IC设计,电子电路设计以及PCB设计。但是由于行业的特殊性,出租车行业总存在着买纠纷,困扰着行业的发展。而在出租车行业中解决这一矛盾的最好方法就是改良计价器,用更加精良的计价器来为乘客提供更加方便快捷的服务。出租车计价器是出租车营运收费的专用智能仪表,目前市面所使用的计价器大都功能较少,这给出租入21世纪,出租车已经广泛地出现在我们周围。随着人们生活水平的不断提高,出租车的使用频率也越来越高,出租车行业也以高质量的服务给人们带来了出行的享受。但是由于行业的特殊性,出租车行业总存在着买纠纷,困扰着行业的发展。而在出租车行业中解决这一矛盾的最好方法就是改良计价器,用更加精良的计价器来为乘客提供更加方便快捷的服务。服务质量及管理带来一定影响。随着电子技术的发展,出租车计价器技术也在不断进步和提高。国内出租车计价器已经经历了4个阶段的发展。从传统的全部由机械元器件组成的机械式,到半电子式,即用电子线路代替部分机械元器件的出租车计价器。而功能齐全的计价器大都采用双CPU结构,这就提高了计价器的生产成本。从加强出租车行业管理及服务质量并且节约成本出发,本设计介绍了一种以AT89C52单片机为核心的,具有计时、计价、性能可靠、电路简单、成本低等特点的多功能出租车计价器,能够很好的满足市场对出租车计价器的要求。本设计的目的就是通过对现有计价器的分析,从而解决计价器的现存问题,同时完成具有单价输出、单价调整、路程输出、显示当前的系统时间等功能的新型计价器的硬件及软件设计。第二章 总体方案的设计21出租车计费设计: 单程单价:2元/公里 往返单价:1.5元/公里2.2基本设计思想:本设计采用AT89C52为心芯片的电路来实现,利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程计价和价格调整、时钟显示的功能。其原理如图2-1所示:单片机键盘控制单元时间计算单元里程计价单元串口显示驱动电路显示单元图2-1 总体设计方框图首先,选择单程或双程按键,开始计时计费。在到达目的地后,数码管显示金额为里程费用。而后,按下清零开关,又可进行新一轮的计时计费。汽车启动:里程、金额不计数里程计数金额计数显示里程(左)显示金额(右)汽车到达终点车费、里程清零YESNOYESNO 图2-2 工作流程图 第三章 系统硬件电路设计 3.1 单片机的简介单片机的工作是就是执行用户程序、指挥各部分硬件完成既定任务。单片机能够工作的最小电路还包括时钟和复位电路,通常称为单片机最小系统电路。以下是采用单片机AT89CC51的最小系统介绍。单片机AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM) ,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,可灵活应用于各种控制领域。如图3-1为AT89C52的芯片图:图 3-1 AT89C52单片机引脚图 P0 口:P0 口是一组 8 位漏极开路型双向 IO 口,也即地址数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。 P1口:P1是一个带内部上拉电阻的8位双向IO口。对端口写“1” ,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。P2口:P2是一个带有内部上拉电阻的8位双向IO口。对端口写“1” ,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问 8 位地址的外部数据存储器时,P2 口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。P3口:P3口是一组带有内部上拉电阻的 8 位双向 IO 口。P3 口输出缓冲级可驱动4 个 TTL逻辑门电路。对 P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的 P3 口将用上拉电阻输出电流(IIL)。 P3口除了作为一般的IO口线外,更重要的用途是它的第二功能,如下表3-2所示:表3-2 P3口的第二功能说明端口引脚第二功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 (外中断0)P3.3(外中断1)P3.4 T0(定时计数器0外部输入)P3.5 T1(定时计数器1外部输入)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 ALEPROG: 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的 l6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。PSEN:程序储存允许输出是外部程序存储器的读选通信号,当 AT89C51 由外部程序存储器取指令时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN信号不出现。 EAVPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。 如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。 XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。3.2 时钟电路单片机是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按照时序进行工作。时钟电路用于产生单片机工作所需要的时钟信号。AT89C5l 中有一个用于构成内部振荡器的高增益反相放大器,引脚 XTAL1 和 XTAL2 分别是该放大器的输入端和输出端。只要在XTAL1和XTAL2之间跨接晶振和微调电容,就可以构成一个稳定的自激振荡器,如图3-3。 图3-3 时钟电路一般地,电容C1和C2取30pF;晶振的频率范围是1.212MHz。晶振频率越高,系统的时钟频率也越高,单片机的运行速度也就越快。在通常情况下,使用振荡频率为6MHz或12MHz的晶振。如果系统中使用了单片机的串行口通信,则一般采用振荡频率为11.0592MHz的晶振。3.3 复位电路 单片机不管是刚开始接上电源,还是断电,后或者发生故障都要复位。单片机复位是使CPU和系统中的其他功能部件都恢复到一个确定的初始状态,并从这个状态开始工作。所以需要一个复位电路。复位电路有上电复位电路和按键复位电路。上电复位电路是利用电容充电来实现复位的,在接电瞬间,RST端的电位与VCC相同,随着充电电流的减少,RST的电位逐渐下降。只要保证RST为高电平的时间大于两个机器周期,便能正常复位。按键复位电路除了具有上电复位电路的功能外,还可以接一个按键来实现复位,此时电源VCC经两个电阻分压,在RST端产生一个复位高电平。本次设计所选用得复位电路为上电复位电路。在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,52芯片便循环复位。复位后P0P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位是由按键复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电复位和按键复位两种方式,此电路系统采用的是按键复位电路。当时钟频率选用12MHz时,C取22F,Rs约为200,Rk约为1K。常用的复位电路如下3-4图所示:图3-4 上电复位电路单片机复位的条件是:必须使RST(第9引脚)加上持续两个机械周期(即24个脉冲振荡周期)以上的高电平。若时钟频率为12MHZ,每个机器周期为1s,则需要加上持续2s以上时间高电平。3.4 LED数码管显示电路显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有: 发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED显示器是现在最常用的显示器之一。3.4.1数码管的结构及原理1LED 数码管的结构在本设计中采用的是位LED显示数码管,它功耗小,亮度高、字形清晰,工作电压低(1.53V)、体积小、可靠性高、寿命长,响应速度极快。它一共10个引脚,上面、下面分别五个引脚。其管脚顺序如图3-5所示:上面DIG1 ,b,c,e,d 下面g,dp,f, DIG2。图3-5 两位数码管管脚 2.LED数码管的分类半导体数码管的7个发光二极管内部接法可分为共阳极和共阴极两种,分别如图3-6(a)、(b)所示。共阴极接法中各发光二极管的负极相连,ag引脚中,高电平的线段发光。共阳极接法中,各发光二极管的正极相连,ag引脚中,低电平的线段发光。控制不同的段发光,就可显示09不同的数字。(a) 共阳极型 (b) 共阴极型图3-6发光二极管内部电路3LED数码管的原理发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。此设计采用共阳极数码管,图3-7是LED数码管的原理图和符号。图3-7共阳式数码管的原理图和数码管的符号图4.LED数码管的显示显示电路显示模块需要实时显示的时间,分别显示30秒和27秒,因此需要2个数码管。采用动态显示方式显示时间,秒的十位显示在第一个数码管,秒的个位显示第二个数码管。LED显示器的显示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。且只适用于显示数位较少的场合。动态显示是一种按位轮流点亮各位数码管的显示方式,即在某一段,只让其中一位数码管的“位选端”有效,并送出相应的字型显示编码。且适合显示多位数码。对于多位LED显示器,故采用动态显示法进行显示。3.4.2 数码管工作过程由于设计要求有路程(4位)、单价(4位)显示输出,再加上我们另外扩展了时钟显示(包含时分秒的显示),若采用LCD液晶段码显示,在距离屏幕1米之外就无法看清数据,不能满足要求,而且在白天其对比度也不能够满足要求,因此采用8位LED数码管的分屏显示。如图3-8所示。 P0口控制数码管显示当单程时,每走一公里单程单价为1.5元,往返一公里单价为2.0元,当顾客从A站到B 站时走了4公里此时需要顾客支付6元,但顾客从A站到B站再由B站到A站,共走了8公里此时顾客只需要支付8元钱。不同的乘车方式不同的显示单程与单价。图3-8 显示电路3.4.3 数据控制单元设计数字计价器的里程显示以及单价显示,是需要控制单元进行控制的,如下图3-9就是控制电路图。图3-9S1对分屏显示的切换原理图各按键实现的功能如下:(1)S1按键的功能在出租车行走单程的时候,按下S1按键和S5按键时,可以实现数据的分屏显示;车在行走的时候只有总金额和单价在显示,当到达目的地的时候,客户要求查看总的里程,就可以按下S3按键切换到里程和单价显示,供客户查询。(2)S2按键的功能在出租车行走往返的时候,按下S2按键和S5按键时,可以实现数据的分屏显示;车在行走的时候只有总金额和单价在显示,当到达目的地的时候,客户要求查看总的里程,就可以按下S3按键切换到里程和单价显示,供客户查询。(3)S3按键的功能在顾客到达终点的时候,按下S3按键和S5按键时,就可以查到所走的路程以及单价显示。(3)S4按键的功能在顾客下车后,司机可以按下S4按键,则当前的显示清零。3.6 整机电路工作原理当顾客刚坐上车时司机师傅需要询问顾客是否直达,如果是按下按键S1和S5键,顾客需要按照2元/公里支付金额,此时数码显示里程与金额,到达终点时按下S3顾客需要支付总金额;当顾客回答是往返时司机师傅应按下S2和S5键,顾客需要按照1.5元/公里支付金额,此时数码显示里程与金额,到达终点时按下S3,顾客需要支付总金额;顾客下车后,司机师傅此时按下S4键清零,就可以拉下一个顾客。开始选择单程或往返按照2元/公里计算按照1.5元/公里计算显示里程/金额显示里程/金额结束单程往返第四章 软件设计程序设计是一件复杂的工作,为了把复杂的工作条理化,就要有相应的步骤和方法。其步骤可概括为以下三点:1、 分析系统控制要求确定算法:对复杂的问题进行具体的分析,找出合理的计算方法及适当的数据结构,从而确定编写程序的步骤。2、 这是能否编制出高质量程序的关键。由算法画流程图:画程序框图可以把算法和解题步骤逐步具体化,以减少出错。3、 编写程序:根据程序框图所表示的算法和步骤,选用适当的指令排列起来,构成一个有机的整体,即程序。程序数据的一种理想方法是结构化程序设计方法。结构化程序设计是对利用到的控制结构类程序做适当的限制,特别是限制转向语句(或指令)的使用,从而控制了程序的复杂性,力求程序的上、下文顺序与执行流程保持一致性,使程序易读易理解,减少逻辑错误和易于修改、调试。4.1 主程序设计开始初始化变量设置定时器、中断的参数扫描键盘选择乘车方式是否按下键采用1.5/公里计价采用2/公里计价定时器1计时到达终点?中断打开显示里程/金额往返单程NOYES结束第五章 仿真与调试 一个应用系统,要完成各项功能,首先必须有较完善的硬件作保证。同时还必须得到相应设计合理的软件的支持,尤其是微机应用高速发展的今天,许多由硬件完成的工作,都可通过软件编程而代替。甚至有些必须采用很复杂的硬件电路才能完成的工作,用软件编程有时会变得很简单。本设计采用Proteus和Keil两个仿真软件对硬件部分进行仿真。5.1 仿真软件简介1、Keil C51软件简介:平时熟悉的51单片机的编程语言有二种,一种是汇编语言,一种是C语言。由于涉及到大量数据的运算,程序不宜采用汇编语言, C语言大大缩短了开发时间,使程序简洁,且程序可读性非常好。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。在开发大型软件时更能体现高级语言的优势。2、PROTEUS软件简介:Proteus具有和其他EDA工具一样的原理图编辑、印刷电路板(PCB)设计及电路仿真功能,最大的特色是其电路仿真的交互化和可视化,Proteus软件由ISIS和ARES两部分构成,其中ISIS是一款便捷的电子系统原理设计和仿真平台软件,Proteus ISIS是一种操作简便而又功能强大的原理图编辑工具,它运行于Windows操作系统上,可以仿真、分析各种模拟器件和集成电路。本次设计的仿真就是用ISIS 7.1进行的。5.2 仿真步骤单片机软件调试主要是调试本次课程设计的主程序。其调试过程如下:1、新建一个工程。单击Project菜单,在弹出的下拉菜单中选New Project。然后选择你要保存的路径,输入工程文件的名字,保存。2、新建一个工程后弹出一个对话框,根据你的需要选择你使用的单片机型号。然后点击确定。单击“File”,选择“New”,新建文件并在其中输入程序代码,然后保存为C语言文件。3、回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”单击右键选择“Add File To Group Source Group 1”,选中Test.c文件。4、单击“Project”菜单,选中“Built Target”,完成程序的编译,在工程文件夹中找到“.hex”文件即可。5、次后在Protues ISIS中画整机电路图,图画好后,双击C51单片机,此时弹出一个窗口,在项目文件中把刚才产生的“.hex”文件添加进去。保存后则可以进行仿真了。若调试一直存在问题,则要考虑换硬件的电路或软件的程序设计方面的问题。在这里需要说明的是,本次设计仿真中实际上应该有放大电路的设计,但本人制作水平有限,在仿真上弄不出放大电路及传感器部分,则用了一个变阻器代替那部分,通过直接改变电阻的大小来实现电压大小的改变,通过ADC0808模数转换后则传达到LCD显示出数据。5.3 仿真结果图4.1 仿真截图第六章实物制作电子工艺及装配技术对电子产品及自动控制系统的质量尤为重要,其可靠性主要取决于电子装配人员的知识和技能。因此,既要掌握电子装配的基本知识技能,又要熟练掌握其故障的检测与分析方法。本章介绍实物制作的要求及一些细节处理和最终的调试以及调试结果。制作方案是指完成给定的店子制作所采取的步骤和策略。具体做法是:根据电子制作任务书的要求和技术指标,选择印制电路(PCB)板的制作、元器件的检测和装配、整机调试和技术指标测试方法等。5.1 PCB电路板制作印刷电路板图设计原则如下: 1、印制导线宽度应与传导的电流大小相适应。小电流的电路线条主要考虑其机械强度,一般取宽度为15mm,微小型设备线条宽可取05mm或再窄一些。印制导线间距一般取15mm间距过小,抗电强度下降,分布电容增大,容易造成线间击穿和电路工作不稳定等现象。 2、焊点处应加大面积,一般取焊点直径为3mm左右。加大焊点面积一方面可以加大焊点接触面,提高焊点质量,另一方面又可防止在焊接过程中焊点铜箔因受热而剥离。 3、输出信号印制导线与输入信号线平行时,要防止寄生反馈。防止的办法一般可加宽线间距离,或在输出与输入线间加一根地线,可起一定隔离作用。 4、直流电源线和地线的宽度,要以减小分布电阻,即减小寄生耦合为依据。必要时可采取环抱接地的方法,即将印刷电路中的空位和边缘部分的铜箔全部保留作为地线的方法。这样既加大了地线面积,又增强了屏蔽隔离效果。 5、线间电位差较高时要注意绝缘强度,应适当增大线间距离。如果信号线与高压线平行,可在增加线问距离的基础上,在两线之间再增加一条地线,以防止高压对信号线的泄漏。 6、同一台电子设备的各块印刷电路板,其直流电源线、地线和置0线的引出脚要统一,以便于连线和测试;高压引出脚两侧应留出空脚;电流较大的引出脚可几脚并用。 7、一般将公共地线布置在板的边缘,以便于将印刷电路板安装在机壳上;电源、滤波、控制等单元的直流、低频导线和元件,靠边缘布置;高频导线及元器件,布置在板子中间部位,以减小它们对地或机壳的分布电容。 8、设计印刷电路板图时,可先将元器件按电路信号流程成直线排列在纸上(即排件),并力求电路安排紧凑、元器件密集,以缩短引线。这对高频和宽带电路十分重要。然后,用铅笔画线(即排线),排件和排线要兼顾合理性和均匀性。 9、设计印刷电路的主要矛盾是解决导线交叉问题。在单面板上解决交叉线的方法,是靠元器件的空位,印制导线穿越这些空位就可避免导线交叉。5.2 元器件装配元件安装前,要做好准备各项工作,清理与检测好元件,再按电子工艺要求进行元件焊接、剪引脚、清洗和检查等。且安装元件要遵循先小后大,先轻后重,先内后外的原则采用手工烙铁锡焊。其装配的实物图如下。5.3 实物调试及结果元件安装完成后,要使电路处理最佳工作状态,需要对单元电路和整个电路进行调试。调试与测试方案的选择应根据现有的仪器仪表条件来确定,但最基本的调试与测试都要采用专用设备进行调试与测试。调试工作分调试前的准备和调试操作两步完成。1、调试准备:调试准备指在调试前,对调试过程中所需要的仪器、设备、工具、元件和材料等进行调配。2、调试操作:电路调试的基本原则是:先静态,后动态,先局部,后整体。对于动态技术指标调试,要从末级开始,逐级向前级反复进行,直到调准为止。3、性能检测:该项工作在电路调试完成后进行,通过测量相关技术指标来主要了解电路是否达到技术要求。参考文献1 李建忠.单片机原理及应用.西安:西安电子科技大学出版社,20022 朱宇光.单片机应用新技术教程.北京:电子工业出版社,20003 刘守义.单片机应用技术.西安:西安电子科技大学出版社,20024 段九州.放大电路实用设计手册.沈阳:辽宁科学技术出版社,2002.5 潘新民,王燕芳.微型计算机控制技术.北京:电子工业出版社,2004.6 杨宁.单片机与控制技术.北京:北京航空航天大学出版社,2005.7 张玉莲.传感器与自动检测技术.北京:机械工业出版社,2010.结 论经过这段时间的努力,终于按照毕业设计进度要求如期完成了实用电子秤控制系统的硬件设计任务。在做毕业设计的过程中,虽然碰到了不少的困难,但是在老师的指导以及自己的努力下,终于取得了一定成果。智能仪器的核心部件是单片机,因其极高的性价比得到广泛的应用与发展,从而加快了智能仪器的发展。而传感器是一种能将特定的被测量信息(物理量、化学量、生物量等)按一定规律转换成某种可用信号输出的器件或装置本次设计中的半桥电子秤就是在以上仪器的基础上设计而成的。因此,只有充分了解有关智能仪器、单片机、传感器以及各部分之间的关系才能达到要求。主要工作及结论:熟悉AT89C51单片机功能及工作特性,掌握其接口扩展方法。采用面向对象的思想,分层次、分模块构建设计的总体框架。对传感器的工作原来有了更多的认识,熟悉了应变片的工作原理和其与模数转换,放大电路的联系应用。因为电路要用到模数转换这方面的内容,也对这方面的知识有了更好的了解。存在的问题:电子电路的设计中对各种影响因素的考虑不够完全,比如在对过电压情况的处理中未作防范措施。系统设计不够优化,有待改善。比如系统的超量程信号直接由单片机送入报警电路,没有设计保护电路再入单片机处理后送入报警电路。没有扩展更多电路,如日历时钟电路、键盘控制等。对各种实用芯片价格了解不够,选择上仍有欠缺,如所选的称重传感器价格较贵。动手能力不强,电子秤的精确度有待提高。这些都为我今后的学习和工作留下了积极的影响。附录1 整机电路图附录2 源程序#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit dancheng=P10;sbit wangfan=P11;sbit zhongdian=P12;sbit qingling=P13;sbit sudu = P14;sbit qiehuan = P17;uchar tt,num,JE1,JE2,JE3,JE4,LC1,LC2,LC3,LC4;uchar shi1,shi2,fen1,fen2,miao1,miao2,tt0;uchar qiehuan_a=1;float danjia; uint num1,num2,num3,tt1,num_sudu,timer;uchar code table= /共阴极数码管显示字码0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void shijian();void licheng();void delay(uint i)/延时uint x;while(i-)for(x=0;x<10;x+);void zhuanhuan()/数据转换LC1=num1/1000;LC2=num1%1000/100;LC3=num1%1000%100/10;LC4=num1%10;JE1=num2/1000;JE2=num2%1000/100;JE3=num2%1000%100/10;JE4=num2%10;/*void zhuanhuan_shijian()miao1=timer%10;miao2=timer%100/10; */void main()EA=1;/EX0=1;IT0=1;TMOD=0x11; /time0,time1,16位定时器模式TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1;TR0=0;TH1=(65536-50000)/256;TL1=(65536-50000)%256;ET1=1; /允许定时器中断TR1=1; /启动num=0;num1=0;num2=0;danjia=0;while(1)if(dancheng=0) /单程计价按键控制EX0=1;TR0=1;danjia=2;while(!dancheng); if(wangfan=0) /往返计价按键控制EX0=1;TR0=1;danjia=15;while(!wangfan);if(zhongdian=0)/终点按键TR0=0;EX0=0; /停止计数while(!zhongdian);if(qingling=0) /清零键return;while(!qingling); num2=(num1*danjia);if(sudu=0) /速度切换键delay(50);if(sudu=0)num1=num_sudu;while(!sudu);if(qiehuan=0)delay(50);if(qiehuan=0) qiehuan_a+;if(qiehuan_a>2)qiehuan_a=1;while(!qiehuan);void int1() interrupt 0/速度采集num1+;num3+;void time0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt0+;if(tt0=20)tt0=0;/timer+;miao1+;if(miao1=10)miao1=0;miao2+;if(miao2=6)miao2=0;fen1+;if(fen1=10)fen1=0;fen2+;if(fen2=6)fen2=0;shi1+;if(shi1=10)shi1=0;shi2+; void time1() interrupt 3TH1=(65536-2000)/256;TL1=(65536-2000)%256;tt+;tt1+;if(tt1=500) /定时1秒;tt1=0;num_sudu=num3;num3=0;if(tt=2)tt=0;/P2=!P2;num+;if(num=9)num=1;if(qiehuan_a=1)zhuanhuan(); /数据转换licheng();/*/if(qiehuan_a=2)/zhuanhuan_shijian();shijian();delay(10);void licheng()switch(num) /数码管显示case 1:P2=0x01;P0=tableLC1;break;case 2:P2=0x02;P0=tableLC2;break;case 3:P2=0x04;P0=tableLC3+0x80;break;case 4:P2=0x08;P0=tableLC4;break;case 5:P2=0x10;P0=tableJE1;break;case 6:P2=0x20;P0=tableJE2;break;case 7:P2=0x40;P0=tableJE3+0x80;break;case 8:P2=0x80;P0=tableJE4;break;void shijian()switch(num) /数码管显示case 1:P2=0x01;P0=tableshi2;break;case 2:P2=0x02;P0=tableshi1;break;case 3:P2=0x04;P0=0x40;break;case 4:P2=0x08;P0=tablefen2;break;case 5:P2=0x10;P0=tablefen1;break;case 6:P2=0x20;P0=0x40;break;case 7:P2=0x40;P0=tablemiao2;break;case 8:P2=0x80;P0=tablemiao1;break;29第 页
展开阅读全文