精品出租车计价器毕业论文.docx

上传人:b****9 文档编号:25728676 上传时间:2023-06-12 格式:DOCX 页数:20 大小:168.41KB
下载 相关 举报
精品出租车计价器毕业论文.docx_第1页
第1页 / 共20页
精品出租车计价器毕业论文.docx_第2页
第2页 / 共20页
精品出租车计价器毕业论文.docx_第3页
第3页 / 共20页
精品出租车计价器毕业论文.docx_第4页
第4页 / 共20页
精品出租车计价器毕业论文.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

精品出租车计价器毕业论文.docx

《精品出租车计价器毕业论文.docx》由会员分享,可在线阅读,更多相关《精品出租车计价器毕业论文.docx(20页珍藏版)》请在冰豆网上搜索。

精品出租车计价器毕业论文.docx

精品出租车计价器毕业论文

大学

《单片机应用与仿真训练》设计报告

姓名:

学号:

3

姓名:

学号:

专业班级:

自动化09-7班

指导老师:

所在学院:

电气学院

2012年7月4日

摘要

本设计基于AT89SC51单片机,采用霍尔传感器采集轮胎转数的信息,使用外部中断0将霍尔传感器采集的信息输入到单片机,实现对于出租车行驶里程的计算;对于中途等待以及红绿灯等待,使用定时器计时,并将时间转化为里程数以计费;输出设备采用数码管,本设计采用的是两个4位一体的共阴极数码管,输出里程数和费用;此外,本设计还设计了状态指示灯,用以指示计价器的工作状态和显示状态。

出租车计价器是出租车行业计费系统的核心,是出租车行业发展的重要标志,性能良好的计价器对于乘客和出租车行业都是必需的。

关键词:

计价器、单片机、霍尔传感器

目录

1概述4

1.1出租车计价器概述4

1.2单片机的概述4

2总体方案设计6

2.1设计任务要求6

2.1.1设计任务6

2.1.2设计要求6

2.2设计的主要功能6

2.3方案的选取7

2.3.1硬件设计方案7

2.3.2软件设计方案7

3硬件设计9

3.1AT89S52单片机及最小系统9

3.2测距单元11

3.3按键单元和状态显示单元14

3.4数码显示单元15

4软件设计17

4.1系统主程序17

4.2数据处理子程序18

4.3等待时间计时子程序19

4.4键盘扫描子程序20

5Proteus软件仿真21

6课程设计过程中遇到的问题22

7课程设计体会23

参考文献23

附1、原程序代码24

附2、系统原理图30

1概述

1.1出租车计价器概述

出租汽车已经成为我国城市公共交通的重要组成部分和现代化城市必备的基础设施,成为人们工作、生活中不可缺少的交通工具。

出租汽车服务行业和出租汽车计价器紧密相关,因为出租汽车必须安装出租汽车计价器才能投入营运。

出租汽车计价器是一种能根据乘客乘坐汽车行驶距离和等候时间的多少进行计价,并直接显示车费值的计量器具。

计价器是出租汽车的经营者和乘坐出租汽车的消费者之间用于公平贸易结算的工具,因而计价器计价准确与否,直接关系到经营者和消费者的经济利益。

依据国家有关法律、法规,出租汽车计价器是列入国家首批强制检定的工作计量器具之一,也是近年来国家质量技术监督部门强化管理的六类重点计量器具之一。

出租车行业在我国是八十年代初兴起的一项新兴行业,随着我国国民经济的高速发展,出租汽车已成为城市公共交通的重要组成部分。

多年来国内普遍使用的计价器只具备单一的计量功能。

目前全世界的计价器中有90%为台湾所生产。

现今我国生产计价器的企业有上百家,主要是集中在北京,上海,沈阳和广州等地。

本次设计的目的在于通过的日常最常见的计价器的实际的设计来进一步理解和掌握单片机的功能特点,并通过实践应用,锻炼自己的动手能力、培养与人合作的团队意识。

1.2单片机的概述

