毕业设计论文基于51单片机的计程车计价器

上传人:仙*** 文档编号:34500896 上传时间:2021-10-21 格式:DOC 页数:34 大小:1.23MB
返回 下载 相关 举报
毕业设计论文基于51单片机的计程车计价器_第1页
第1页 / 共34页
毕业设计论文基于51单片机的计程车计价器_第2页
第2页 / 共34页
毕业设计论文基于51单片机的计程车计价器_第3页
第3页 / 共34页
点击查看更多>>
资源描述
1.绪论1.1课题背景及意义随着出租车行业的发展,出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。我们知道,只要乘坐的出租车启动,随着行驶里程的增加,就会看到司机旁边的计价器里程数字显示的读数从零逐渐增大,而当行驶到某一值时(如2KM)计费数字显示开始从起步价(如4元)增加。当乘客到站时,按下停止按键,计费数字显示总里程和总金额,它可以很直观的反映用户使用情况。出租车是城市交通的重要组成部分,行业健康和发展也获得越来越多的关注。汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的,因此,汽车计价器的研究也是十分有一个应用价值的。通过本次设计,可以增进对单片机的感性认识,加深对其理论方面的理解,掌握单片机的内部功能模块的应用,了解掌握单片机的软硬件设计过程、方法及实现。1.2 计价器的现状出租车计价器是出租车营运收费的专用智能仪表,目前市面所使用的计价器大都功能较少。随着人们生活水平的不断提高,出租车的使用频率也越来越高,出租车行业也以高质量的服务给人们带来了出行的享受。但是由于行业的特殊性,出租车行业总存在着买纠纷,困扰着行业的发展。给服务质量及管理带来一定影响。随着电子技术的发展,出租车计价器技术也在不断进步和提高。国内出租车计价器已经经历了4个阶段的发展。从传统的全部由机械元器件组成的机械式到半电子式,即用电子线路代替部分机械元器件的出租车计价器。而功能齐全的计价器大都采用双CPU结构,这就提高了计价器的生产成本。在考虑成本和使用的基础上,本设计介绍了一种以AT89C51单片机为核心的,具有计时、计价、性能可靠、电路简单、成本低等特点的多功能出租车计价器,能够很好的满足市场对出租车计价器的要求。本设计的目的就是通过对现有计价器的分析,解决计价器的问题,同时完成具有单价输出、单价调整、速度调整,路程输出等功能的新型计价器的硬件和软件设计。2 出租车计价系统的设计要求与设计方案2.1 出租车计价器概述计价器显示的营运金额是营运里程与价格。出租车计价器通过传感器与行驶车辆连接,但在此次课程设计中,因没有传感器,用频率发生器替代,由此通过记一秒的脉冲数算得速度从而得到里程。该课程设计的出租车计价器功能主要有具有数据的复位功能、数据输出功能、计价功能等。2.2 系统主要功能本课程设计所设计的出租车计价器的主要功能有:数据的复位、数据输出、里程输出及显示,通过起步价和每公里单价进行计价以及当车速低于限定值或停车时按等待时间计时,当等待时间累计超过一定时间后按时间计费等功能。其中,显示输出采用8段数码显示管。2.3 方案论证与比较方案一:采用数字电路控制采用传感器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价,但是考虑到这种电路过于简单,性能不够稳定,而且不能调节单价,也不能根据天气调节计费标准,电路不够实用。方案二:采用单片机控制利用单片机丰富的I/O端口,及其控制的灵活性,实现基本的里程计价功能和价格调节、时钟显示功能。通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能,而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以采用后一种方案更好些。3 系统硬件设计3.1 设计方案与硬件说明采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。设计采用AT89C51单片机为主控器,以A44E霍尔传感器测距(频率发生器替代),实现对出租车的基本的计价设计,并采用主电源和备用电源相互结合来实现在系统掉电的时候保存单价等信息,输出采用8段数码显示管。利用单片机丰富的I/O端口,及其控制的灵活性,实现基本的计价功能。其系统结构图如图3.1所示:按键控制 89C51单片机复位电路掉电保护时钟电路显示模块显示总里程、金额和速度图3.1 系统结构图本电路设计的计价器能实现基本的计价功能。AT89C51作为一个单片微型计算系统,灵活性高,其强大的控制处理功能和可扩展功能设计电路提供了很好的选择。3.2 硬件设计说明单片机是单片微型计算机的简称,单片机以其卓越的性能,得到广泛的应用,已经深入到各个领域。在这次设计中,我们用到P0口和P2口,P0口为8位三态I/O口,此口为地址总线及数据总线分时复用;P2口为8位准双向口,与地址总线高八位复用;P0口和P2口都有一定的驱动能力,P0口的驱动能力较强。 设计中,考虑到显示电路的负载不大,本设计直接采用单片机I/O口驱动显示电路。设计电路时,考虑到用里程(霍尔)传感器价格昂贵,且不便于试验检测,在设计中采用一个波形发生器来代替。模拟开关一端接在P3.4口,另一端接地,通过来回高低电平的变化,可以测得速度。通过在程序中设置的里程和金额的信息,在加上显示电路的设计,就可以在数码管上分别显示总金额和总里程。在显示方面,可以用液晶显示,也可以用数码管进行显示。由于在这次设计中只需要显示里程和金额信息,我们采用数码管进行显示。这样既节约了成本,又可以达到显示的目的。同时为了减少硬件的复杂度,我们采用了动态显示方式,选用了共阴极数码管。为了焊接方便,我们选用了集成在一起的数码管。我们还设计了控制按键,能够很好的对出租车计价器控制,如启动/停止按键,清零按键等。AT89C51单片机简介:AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4KB的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用 8位微处理器于单片芯片中,具有高性价比,其引脚配置如图3.2所示。图3.2 AT89C51引脚配置AT89C51芯片的40个引脚功能为:VCC 电源电压。GND 接地。RST 复位输入。当RST变为高电平并保持2个机器周期时,将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRTO位(地址8EH)可打开或关闭该功能。DISKRTO位缺省为RESET输出高电平打开状态。XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2 来自反向振荡放大器的输出。P0口 一组8位漏极开路型双向I/O口。也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口 一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,P1接收低8位地址。P1口部分端口引脚及功能如表3.1所示。表3.1 P1口特殊功能P1口引脚特殊功能P1.5MOSI(用于ISP编程)P1.6MOSI(用于ISP编程)P1.7SCK(用于ISP编程)P2口 一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容在整个访问期间不改变。Flash编程和程序校验期间,P2亦接收低8位地址。P3口 一个带内部上拉电阻的8位双向I/O口。P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写“1”时,它们被内部的上拉电阻把拉到高电并可作输入端口。作输入端口使用时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表3.2所示。P3口还接收一些用于Flash闪速存储器编程和程序校验期间的控制信号。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。表3.2 P3口特殊功能P3口引脚特殊功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)硬件系统设计说明: 按下计价按键时,显示起步价和起步里程范围,这些在程序中设置;当等于或超过两公里后,按计算总价的公式为:总价=起步价+单价*(总里程-起步里程)+1进行计价。本设计中,起步价为4元,起步里程为2公里,当然这些数据可以在程序中改写,以满足不同时期价格调整的需要。 3.3硬件电路组成硬件组成主要包括:显示电路、复位电路、掉电保护电路、时钟电路、按键电路和测速电路。本设计以 89S52 单片机为中心,利用波形发生器模拟代替霍尔传感器测距,实现对出租车计价统计,输出采用两个4位共阴7段数码管。本电路设计的计价器不但能实现基本的计价。通过单片机上的键盘上的按键来执行开始、暂停、复位等功能。步骤如下:首先,程序开始做一些必要的初始化工作,等待键盘输入。然后,启动键S1按下后单片机开始计数传感器传来的计数脉冲,显示电路显示路程和总费用。最后,当需要停止是可松开键S1对路程计数器进行停止。而且松开S1之后可以按下S2对显示电路进行清零,清零功能与复位功能的区别就是清零功能不会使单片机重新启动,会节约时间,并且当复位电路出现故障时,单片机依然能够正确重置。其整体电路图3.3所示:图3.3 计价器整体电路图3.3.1 显示电路多数的应用系统都要配输入和输出,外设LED显示器和LCD显示器,现在LCD已经成为了一种发展趋势,但为了节约成本,我们选用了LED显示器,见图3.5。图3.5 集成数码管在显示方面,我们选用了动态显示。使用动态显示,通过对数码管不断地快速扫描,使数码管看起来一直在闪烁。通过程序进行选段与选位。P2口为选位,P0口为选段,通过三个数组zxscode8,xscode8 与codetab协同作用,实现了对数码管的动态显示。静态显示虽然亮度较高,接口编程容易,但是每位的段码线分别与一个8位的锁存器输出相连。占用的I/O口线比较多,在显示位数较多的情况下,一般都采用动态显示方式。利用动态显示的方法,由于LED显示器的余辉和人眼的视觉暂留现象,只要每位显示的时间间隔足够短,就仍能感觉到所有的数码管都在显示。为了简化硬件,通常将所有位的段码线相应段并联在一起,由一个8位I/O口控制,在同一时刻,只让一位选通,如此循环,就可以使各位显示出将要显示的字符。LED数码有共阳和共阴两种,把这些LED发光二极管的正极接到一块(一般是拼成一个8字加一个小数点)而作为一个引脚,就叫共阳的,相反的,就叫共阴的,那么应用时这个脚就分别的接VCC和GND。再把多个这样的8字装在一起就成了多位的数码管了。在本设计仿真中使用的是4个两组组的共阴8段数码管,见图3.6。图3.6 LED数码管找公共共阴和公共共阳的方法:首先找个电源稳压器(3到5伏)和1个1K(几百欧的也行)的电阻,VCC串接1个电阻后和GND接在任意2个脚上,组合有很多,但总有一个LED会发光的,找到一个就够了,然后用GND不动,VCC(串电阻)逐个碰剩下的脚,如果有多个LED(一般是8个),则可以判断此管为共阴。共阴极数码管,阴极接地,当某个发光二极管的阳极为高电平时,发光二极管点亮,对应的段就显示。3.3.2复位电路单片机的复位是由外部的复位电路实现的,复位电路通常采用上电自动复位和按钮复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的。除了上电复位外还需要按键手动复位,见图3.7。图3.7 复位电路 按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST端经电阻与电源VCC接通而实现的。单片机的复位速度比外围I/O接口电路快,为能够保证系统可靠的复位,在初始化程序中应安排一定的复位延迟时间。3.3.3 掉电保护电路本设计采用两个电源对单片机进行掉电保护。一个为主电源,接5V电压经肖特基二极管接单片机VCC口,另一个为备用电源,用3个5号电池并联组合成4.5V电压。肖特基二极管的压降非常低,所以5V主电源能够满足对单片机的供电要求。当主电源失去过后,因为有备用电源4.5V的作用,满足单片机正常运行电压4.5V5.5V,单片机不会停止工作,实现了掉电保护功能。本设计采用掉电保护存储电路图如图3.8:图3.8 掉电存储电路3.3.4 时钟电路MCS-51单片机的各功能部件都是以时钟控制信号为基准,内部电路在时钟信号的控制下,严格地按时序执行指令进行工作,单片机本身如同一个复杂的同步时序电路,为了保证其各个部分同步工作,电路要在唯一的时钟信号控制下,严格地按照时序进行工作。其实只需在时钟引脚连接上外围的定时控制元件,就可以构成一个稳定的自激振荡器。为更好地保证振荡器稳定可靠地工作,谐振器和电容应尽可能安装得与单片机芯片靠近。单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容(电容和一般取30pF)。这样就构成一个稳定的自激振荡器。本设计中使用的振荡电路,由12MHZ晶体振荡器和两个约30PF的电容组成,在XTAL1和XTAL2两端跨接晶体,电容的大小不会影响振荡频率的高低。在整个系统中为系统各个部分提供基准频率,以防因其工作频率不稳定而造成相关设备的工作频率不稳定,晶振可以在电路中产生振荡电流,发出时钟信号。见图3.9。图3.9 时钟电路3.3.5 按键电路按键控制电路中,单片机的P1.0管脚接启动/停止按键,通过软件编程,当按下按键计数器开始工作,开始计价;当弹起按键时,计数器停止工作,停止计价,启动/停止按键带自锁功能。按下启动按键,开关处于导通状态,这时给P1.0送低电平信号,这时TR0=1,计数器开始工作,调用计价子程序开始计价。清零按键接单片机的P1.3管脚,按下清零按键,P1.3为低电平,调用清零子程序,用于将显示数据清零,在程序中给各位赋0代码(0x3f),以达到清零的目的,方便下次计价。另外为功能键,控制价格调整,这个按键是在没有按下启动/停止按键时有作用,计价过程中无效,按键电路如图3.10所示。P1.0接口接按键1,为启动按钮,P1.3接按键2,位清零按钮。当按键1按下后,定时器开中断,计价器开始数从int0口输入的脉冲,从而计算成速度,得到里程与价格。当按键1松开,按键2按下时,调用清零子程序,对数码管每一位清零,并且对各个与数码管显示有关的整型数据清零。图3.10 按键电路3.3.6 测速电路本设计采用外部中断int0口和定时器0的协同工作实现了测速。使定时器0工作在方式2,对定时器0装入初值计时,计时时间为0.25ms,通过4000次定时器0的中断计为1s。此时,数通过int0的中断数,即可得到,一秒的脉冲数,则能够算出车轮的速度。然后通过计价子程序以及显示程序显示在了数码管上,测速电路见图3.11。计价方式1,通过数得每秒通过的INT0脉冲获得速度,然后通过计价方式1的公式算的里程,最终用里程得到价格,再通过显示子程序显示在数码管上。计价方式2,当速度小于4M/S大于0M/S时,每当定时器计满4000次中断时,整型数据time_sum+1,当time_sum=10的时候,储存价格的整型数据timemoney+1,然后通过计价子程序与显示子程序算出价格,实现了当速度小于一定值时,计价器按时间计价。计价方式3,当速度等于0M/S时,当time_sum=10的时候,整型数据wait_sum+1,当wait_sum=3时,即计程车停车等待了30S,储存价格的整型数据waitmoney+1,然后通过计价子程序与显示程序算出价格,实现了当停车等待超过一定时间时,计价器按时间计价。具体计算方法为:时,,;,,;,图3.11测速电路4 系统软件设计4.1 软件总体设计51单片机的程序设计语言主要有两种:一是汇编程序设计;二是C语言编程设计,两种程序设计语言都有各自的优点。用汇编语言编写和高级语言(C语言)比较起来节省空间,这样对于存储空间仅4Kb的芯片来说是极之有利的,51单片机能更高速的运行。C语言编写的程序,虽然不象汇编那样速度快、但程序简单易行、并且需要较小的存储空间。C语言作为一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。此外,C语言程序还具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的主流。本设计就是采用C语言编写的,由于采用模块化操作,使得程序在修改,执行的时候显得方便易行。4.2 系统程序设计本设计中,软件设计采用模块化操作,利用各个模块之间的相互联系,在设计中采用主程序调用各个子程序的方法,使程序通俗易懂,我们设计了整体程序流程图:在main函数编写开始,要进行初始化,包括对系统初始化和对存储器初始化,要对硬件设备进行初始化,并使硬件处于就绪状态。通过判断是否计费,清零等状态,来分别调用不同的子程序,使程序在设计之前,就有了很强的逻辑关系。本程序的子程序包括显示子程序,计价子程序,延时子程序。并且,通过调用外部中断和定时器0中断实现了对计程车计价器基本功能的实现。在主程序模块中,需要完成对各参量和接口的初始化、出租车起价和单价的初始化等工作。另外,在主程序模块中还需要设置修改单价的程序。当汽车运行起来时,就启动计价,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。若已超过,则根据里程值、每公里的单价数和起步价数来计算出当前的总金额,并将结果输出在显示屏上。中途等待时,产生计时,当时间超过等待设定值时,开始进行计价,并把等待价格加到总金额里。这些对应于硬件就是通过按下各个控制开关,来分别进行不同的动作,最后数码管根据输入的信息,来显示不同的数据信息,这就达到了软件控制硬件,同时输入信息控制输出信息的目的。整个程序的流程图如图4.1所示:初始化开始显示是否开始计费速度44速度0速度=0计价程序1计价程序2计价程序3判断是否停止键按下结果显示清零单价复位YYN图4.1 程序框图5 系统调试系统调试包括软件调试和硬件调试。硬件调试的任务是排除所焊接电路故障。软件调试是利用开发工具进行在线仿真调试。调试的一般过程如图5.1所示:系统调试硬件调试软件调试系统联调现场调试调试结束图5.1 系统调试流程图系统调试的一般过程是上电运行后观察其运行状态,数码管是否点亮等。软件调试先是各个模块、各个子程序分别调试,最后进行系统联机调试。5.1软件调试5.1.1 编程工具C51语言8051单片机的应用程序设计,使用C51语言进行程序设计虽然相对于汇编语言代码效率有所下降,但可以方便地实现程序设计模块化,代码结构清晰、可读性强,易于维护、更新和移植,适合较大规模的单片机程序设计。近年来,随着C51语言的编译器性能的不断提高,在绝大多数应用环境下,C51程序的执行效率已经非常接近汇编语言,因此,使用C51进行单片机程序设计已经成为单片机程序设计的主流选择之一。5.1.2 程序调试软件KEIL本设计的软件都是在Keil u Vision 7.5上进行编写,编译,调试以及运行操作。5.1.3 系统仿真软件调试PROTEUS1.打开Proteus软件。2.选择file菜单下的 open design选项,找到所需的元器件,元器件上单击右键选中,再单击左键对其进行命名和赋值,接着在编辑器左边的一栏中,找出并绘制设计所要的各种元器件,按照电路图连接后并保存。3.将用keil编译产生的hex文件下载到单片机中:双击51单片机,在对话框中把保存过的hex文件打开,再单击确定。 4.单击左下角运行按钮,进行软件仿真调试,直到出现正确的结果。图5.2为软件的仿真窗口图:图5.2 Proteus仿真图5.2系统仿真下图是通过在Keil C中编译通过,并生成Hex文件,在PROTEUS中的单片机里拷入程序,正常运行的情况下,数码管的第一位和第二位显示里程数,第三位至第五位显示价格,第六位至第八位显示速度。当按键1按下之后,单片机开中断,数码管才能正常显示里程数,价格,以及速度。当按键1松开,按键2按下的时候,单片机所连接的两个7段四位共阴极数码管的每一位都会被清零。松开按键2,再按下按键1,单片机又会开中断,开始正常工作。系统仿真图如图5.3所示:图5.3 仿真结果图中两个按键的作用KEY1:按下时系统开始计价,抬起后系统计价暂停;KEY2:按下时,计价器显示清零,单价恢复到初始状态;5.3 硬件调试5.3.1测速电路部分按下开始键,输入频率为100HZ,速度为200,起始价格为4元,里程数在10S过后为1公里,见图5.4图5.4 起始时改变输入脉冲,速度变为198m/s,里程为3公里时,价格为5元,见图5.5图5.5 改变脉冲改变输入频率使速度变为2,经过20S等待,价格变为14元,采用计价方式2,见图5.6图5.6 计价方式2的实现撤去输入脉冲,速度变为0,经过90秒,价格变为44元,采用计价方式3,见图5.7图5.7 计价方式3的实现5.3.2 掉电保护部分采用双电源供电,此时两个电源都在供电,单片机正常运行,见图5.8图5.8 两端供电撤去主电源,只剩下备用电源,单片机依然可以正常工作,实现掉电保护功能,见图5.9图5.9 备用电源供电5.3.3 复位电路部分单片机正常工作,按下复位键后,单片机复位成功,见图5.9和图5.10图5.9 复位前图5.10 复位后5.3.4清零电路部分单片机正常工作时,按下清零键,数码管能够正确清零,实现清零功能,见图5.11和图5.125.11 清零前图5.12 清零后6 结论在本次设计中,我们采用AT89C51芯片为核心器件,设计出了简单的出租车计价器,能够实现显示总金额和总里程,按键控制清零、调价。选题后,我便开始复习单片机方面的知识,也查阅、搜索了很多相关资料,进行总体设计与具体设计,同时也学习仿真软件Protues和编程软件KeilC。由于以前都采用汇编语言实现编程,对用C语言来实现单片机的编程不太习惯,花费了一些时间来熟悉C语言的编程。在设计开始,要形成流程图,它可以使设计有一定的逻辑性与严密性,使得设计思路明确。采用模块化的设计思想很重要,它方便编写、修改与调试,另外加上必要的注释,便于交流与理解。这次应用系统设计完成后,体会颇多,在学与做的过程中,取长补短,不断学习新的知识,吸取经验,达到进步的目的。通过自身的努力以及相关图书资料的帮助,逐渐熟悉了KEIL、PROTEUS和C语言等软件的使用以及硬件检测过程中的一些小技巧。本次设计我学习到不少单片机的知识,但由于自己的理论知识水平有限,实践知识和设计经验不足,在设计过程中难免存在一些问题。恳请各位老师批评指正,以使我在以后的学习和实践中加以改进和提高。7 总结与体会 经过这些天有关于出租车计价器的课程设计,使我对单片机的应用有了更深的了解。在课程设计的过程中,还是碰到了许多的问题。比如,对于数码管动态扫描显示和键盘的延时防抖的综合编程不能较好地解决;对于代码的前后顺序及调用掌握得还不够好;对于一些相关的应用软件没能熟练掌握。通过这几天晚上的苦想和反复调试,以及参考网上的程序,最终还是把问题解决了。通过这次应用系统设计,我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,也充分体会到了自己设计东西的乐趣、学会查阅资料和对别人的东西融会变通的重要性,也明白了很多知识光靠趴在书本上学是学不到其中的精髓的,必须亲自去试着实践,亲自去经历才能对它们真正的掌握,凡事都要自己去动下手,去实践一下,遇到困难,永远不要沮丧气馁。在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的摸索和实践来提高其他方面的知识。通过本次课程设计,又使我学到了许多书本上无法学到的知识,也使也深该体会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。8 参考文献1胡泉,谢芳.C语言程序设计M.华中科技大学出版社,2009:17-18.2戴佳.51单片机C语言应用程序设计实例精讲M.电子工业出版社,2007:104-105.3马忠梅.单片机的C语言应用程序设计(第三版)M.北京航空航天大学出版社,2004:30-32.4潘永雄.新编单片机原理与应用M.西安电子科技大学出版社,2010:160-163.5肖玲妮,袁增贵.Protel 99 SE印刷电路板设计教程M.清华大学出版社,2003:26-28.6何立民.单片机应用系统设计M.北京:北京航空航天大学出版社,2000:13-14.7陈明荧.8051单片机课程设计实训教材M.北京:清华大学出版社,2004:303-304.8王卫平.电子工艺技术基础M.电子工业出版社,2004:99-100.9张靖武.单片机原理应用与PROTEUS仿真M.电子工业出版社,2009:130-132.10杨恢先,黄辉先.单片机原理及应用M.长沙:国防科技大学出版社,2003:92-93.11何小艇.电子系统设计J.浙江:浙江大学出版社,2006:89-90.12华成英.模拟电子技术基础M.北京:高等教育出版社,2006202-203附录1 系统原理图附录2 元件清单元件清单开关3个肖特基二级管1个10uf电容1个排阻A103G 1个30pf电容2个备用电源1个12MHZ晶振1个10K电阻1个AT89C51单片机1个导线若干附录3 程序#include #include #include #define uchar unsigned char#define uint unsigned intint zxscode8=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;int xscode8=0x00,0x01,0x03,0x04,0x05,0x06,0x07,0x08;int codetab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;int i,j,flag;int time_count=0;int count=0;int sum=0;int time_sum=0;int timemoney=0;int wait_time=0;int waitmoney=0;int v=0;int kk=0;int jkk=0;int jflag=0;int vflag=0;int kflag=0;int kilo=0;int dj=1; sbit key1=P10;sbit key4=P13;void delay() ;void delay1 (xms) uint i,j; for(i=xms;i0;i-) for(j=110;j0;j-); void xianshi() for(flag=0;flag=4) if(kk2000&kk35000&kk0&v4) jkk=timemoney*1+4; vflag=2*sum/100; jflag=jkk/100; xscode2=codetabvflag; xscode5=codetabjflag; vflag=2*sum/10%10;kflag=kk/1000/10; jflag=jkk/10%10; xscode1=codetabvflag; xscode4=codetabjflag;xscode7=codetabkflag; vflag=2*sum%10; kflag=kk/1000%10; jflag=jkk%10; xscode0=codetabvflag; xscode3=codetabjflag;xscode6=codetabkflag; if(v=0)jkk=waitmoney*10+4;vflag=2*sum/100;jflag=jkk/100;xscode2=codetabvflag;xscode5=codetabjflag;vflag=2*sum/10%10;kflag=kk/1000/10;jflag=jkk/10%10;xscode1=codetabvflag;xscode4=codetabjflag;xscode7=codetabkflag;vflag=2*sum%10;kflag=kk/1000%10;jflag=jkk%10;xscode0=codetabvflag;xscode3=codetabjflag;xscode6=codetabkflag; void qingling() for(i=0;i=7;i+) xscodei=codetab0; void main() TMOD=0x02; TH0=0x06; TL0=0x06; IT0=1; EA=1; ET0=1; EX0=1; TR0=1; kilo=0; qingling();aa: if(key1=0) TR0=1;kk=kilo;v=sum*2;jijia(); if(key1=1)TR0=0; if(key4=0) qingling(); kilo=0; jkk=kilo+4; timemoney=0; waitmoney=0; xianshi();goto aa;void exter0() interrupt 0 count+; void timer0() interrupt 1 time_count+; if(time_count=4000) time_count=0; sum=count; kilo=sum*2+kilo; count=0; time_sum+; if(time_sum=10) timemoney+; time_sum=0; wait_time+; if(wait_time=3) waitmoney+; wait_time=0; 附录4 实物图
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 销售管理


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

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


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