ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:684.81KB ,
资源ID:7739794      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7739794.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于MCS51单片机出租车计价器的设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于MCS51单片机出租车计价器的设计.docx

1、基于MCS51单片机出租车计价器的设计微型计算机技术专业方向课程设计任务书题目名称:基于MCS-51单片机的 出租车计价器的设计专业 自动化 班级 122班 姓名 张欣 学号 *2 学校:青岛理工大学自动化学院 * 2014年12月9日课程设计任务书课程名称:微型计算机技术设计题目:基于MCS-51单片机的 出租车计价器的设计系统硬件要求:出租车计价按4公里起步费为7元,每公里2元计费,无等待计费功能。要求每1s采样一次,假设轮胎周长1米,使用中断完成,费用精度要求1元。显示部分为LED动态显示设计;并有键盘设计;硬件设计:1)最小系统设计:AT89C51单片机为本设计的控制器,包括外扩ROM

2、,RAM各32 M(其大小由设计者自己设计),系统时钟电路、复位电路等构成的最小系统;2)接口电路的设计:设计者扩展一个并行接口8155或8255,键盘设计由设计者根据需要设计键盘的数量,显示采用LED显示,显示电路也根据显示的内容设计;3)有开机显示状态(如显示000000);4)在完成基本设计功能同时可以增加功能。软件设计: 1)主程序设计(包括初始化芯片,定时器,中断以及SP指针等); 2)各功能子程序设计,温度采集计算子程序、键盘子程序显示子程序设计,定时,中断程序等;)其他要求:1、每位同学独立完成本设计。2、依据题目要求,提出系统设计方案。3、设计系统电路原理图。调试系统硬件电路、

3、功能程序。编制课程设计报告书并装订成册,报告书内容(按顺序)(1)报告书封面(2)课程设计任务书(3)系统设计方案的提出、分析(4)系统中典型电路的分析(5)系统软件结构框图(6)系统电路原理图(7)源程序(8)课设字数不少于2000字成绩评语摘要 本文是以MCS-51单片机系统为基础的,通过霍尔传感器检测车轮转动,生成计数脉冲,由MCS-51单片机内部计数器进行计数,从而计算出行驶距离,以及随行驶距离变化而变化的收费金额,通过多位数码管显示出来。由于51单片机内部ROM容量小,采用2764扩展外部ROM来存储程序。本系统最大化地利用了单片机的内部资源,结构简单,性能稳定,操作方便。关键词:

4、计价器,MCS-51, 霍尔传感器,2764 第一章 系统总体设计1.1系统概述根据课程设计要求的性能指标,本系统要满足一定精度的价格计算的基本功能,同时系统还具有动态显示当前的计费值的功能和键盘操作的功能。 1.2系统原理分析 本文以MCS-51单片机系统为基础,通过霍尔传感器对车轮转动进行检测。车轮轴上有一个小磁钢,车轮每转动一圈,磁钢靠近一次霍尔传感器,传感器输出一个脉冲。单片机通过T1计数器对该脉冲进行计数,并根据轮胎周长计算行程,再根据计价规则算出计费值,通过数码管显示,计费精度达到1元。本系统设计简单,性能稳定,能够通过单片机灵活编程进行各种功能的设定和修改。根据本课题的设计目标以

5、及硬件的特点,本系统的总体设计框图如图所示。设计思路: 主程序主要执行定时器、计数器、中断的初始化,以及对数码管进行扫描显示。首先开中断,包括定时器0中断、外部中断0和1;然后配置外部中断触发模式,以及定时器初值;最后扫描显示数码管。其中,由于计数器每次返回计数值不确定,为了准确地工作,定时器与计数器均工作在方式一模式,外部中断触发方式为下降沿触发。晶振频率为12MHz,定时器0每次重装值为65536-5000,即每次定时器中断计时为5000*12/(12MHz)=5ms. 流程图: 程序代码: IE=0X8F; /开中断 TMOD=0X51; TH0=(65536-5000)/256; /定

6、时器初值为60536,即5ms TL0=(65536-5000)%256; IT0=1; IT1=1; / 中断定时器初始化 while(1) while(z=1) / 未检测到开始按键之前显示0 JG(0); while(z=0) / 开始之后数码管显示当前计费值q JG(q); T0作为定时器开中断,进入中断首先执行定时器初值的重装,然后判断计费器是否处于计费状态,从而决定是否向TH1和TL1取回计数值,计算总行程以及当前计费值并存入单片机。总行程与当前计费值分别记为zong和q. 计算方法根据设计要求得到,起步价为4km 7元,以后2元/km,要求精度为1元,所以程序为每500m计费1元