计算机系统已明显地朝巨型化、单片化、网络化三个方向发展。

巨型化发展的目的在于不断提高计算机的运算速度和处理能力,以解决复杂系统计算和高速数据处理,比如系统仿真和模拟、实时运算和处理。

单片化是把计算机系统尽可能集成在一块半导体芯片上,其目的在于计算机微型化和提高系统的可靠性,这种单片计算简称单片机。

单片机的内部硬件结构和指令系统主要是针对自动控制应用而设计的所以单片机又称微控制器MCU(MicroControllerUnit)。

用它可以很容易地将计算机嵌入到各种仪器和现场控制设备中,因此单片机又叫做嵌入式微控制器(EmbeddedMCU)。

单片机自20世纪70年代问世以来,以其鲜明的特点得到迅猛发展,已广泛应用于家用电器、智能玩具、智能仪器仪表、工业控制、航空航天等领域,经过30多年的发展,性能不断提高,品种不断丰富,已经形成自动控制的一支中坚力量。

据统计,我国的单片机年容量已达1~3亿片,且每年以大约16%的速度增长,但相对于国际市场我国的占有率还不到1%。

这说明单片机应用在我国有着广阔的前景。

对于从事自动控制的技术人员来讲,掌握单片机原理及其应用已经成为必不可少的学习任务。

2总体方案设计

本系统的硬件设计主要包括单片机AT89S51、数据显示部件、模拟行驶路程单元、及计价单元的设计。

在硬件设计过程中,充分利用各部件的功能,实现多功能的出租车计价器设计。

2.1设计任务要求

2.1.1设计任务

设计一款基于AT89S52单片机的出租车数字计价器,通过对传感器的检测,对数值进行处理和显示。

2.1.2设计要求

1、能显示里程,单位为公里,最后一位为小数位。

2、能显示金额数,单位为元,最后一位为小数位。

3、可设定单程价格和往返价格,单程价格为2元/公里,往返价格为1.5元/公里。

4、车速<3公里/小时的时间累积为总等待时间,每5分钟等待时间相当于里程数增加1公里。

5、起步公里数为3公里,价格为5元,若实际距离大于3公里,按规则3计算价格。

6、按暂停键,计价器可暂停计价,按查询键,可显示总等待时间。

2.2设计的主要功能

本设计所设计的出租车数字计价器的主要功能有:

金额输出、路程输出、数据复位、计时计价等。

输出采用2个4位一体的8段共阴数码管,车辆行走时前4位显示路程,后4位显示金额。

车辆候车时,前4位显示等待时间,后4位显示等待金额。

2.3方案的选取

本设计是由软件设计和硬件设计两部分组成的。

软件设计要进行程序的编写和软件仿真;硬件设计要设计电路、硬件仿真和制作电路板。

2.3.1硬件设计方案

本系统的硬件设计主要包括单片机AT89S52、数据显示部件、U18霍尔传感器电路、里程计算及计价单元的设计。

在硬件设计过程中,充分利用各部件的功能,实现多功能的出租车计价器设计。

计价器的单片机系统框图如图1所示。

它由以下几个部件组成:

霍尔传感器单元、AT89S52单片机、金额显示、里程显示、状态指示单元。

利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程和价格的计算及显示功能。

图1计价器系统框图

2.3.2软件设计方案

本设计程序的采取C语言进行编写,使用KeiluVision4编译和Proteus7.4a仿真软件进行仿真调试。

其中的里程计算和费用计算方案如下。

1、里程计算

(1)霍尔传感器对车轮进行信号检测,产生并输出脉冲信号到单片机;

(2)单片机对传感器输出的脉冲信号进行计数,并进行km计算:

每一个信号代表轮胎旋转一周,设轮胎的周长为1.67m;每100m产生的信号数为60,里程显示为N/60×0.1(km),速度<5公里时将等待时间折算为公里数进行计费,等待时间30s为0.1km。

历程为两者之和。

2、费用计算

