600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 网约车收费器设计(lunwen+任务书+翻译及原文+答辩PPT+程序+原理图)

网约车收费器设计(lunwen+任务书+翻译及原文+答辩PPT+程序+原理图)

时间:2018-12-04 08:43:17

相关推荐

网约车收费器设计(lunwen+任务书+翻译及原文+答辩PPT+程序+原理图)

目 录

第1章 概 述 1

1.1 设计目的 1

1.2 课题背景 1

1.3 课题意义 2

1.4 国内外研究现状 2

1.5 主要内容 3

第2章 方案分析 4

2.1 方案论证与比较 4

2.2 硬件设计说明 5

2.3 系统的工作原理 6

2.4 本章小结 6

第3章 硬件系统设计 7

3.1 单片机的简介 7

3.2 时钟电路 9

3.3 复位电路 9

3.4 液晶显示电路 10

3.5 掉电存储单元设计 12

3.6 按键设计 13

3.7 空车牌模块 14

3.8 电机模块 15

3.9 红外传感器电路 15

3.10 本章小结 16

第4章 软件设计 17

4.1 软件设计方案选择 17

4.2 系统程序设计 17

4.3 主程序模块 17

4.4 掉电保护模块 19

4.6 显示模块 21

4.8 几个关键模块设计 23

4.9本章小结 25

第5章 改进方案、仿真和调试 26

5.1 电路元件检测 26

5.2 软件仿真步骤 26

5.3 硬件检测 27

5.4 系统联调 28

5.5 改进方案 28

5.6 实物图片 29

5.7本章小结 30

结 论 31

参考文献 32

致 谢 33

附录1 34

附录2 44

附录3 45

1.5 主要内容

本设计介绍了一种以AT89C52单片机为核心的,具有计时、计价、性能可靠、电路简单、成本低等特点的多功能网约车收费器,能够很好的满足市场对网约车收费器的要求。本设计的目的就是通过对现有收费器的分析,从而解决收费器的现存问题,同时完成具有单价输出、单价调整、路程输出等功能的新型收费器的硬件及软件设计。

本文结构如下:

第一章主要介绍了课题的背景、意义,国内外现状和本文主要研究内容。

第二章主要介绍了课题的方案选择、工作原理以及实物照片。

第三章主要介绍了系统各个模块的硬件设计原理。

第四章主要介绍了系统各个模块软件的设计原理。

第五章主要展示了系统仿真、实物制作过程以及还有可以改进的地方。

第2章 方案分析

2.1 方案论证与比较

通过需求分析可以初步对系统的设计方案进行三种构架:

1、GPS 全球定位系统,两点一线,计算距离方案。

2、基于DSP的油箱计量器系统,通过使用油量计算距离。

3、基于单片机的红外传感器模拟系统。

4、模拟电路和数字电路设计的收费器整体电路设计系统。

5、基于MAX+PLUSII的PLD收费器系统。

方案一:采用GPS模块将起点和目的地的坐标采集到单片机中,通过运算,计算出两点的直线距离,再根据网约车地区内单价以计算本次行驶金额。

方案二:本方案是从加油站加油时油枪喷油计费的思路来通过路程消耗的油量来计量行驶金额,通过计算油箱内汽油的消耗量,根据网约车的百公里油耗换算成公里数,然后在折算出本次行驶金额。

方案三:采用模拟电路和数字电路设计的收费器整体电路的规模较大,用到的器件多,造成故障率高,难调试。采用数字电路控制,采用传感器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价。

方案四:采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。设计采用AT89C52单片机为主控器,以WYC H105光电传感器配合直流电机加旋转叶片模拟测距,实现对网约车的基本的计价设计,并采用AT24C02实现在系统掉电的时候保存单价等信息,输出采用LCD1602显示模块。利用单片机丰富的I/O端口,及其控制的灵活性,实现基本的计价功能。

方案五:利用可编程逻辑器件,以及相应编程软件制作网约车收费器,可编程逻辑器件由以下几部分组成:一个二维的逻辑块阵列,构成了PLD器件的逻辑组成核心;输入/输出块,连接逻辑块的互连资源;连线资源,由各种长度的连线线段组成,其中也有一些可编程的连接开关,它们用于逻辑块之间、逻辑块与输入/输出块之间的连接。

方案一由于只是计算直线距离,对于城市路段来说,网约车司机往往不能直线到达目的地,没有考虑到司机师傅的收益,所以排除方案一;方案二考虑到油箱吸出油后还在油管处还多出一段汽油。多算了这部分汽油,对乘客来说是不公平的,所以排除了方案二。方案三考虑到这种电路设计过于复杂,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现,性能不够稳定,电路也不实用。方案四采用了单片机作为主要控制元器件,单片机具有小巧、功能强、开发速度快、节能、电池下也好工作、可靠性高,成本极低等优势、外延电路可以随意添加;方案五直接利用PLD可编程逻辑器件进行控制,但是由于本设计模式很多,需要中断较多,所以不选择方案五。