7、。流程图:是是否 程序代码: static num=0; TH0=(65536-5000)/256; TL0=(65536-5000)%256; /定时器初值重装为60536 num+; if(flag=0) /若flag为0,则按下了暂停键,此时每次定时器时间到计数器清零 TH1=0; TL1=0; if(num=2)&flag) /若flag为1,且定时器时间到采样时间,为了更灵敏地显 /示计费,扫描周期设定为2个中断周期 num=0; shu=TH1*256+TL1; zong=zong+shu; / 定时器数值存入zong TH1=0; TL1=0; / 计数器清零 if(zong=4

8、000) q=(zong-4000)/500+7; /若果zong大于起步公里数(4km)进行此步计算价格 外部中断0用于检测按键“开始/暂停”。“开始”被按下表示计价器从非计费状态转为计费状态或暂停,此时计数器与定时器均为开通状态。 程序代码: flag=!flag; /按下一次开始,再次按下取反 z=0; TR0=1; /定时器开通 TR1=1; /计数器开通外部中断0用于检测按键“复位”。“复位”被按下表示计价器从计费状态转为非计费状态或保持非计费状态,总行程(zong)与计费值(q)回到初值,关闭定时器与计数器,清空计数值。程序代码: z=1; /非计费状态 flag=0; q=7;

9、zong=0; TR0=0; /关闭定时器 TR1=0; /关闭计数器 TL1=0; TH1=0; 此系统采用数码管显示,因此需要计算每一位的显示值。这里采用多位数码管,每次只能显示一位,为了让多位数码管看起来都亮,程序必须高速扫描显示,由于人的视觉暂留效应,会看起来多位数码管都亮了。值得注意的是,随着程序运行,同一位的显示值会变,这体现在数码管段的亮灭上,为了不使显示不清晰,下次点亮之前必须先关闭该位,即不显示。程序代码:sbit L1=P36; /千位 sbit L2=P34; /百位sbit L3=P31; / 十位sbit L4=P30; /个位#define com1 L1=1;L2

10、=0;L3=0;L4=0#define com2 L1=0;L2=1;L3=0;L4=0#define com3 L1=0;L2=0;L3=1;L4=0#define com4 L1=0;L2=0;L3=0;L4=1#define com0 L1=0;L2=0;L3=0;L4=0 /单个数码管点亮定义P1=taba%10; /最低位(个位) com4; /点亮个位 delay(10); /延时 com0; /关闭显示 P1=tab(a/10)%10 ; /十位 com3; delay(10); com0; P1=tab(a/100)%10; /百位 com2; delay(10); com0;

11、 P1=taba/1000; /千位 com1; delay(10); com0;void delay(uint b) / 延时函数 uint x=110; for(x;x0;x-) for(b;b0;b-);第三章 硬件部分3.1 单片机最小系统及键盘模块 80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。80C51内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。由于80C51的系统性能满足系统数据采集及时间精度的要求,而且产品产量丰富来源广,应用也很成熟,故采用来作为控制核心。80C51是一种高效微控制器

12、,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 本系统包括晶振电路,复位电路,扩展外部ROM电路,键盘电路等,为了不使电路看起来过于混乱,这里采用网络标号的方法代替连线。电路图如下: 图13.2 数码管显示模块用数码管显示价格低廉且亮度高,很适合用于计价器显示。图中P1口(网络编号B)用于显示数码管,接数码管段选端。P3.0、P3.1、P3.4、P3.6(网络编号C)接数码管位选端。图23.3 霍尔传感器模块霍尔传感器是对磁敏感的传感元件,常用于开关信号采集的有CS3020、CS3040等,这种传感器是一个3端器件,外形与三极管相似,只要接上电源、地,即可工作,输出通常是集电极开路(O

13、C)门输出,工作电压范围宽,使用非常方便。如图1所示是CS3020的外形图,将有字面对准自己,三根引脚从左向右分别是Vcc,地,输出。图3使用霍尔传感器获得脉冲信号,其机械结构也可以做得较为简单,只要在车轮转轴的圆周上粘上一粒磁钢,让霍尔开关靠近磁钢,就有信号输出,转轴旋转时,就会不断地产生脉冲信号输出。所以霍尔传感器测速实际上是测转轴转动频率。在粘磁钢时要注意,霍尔传感器对磁场方向敏感,粘之前可以先手动接近一下传感器,如果没有信号输出,可以换一个方向再试。这种传感器不怕灰尘、油污,在工业现场应用广泛。霍尔传感器测速电路原理图如下:图4在仿真电路中,为了更清晰明了地展示计价器的工作,霍尔传感器