(1)出租车的起步费为5元,并且3km内不需额外计价;

(2)出租车行驶3km后,单程2元/km,双程1.5元/km。

(3)等待收费的标准为5分钟算一公里;

(4)暂停时计价器暂停计价,暂停费用的计算。

3硬件设计

本设计的硬件设计包括单片机AT89S52单元、测距单元、显示单元(数码管显示金额、等待时间和里程,指示灯对单双程切换指示、等待计时指示)、按键单元和时钟单元。

3.1AT89S52单片机及最小系统

1、AT89S52单片机

AT89S52具有如下特点:

40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

P0口:

1、外部扩展存储器时,当作数据/地址总线。

2、不扩展时,可做一般的I/O使用,内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。

P1口:

只做I/O口使用:

其内部有上拉电阻。

P2口:

1、扩展外部存储器时,当作地址总线使用。

2、做一般I/O口使用,其内部有上拉电阻

P3口:

1、作为I/O使用外(其内部有上拉电阻)

2、特殊功能口,由特殊寄存器来设置

图2AT89S52引脚图图3AT89S52封装图

设计中用到的单片机各管脚:

设计中用到的单片机各个管脚功能以及与其他模块连接介绍如下:

VCC:

接+5V电源。

VSS:

接地。

时钟引脚:

XTAL1和XTAL2两端接晶振和30PF的电容,构成时钟电路,它可以使单片机稳定可靠的运行。

RST:

复位信号输入端,高电平有效。

当在此引脚加两个机器周期的高电平时,就可以完成复位操作。

P1.0:

接清零键。

P1.1:

接切换键,表示等待时间和里程显示切换。

P1.2:

接单程和往返计费切换键

P1.3:

接暂停键

P1.4:

接堵车指示灯

P1.5:

接查询指示灯

P1.6:

接往返计费指示灯

P1.7:

接暂停指示灯

P3.0:

接查询/确认键

P0口接数码管段选端,P2口接数码管位选端

P3.2:

接霍尔传感器的输出口

2、单片机最小系统

复位电路和晶振电路是AT89S52工作所需的最简外围电路。

单片机最小系统电路图如图4所示。

 

图4单片机最小系统

AT89S52的复位端是一个史密特触发输入,高电平有效。

RST端若由低电平上升到高电平并持续2个周期,系统将实现一次复位操作。

在复位电路中,按一下复位开关就使在RST端出现一段时间的高电平,外接12M晶振和两个30pF电容组成系统的内部时钟电路。

3.2测距单元

本次设计我们选取了霍尔传感器来进行里程测量。

霍尔器件是一种磁传感器。

用它们可以检测磁场及其变化,可在各种与磁场有关的场合中使用。

霍尔器件以霍尔效应为其工作基础。

霍尔器件具有许多优点,它们的结构牢固,体积小,重量轻,寿命长,安装方便,功耗小,频率高,耐震动,不怕灰尘、油污、水汽及盐雾等的污染或腐蚀。

霍尔器件分为:

霍尔元件和霍尔集成电路两大类,前者是一个简单的霍尔片,使用时常常需要将获得的霍尔电压进行放大。

后者将霍尔片和它的信号处理电路集成在同一个芯片上。

本次设计选取了霍尔集成电路来测量里程。

里程测量是通过将霍尔传感器的集成电路安装在车轮上方的铁板上,将磁铁安装在车轮上,旋转的车轮将磁铁对准集成电路时,霍尔传感器会输出一个脉冲信号,送到单片机,经过单片机的计算处理,将行驶的里程送到显示单元并显示出来。

其原理示意图如下:

图5传感器测距示意图

U18是一种利用霍尔效应做成的半导体集成电路器件,它被设计在交变磁场中运行,特别是能在低电源电压和长时间运行温度范围可达到125℃。

这种霍尔IC可用作各种类型的传感器(速度传感器、位移传感器、转速传感器等等),接触开关以及相类似的应用场合。