通过比较以上五种方案,我们采用方案四实现网约车收费器的功能。本电路设计的收费器能实现基本的计价功能,单片机计算总价的公式为:总价=起步价+单价*(总里程-起步里程)。AT89C52作为一个单片微型计算系统,灵活性高,其强大的控制处理功能和可扩展功能设计电路提供了很好的选择。

2.2 硬件设计说明

单片机是单片微型计算机的简称,单片机以其卓越的性能,得到广泛的应用,已经深入到各个领域。P0口为8位三态I/O口,此口为地址总线及数据总线分时复用;P2口为8位准双向口,与地址总线高八位复用;P0口和P2口都有一定的驱动能力,P0口的驱动能力较强。

设计电路时,考虑到用里程传感器价格昂贵,且不便于试验检测,在设计中采用一个光电开关来代替。光电开关一端接单片机12管脚,另一端接地,通过直流电机带动叶片改变光电开关之间的光通量,测量出叶片转过多少圈,模拟车轮转动,经过一定圈数(本实验用200转代替一公里),通过在程序中设置的里程和金额的信息,就可以在液晶显示屏上分别显示总金额和总里程。试验中为了提供掉电保护,还应用了AT24C02芯片。

在显示方面,可以用液晶显示,也可以用数码管进行显示。由于在这次设计中显示里程和金额信息,我们采用液晶屏进行显示。这样简化了程序,也可以达到简化电路的目的。此外,用LCD1602显示模块显示直观,操作简单。相比数码管的应用要方便许多。

我们还设计了控制按键,能够很好的对网约车收费器控制,如空车牌,等待模式按键,复位按键等。

设计源程序:#include <reg52.h>#include "AT24C02.h"#include "LCD1602.h"sbit LED = P1^2;sbit MOTOR= P1^7;sbit IsBoby = P1^3;sbit IsGo= P1^4;sbit IsDay= P1^1;unsigned int count;unsigned int kmCount;unsigned char TimeOneCount;unsigned char CarStopTime;unsigned char DayAndNig;unsigned char FLAG = 3;void InitExterZero(void){EA=1;//开总中断EX0=0;//开外部中断0IT0 = 1;}void Init_Time(void){TMOD = 0x11;//设置定时器模式TH1 = (65536-50000)/256;//装初值TL1 = (65536-50000)%256;TR1 = 0;//开定时器ET1 = 1; //定时器中断EA = 1;//开总中断}void main(void){Init_LCD();Init_Time();init_eeprom();InitExterZero();DayAndNig = read_add(0x01);delay_LCD(5); kmCount= read_add(0x02)*256;delay_LCD(5);kmCount += read_add(0x03);delay_LCD(5);CarStopTime = read_add(0x04);delay_LCD(5);while(1){if(IsBoby == 0){ LED = 0;TR1 = 0;EX0 =1;MOTOR = 0;FLAG = 1;DisplaySomebobyOpen();}if(FLAG == 1){ DisplaySomebobyOpenData(DayAndNig,kmCount,CarStopTime);write_add(0x01,DayAndNig); delay_LCD(5);write_add(0x02,kmCount/256); delay_LCD(5);write_add(0x03,kmCount%256); delay_LCD(5);write_add(0x04,CarStopTime); delay_LCD(5);}if(FLAG == 1 && IsGo == 0){TR1 = 1;EX0 =0;MOTOR = 1;FLAG = 2;DisplaySomebobyClose();}if(FLAG ==2){if(kmCount < 4)CarStopTime = 0;DisplaySomebobyCloseData(DayAndNig,kmCount,CarStopTime);write_add(0x01,DayAndNig); delay_LCD(5);write_add(0x02,kmCount/256);delay_LCD(5);write_add(0x03,kmCount%256);delay_LCD(5);write_add(0x04,CarStopTime); delay_LCD(5);}if(IsDay == 0){EX0 =0;TR1 = 0;FLAG =3;MOTOR = 1;LED = 1;DayAndNig =0;kmCount = 0;CarStopTime = 0;Init_LCD();write_add(0x01,0); delay_LCD(5);write_add(0x02,0); delay_LCD(5);write_add(0x03,0); delay_LCD(5);write_add(0x04,0); delay_LCD(5);}if(FLAG ==3 && IsGo == 0){while(IsGo == 0);if(DayAndNig == 0){write_com(0x80+0x40+0x01);write_date('N');write_date('i');write_date('g');DayAndNig = 1;}else{write_com(0x80+0x40+0x01);write_date('D');write_date('a');write_date('y');DayAndNig = 0;}}}}void ExterZero() interrupt 0{count++;if(count > 200){count = 0;kmCount ++;}}void TimeOne() interrupt 3 {TH1=(65536-50000)/256;TL1=(65536-50000)%256;//重填TH0,TL0TimeOneCount ++;if(TimeOneCount >200){TimeOneCount = 0;CarStopTime++;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。