14、采样的部分用一个模拟脉冲发生器代替了(见图1),接P3.5/T1计数器计数通道。3.4 外部存储器模块本系统扩展8K ROM, 用了一片2764以及一片地址锁存器74LS373,其中使用地址线P0.0P0.7及P2.0P2.4,P0.0P0.7复用为数据线。单片机EA脚接地,程序存储地址均为外部ROM.地址范围为:0000H1FFFH扩展原理图如下:图5第四章 辅助调试工具使用proteus辅助调试,可以直观地看到程序及硬件电路的实现效果,设计者可以很方便地根据效果分析系统存在的问题,并找出解决方法,而且可以通过模拟测量仪器对电路进行实时监控。如图所示:图6图7总结出租车已经是城市交通的重要组

15、成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。所以,我们小组进行了出租车计价器的设计。经过一段时间的学习设计,出租车计费器系统的设计已经全部完成,能按预期的效果进行模拟汽车启动,停止,暂停等功能并能够通过数码管显示车费数目。即使这样,在设计调试仍然存在一些问题,可能无法做到真正的实践使用,还需要一些调整改正。这一段时间,经过小组成员的努力,我们基本完成了初始设计目的,但在这个过程中我发现自己存在一些问题,那就是我平时学习积累远远不够,在参与设计的过程中,有许多力不能及的地方,都是在上网学习后者组员帮助下才能完成。这说明了一点,书本上

16、的东西真要实践起来是完全不一样的,在这方面我有很大的不足,实践方面的能力远远不够。 虽然在这次设计中我有很多的不足,但正是在这次设计中我学到了很多东西,通过这次设计不仅学会了如何去查找相关资料,更重要的是通过查找资料和翻阅书籍学到了不少知识,扩大了知识面,提高了知识水平。经过单元设计和系统设计巩固了以前所学的专业知识,自己真正认识到理论联系实际的重要性,为以后的学习和工作提供了很多有价值的经验。通过这次设计不仅增强了自己的动脑能力和动手能力,也提高了我思考问题、分析问题、解决问题的能力,更重要的是学会用工程化的思想来解决问题。这在以前的学习过程中是不曾学到的。并且这次设计还使我认识到完整、严谨

17、、科学分析问题、解决问题的思想是多么的重要,只有拥有了科学的态度才能设计出有用的产品。参考文献:单片机原理及其接口技术(第三版) 胡汉才 主编 数字电子技术基础(第五版) 清华大学电子学教研室组 编 阎石 主编自动检测技术及仪表控制系统(第三版) 张毅 张宝芬 曹丽 彭黎辉 编附录一 程序代码#includetypedef unsigned int uint;typedef unsigned char uchar;void delay(uint b); / 延时函数声明void JG(uint a); /价格数值拆分及显示函数 sbit L1=P36;sbit L2=P34;sbit L3=P

18、31;sbit L4=P30;#define com1 L1=1;L2=0;L3=0;L4=0#define com2 L1=0;L2=1;L3=0;L4=0#define com3 L1=0;L2=0;L3=1;L4=0#define com4 L1=0;L2=0;L3=0;L4=1#define com0 L1=0;L2=0;L3=0;L4=0 /单个数码管点亮定义uchar code tab=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0x0F8,0x80,0x90 ;uchar z=1,flag=0;uint q=7,zong=0,shu=0;void mai

19、n() IE=0X8F; TMOD=0X51; TL0=(65536-5000)%256; TH0=(65536-5000)/256; IT0=1; IT1=1; / 中断定时器初始化 while(z=1) / 未检测到开始按键之前显示0 JG(0); while(z=0) / 开始之后数码管显示 JG(q); void TT0(void) interrupt 1 /定时器中断 static num=0; TH0=(65536-5000)/256; TL0=(65536-5000)%256; num+; if(flag=0) /若flag为0,则按下了暂停键,此时每次定时器时间到计数器清零 T

20、H1=0; TL0=0; if(num=2)&flag) /若flag为1,且定时器时间到扫描时间 num=0; shu=TH1*256+TL1; zong=zong+shu; / 定时器数值存入zong TH1=0; TL1=0; / 计数器清零 if(zong=1000) q=(zong-500)/500+7; / 若果zong大于起步公里数进行此步计算价格 void TT1(void) interrupt 3 void kaishi0(void) interrupt 0 /开始暂停按键检测 flag=!flag; /按下一次开始,再次按下取反 z=0; TR0=1; TR1=1; voi

21、d fuwei(void) interrupt 2 / 复位按键检测 z=1; flag=0; q=7; zong=0; TR0=0; TR1=0; TL1=0; TH1=0; void JG(uint a) / 价格数值拆分及显示函数 P1=taba%10; com4; delay(10); com0; P1=tab(a/10)%10 ; com3; delay(10); com0; P1=tab(a/100)%10; com2; delay(10); com0; P1=taba/1000; com1; delay(10); com0;void delay(uint b) / 延时函数 uint x=110; for(x;x0;x-) for(b;b0;b-);附录二 硬件电路图附录三 PCB图

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

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