其工作电压比较宽(2.5~20V),可运行在较大的温度范围内(-20℃~125℃),其输出的信号符合TTL电平标准,可以直接接到单片机的IO端口上,而且其最高检测频率可达到1MHZ。

霍尔传感器的特性如图6所示,其中BOP为工作点“开”的磁感应强度,BRP为释放点“关”的磁感应强度。

当外加的磁感应强度超过动作点BOP时,传感器输出低电平,当磁感应强度降到动作点BOP以下时,传感器输出电平不变,一直要降到释放点BRP时,传感器才由低电平跃变为高电平。

BOP与BRP之间的滞后使开关动作更为可靠。

U18集成霍耳开关由稳压器A、霍耳电势发生器(即硅霍耳片)B、差分放大器C、施密特触发器D和OC门输出E五个基本部分组成。

在输入端输入电压VCC,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差VH输出,该VH信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。

当施加的磁场达到工作点(即Bop)时,触发器输出高电压(相对于地电位),使三极管导通,此时OC门输出端输出低电压,三极管截止,使OC门输出高电压,这种状态为关。

这样两次电压变换,使霍尔开关完成了一次开关动作。

图6U18霍尔传感器和其输出特性

U18霍尔传感器有3个外接口,2个是电源的正负极接口,最后一个是脉冲信号输出口,只要将霍尔传感器的信号输出端接到单片机的端口上便可以实现距离检测。

其中,单片机的P3.2(INT0)引脚作为信号的输入端,采用外部中断0进行计数。

车轮每转一圈,霍尔传感器就产生一个脉冲信号,根据霍尔效应原理,当霍尔片处在磁场中时,霍尔传感器的输出端输出低电平。

当车轮转动一圈时小磁铁提供一个磁场,则霍尔传感器输出一次低电平完成一次数据采集,从而产生信号。

霍尔传感器检测并输出信号到单片机的INT0或INT1计算脉冲输入端,引起单片机的中断,对脉冲计数,当计数达到特定的次数时,里程就会增加,单片机对里程进行计算后,通过接口电路将计算好的结果传送到数码管并显示出来。

3.3按键单元和状态显示单元

本设计的按键单元电路(如图7)有4个按键,功能分别是:

p1.0口接是清零按键,用于对新旅客的重新计费;p1.1口为路程和等待时间切换按钮,;p1.2口按键可进行单程和双程之间切换,灯亮时表示往返计费;p1.3口按键对本次计费进行暂停。

状态显示使用四个发光二极管来指示,包括计时指示灯(p1.4口)、等待时间查询指示(p1.5口)、双程指示灯(p1.6口)、暂停指示灯(p1.7口)。

这些指示灯能对出租车的每一种状态进行指示,当汽车速度小于5km/_ms;//记录等待时间多少个10ms

//按键的定义,所有按键按下去为低电平

sbitkey0=P1^0;//清零

sbitkey1=P1^1;//切换路程与等待时间

sbitkey2=P1^2;//单程还是往返设置

sbitkey3=P1^3;//暂停按钮

sbitled1=P1^6;//双程

sbitled2=P1^7;//暂停

sbitled3=P1^4;//计时

sbitled4=P1^5;//切换

bitkey1_flag;//由于按键会自动复位,这个为标志位

bitkey2_flag;

bitkey3_flag;

bitflag;

//初始化函数

voidinitial_data(void)

{

distance=0;

cost=0;

second=0;

minute=0;

wait_ten_ms=0;

key1_flag=1;//

key2_flag=0;//单程or往返,接指示灯;

key3_flag=1;//暂停,接指示灯;

flag=0;

round=0;

dengdai=0;

led1=1;//双程指示

led2=1;//暂停指示

led3=1;//堵车指示

led4=1;//等待时间切换标志

}

//暂停程序

voidzanting(void)

{

if(key3_flag)

{

EX0=0;//关闭中断和定时器

TR0=0;

}

else

{

EX0=1;

TR0=1;

}

key3_flag=!

key3_flag;

}

//计算数据处理

voidjisuan()

{

distance=round/60+wait_ten_ms/3000;//车轮转60圈为100m,等待时间30s为100m

if(distance<=30)

cost=50;

price=20;//单程价格

if(key2_flag)price=15;//往返价格

if(distance>30)

cost=price*(distance-30)/10+50;

wait=minute*100+second;

}

//显示的辅助程序,分离一个数的各个数字

voidfenli(inttemp)//数据的分离处理

{

if(temp>9999)temp=9999;

qianwei=temp/1000;

baiwei=temp/100%10;

shiwei=temp%100/10;

gewei=temp%10;

}

//延时约1ms,数码管显示时使用

voiddiplay_delay(void)

{

inti;

for(i=0;i<290;i++);

}

//显示程序;

voidled_show()

{

//-----显示路程或者等待时间----

if(key1_flag)fenli(distance);

else

fenli(wait);

P2=0xfe;

P0=led_seg_code[gewei];

diplay_delay();

P2=0xfd;

if(key1_flag)P0=led_seg_code[shiwei]|0x80;//如果是路程,点亮小数点儿

elseP0=led_seg_code[shiwei];//如果是时间,不需要点亮小数点儿

diplay_delay();

P2=0xfb;

if(key1_flag)P0=led_seg_code[baiwei];

elseP0=led_seg_code[baiwei]|0x80;

diplay_delay();

P2=0xf7;

P0=led_seg_code[qianwei];

diplay_delay();

//-----显示价格----

fenli(cost);

P2=0xef;

P0=led_seg_code[gewei];

diplay_delay();

P2=0xdf;

P0=led_seg_code[shiwei]|0x80;

diplay_delay();

P2=0xbf;

P0=led_seg_code[baiwei];

diplay_delay();

P2=0x7f;

P0=led_seg_code[qianwei];

diplay_delay();

P2=0xff;

}

//延时时基为1ms

voiddelay(intx)

{

inti,j;

for(i=x;i>0;i--)

for(j=340;j>0;j--);

}

//键盘的扫描

voidkeyscan()

{if(key1==0)//按键消抖并判断按下去的次数为基数还是偶数

{delay(5);

if(key1==0)

key1_flag=!

key1_flag;

while(!

key1)led_show();

delay(5);

while(!

key1)led_show();

}

if(key0==0)//清零

{delay(5);

if(key0==0)

initial_data();

}

if(key3==0)//暂停

{delay(5);

if(key3==0)

zanting();

while(!

key3)led_show();

delay(5);

while(!

key3)led_show();

}

if(key2==0)//单程还是往返

{delay(5);

if(key2==0)

key2_flag=!

key2_flag;

while(!

key2)led_show();

delay(5);

while(!

key2)led_show();

}

//指示灯扫描

led1=!

key2_flag;//指示,单程还是往返,灯低电平点亮;往返亮;

led2=key3_flag;//指示,暂停时亮;

led3=flag;//指示是否等待;

led4=key1_flag;//切换指示,显示路程还是等待时间;

diplay_delay();

}

//中断及定时器初始化

voidinitial_time()

{

TMOD=0x01;//工作在模式1

IE=0x83;

IT0=1;//外部边沿触发方式

TR0=1;

}

//中断记录脉冲数

voidzd()interrupt0//中断0

{

aa++;

if(flag)round++;

}

//*********定时器********

voidtime0()interrupt1//定时0

{

tt++;

if(tt>=100)//1s采样

{

tt=0;

aa=aa/5;//速度(n*圈/s)

if(aa<=5)flag=0;

elseflag=1;

aa=0;

}

if(!

flag)

{

wait_ten_ms++;

dengdai++;

if(dengdai==100)

{dengdai=0;

second++;

if(second==60)

{

minute++;

second=0;

}

}

}

}

//主程序

voidmain(void)

{

initial_data();//初始化数据

initial_time();//初始化定时器

while

(1)

{

keyscan();

jisuan();

led_show();

}

}

附2、系统原理图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1