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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

课程设计出租车计价器Word文档格式.docx

1、基本要求:(1)能显示里程,单位为公里,最后一位为小数位。(2)能显示金额数,单位为元,最后一位为小数位。(3)可设定单程价格和往返价格,单程价格为2元/公里,往返价格为1.5元/公里。(4)车速5公里/小时的时间累积为总等待时间,每5分钟等待时间相当于里程数增加1公里。(5)起步公里数为3公里,价格为5元,若实际距离大于3公里,按规则3计算价格。(6)按暂停键,计价器可暂停计价,按查询键,可显示总等待时间。2 系统总体方案及硬件设计2.1 系统总体方案模拟计数器系统主要由五大模块组成:霍尔传感器、AT89S52单片机、独立键盘、EEPROM AT24C01和显示数码管。霍尔传感器安装在车轮的

2、旁侧,主要检测汽车行进的公里数,并产生一系列相应的脉冲输出,脉冲送到单片机进行处理,单片机根据程序设定通过计算脉冲数换算出行驶公里数,再根据从EEPROM中读取的价格等相关数据进行金额的计算,计算好的金额、里程都实时地显示在数码管上。独立键盘可以调节价格等相关数据,按下相应的按钮,产生信号交由单片机处理并实时显示出来。总体方案结构图如下:图2.1 系统总体结构框图2.2 单片机最小系统单元这次设计用到了AT89S52单片机(如图2.2),AT89S52系列单片机是由Atmel公司生产,而这家公司得到了Intel公司MCS51系列单片机内核生产授权,所以,它与MCS51系列单片机指令兼容,同时它

3、的内部包含有用作程序存储器的4KB的基于FLASH技术的只读存储器。采用这款芯片及克服了采用8031需要添加外部外部程序存储器导致电路复杂的缺点,又克服了采用8751导致电路制作成本高的缺点。AT89S52单片机芯片具有以下特性:1)指令集合芯片引脚与Intel公司的8051兼容;2)4KB片内在系统可编程FLASH程序存储器;3)时钟频率为033MHZ;4)128字节片内随机读写存储器(RAM);5)6个中断源,2级优先级;6)2个16位定时/记数器;7)全双工串行通信接口;8)监视定时器;9)两个数据指针。2.2.1 时钟电路模块 为达到振荡周期是12MHZ的要求,这里要采用12MHZ的晶

4、振,另外有两个22P的独石电容,两晶振引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。具体如图所示:图2.2 时钟电路模块2.2.2 复位电路模块单片机系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R采用200的阻值,电容采用电容值为10的电解电容。具体连接电路如图示5:图2.3 复位电路模块2.3 霍尔传感器检测单元 属于开关型的霍尔器件,其工作电压范围比较宽(4.518V),其输出的信号符合TTL电平标准,可以直接接到单片机的IO 端口上,而且其最高检测频率可达到1MHZ。集成霍耳开关由稳压器A、霍耳电势发生器(即硅霍耳片)B、差分放大器C、施密特触发器D和OC门输出E五

5、个基本部分组成。在输入端输入电压Vcc,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差VH输出,该VH信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。当施加的磁场达到工作点(即Bop)时,触发器输出高电压(相对于地电位),使三极管导通,此时OC门输出端输出低电压,三极管截止,使OC门输出高电压,这种状态为关。这样两次电压变换,使霍尔开关完成了一次开关动作。 霍尔传感器原理如图5所示。图2.4 传感器测距示意图里程计算是通过安装在车轮上的霍尔传感器检测到的脉冲信号,送到单

6、片机产生中断,单片机再根据程序设定,计算出里程。其原理如图2.4所示。本系统选择了将霍尔传感器的脉冲输出口接到P3.3口外部中断1作为信号的输入端(这样可以减少程序设计的麻烦),车轮每转一圈(设车轮的周长是5米),霍尔开关就检测并输出信号,引起单片机的中断,对脉冲计数,当计数达到200次时,即1公里,单片机就控制将金额自动增加,如图2.5(霍尔传感器)。图2.5 霍尔传感器2.4 AT24C01存储单元存储单元的作用是在电源断开的时候,存储当前设定的单价信息。AT24C01 是Ateml公司的1KB的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静

7、态电流10uA(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8 脚的DIP 封装,使用方便。A0,A1,A2地址输入引脚,走位硬件寻址的依据,同种芯片可同时连接8片(23);Vcc,Gnd电源,接地引脚,1.8-5.5vWp写保护,当Wp接地时,允许对器件的正常读写操作;当Wp接高电平时,写保护,只能进行读操作。SDA串行地址/数据输入/输出端口,双向传输,漏极开路,需外接上拉电阻到Vcc(典型阻值为10k)。SCL串行时钟输入,高低电平不同状态与SDA配合,执行不同的命令。AT24C02芯片引脚配置如图所示。 图2.6 AT24C01图中R13、R14 是上拉电阻,其作

8、用是减少AT24C01 的静态功耗。由于AT24C01的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(时钟脉冲)和SDA(数据/地址)与单片机P1.6和P1.7口连接,进行传送数据。每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用. 图2.7 AT24C02原理图2.5 键盘调整单元当单价等信息需要进行修改时,就要用到键盘进行修改。由于调节信息不多,故采用4个独立键盘即可,分别实现清零、切换、增大、减小和功能等作用。电路原理如图所示。图2.8 键盘调整模块S

9、1:接P1.1口,对上一次的计费进行清零/暂停,为下次载客准备S2:接P1.2口,实现白天和夜晚单价的切换;当功能键S4按下时,S2可对数据进行增大。S3:接P1.3口,当功能键S4按下时,S3可对数据进行减小。S4:接P1.4口,按1次,进入调整单程单价;按2次,进入调整返程单价;按3次,进入调整起步价;按4次,返回。S5:接P1.5口,对等待时间进行查询2.6 数据显示模块显示单元由7个8段共阴数码管组成,采用动态扫描进行显示。前四个数码管分别接P2.0、P2.1和P2.2、P2.3,用于显示总金额;后面分别接P2.4、P2.5、P2.6和P2.7,用于显示里程;图2.9 数据显示模块3

10、软件设计3.1 系统主程序在主程序模块中,需要完成对各参量和接口的初始化、出租车起步价和单价的初始化以及中断、计算、循环等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。 3.1 主程序流程图当汽车运行起来时,就启动计价,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。若已超过,则根据里程值、每公里的单价数和起步价数来计算出当前的总金额,并将结果存于总金额寄存器中;中途等待时,脉冲输入小于设定值时,当时间超过等待设定值时,开始进行计时,并把等待

11、价格加到总金额里,然后将总金额、里程送数码管显示出来。程序流程如图所示。3.2 中断程序3.2.1 里程计数中断程序每当霍尔传感器输出一个低电平信号就使单片机中断一次,当里程计数器对里程脉冲计满1000次时,进入里程计数中断服务程序中,里程变量加一。主函数中总金额也相应地变化。3.2.2 中途等待中断程序在中途等待中断程序中,每1ms产生一次中断,将当前里程值送入某个缓存变量,每5分钟将缓存变量中的值和当前里程值比较,当汽车车速小于5公里/小时,将存储器里面的值与实时测量的值比较,当行进的里程小于1/12公里每分钟时,则进入等待计时,每5分钟记一次价格。3.3 计算程序计算程序根据里程数分别进

12、入不同的计算公式。如果里程大于3公里,则执行公式:总金额=起步价+(里程-3)*单价+等待时间*等待单价;否则,执行公式:总金额=起步价+等待时间*等待单价。程序流程图如图所示。 3.3 计算程序流程图3.4 显示程序显示程序利用定时器每1ms产生一次中断,相应变量置位,点亮一个数码管,显示一位数据,利用主函数内的循环,实现动态扫描显示,同时根据数码管余辉和人眼暂留现象,即可实现显示。3.5 键盘程序键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦右按键按下,便转向相应的子程序处理,处理结束再返回。流程图如图3.4 键盘程序流程图4 Proteus软件仿真图4.1

13、 初始化(数码管 上:总金额-元 下:里程-公里)图4.2 单程单位价格(数码管 上:标识符 下:单程单价-元)图4.3 单程计价费用(数码管 上:图4.4 返程单位价格(数码管 上:返程单价-元)图4.5 返程计价费用(数码管 上:图4.6 起步价格(数码管 上:起步单价-元)图4.7 小于三公里计价费用(数码管 上:图4.8 等待时间查询(数码管 上:等待时间-分钟)5 总结 经过这些天有关于出租车计价器的课程设计,使我对单片机的应用有了更深的了解。在课程设计的过程中,还是碰到了许多的问题。比如,对于数码管动态扫描显示和键盘的延时防抖的综合编程不能较好地解决;对于代码的前后顺序及调用掌握得

14、还不够好;对于一些相关的应用软件没能熟练掌握。通过这几天晚上的苦想和反复调试,以及参考网上的程序,最终还是把问题解决了。 通过这次课程设计,我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,也充分体会到了自己设计东西的乐趣、学会查阅资料和对别人的东西融会变通的重要性,也明白了很多知识光靠趴在书本上学是学不到其中的精髓的,必须亲自去试着实践,亲自去经历才能对它们真正的掌握,凡事都要自己去动下手,去实践一下,遇到困难,永远不要沮丧气馁。在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的摸索和实践来提高

15、其他方面的知识。参考文献1段晨东.单片机实用技术教程.清华大学出版社,20082王晓明.单片机接口技术.北京航空航天大学出版社,20073王晓敏.传感器检测技术及应用.北京大学出版社,20104吴红星.电机驱动与控制专用集成电路及应用.中国电力出版社,20065Schulz,Joerg.Acceleration transducer for positioning drives in precision engineering.engineeringvillage,19996Transducer for Measurement of Motion. Speed and Acceleration

16、, Duc, M.; Peters, M.; Yvroud, E. engineeringvillage,1975附录1 源程序#include#include #define uchar unsigned char#define uint unsigned int#define delayNOP(); _nop_();_nop_();uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /共阴数码管段选sbit exter=P33; /外部中断sbit key0=P11; /清零sbit key1=P12; /

17、切换/+sbit key2=P13; /-sbit key3=P14; /功能键sbit key4=P15; /查询键sbit P20=P20; /数码管各位控制sbit P21=P21;sbit P22=P22;sbit P23=P23;sbit P24=P24;sbit P25=P25;sbit P26=P26;sbit P27=P27;sbit P34=P34; /单程sbit P35=P35; /返程sbit P36=P36; /空车sbit SDA=P16;sbit SCL=P17; /IIC引脚uint inter,aa,bb,temp,temp1,flag,flag1;uchar

18、 zongjine,licheng,dengdai,licheng1;uint key3num,qiehuantemp,delaytemp;uchar danjia1,danjia2,danjia3,danjia4,danjia,qibu;void delay(uint x) /延时时基为1ms int i,j; for(i=x;i0;i-) for(j=110;jj-);void start() /IIC开始位 SDA = 1; SCL = 1; delayNOP(); SDA = 0; SCL = 0;void stop() / IIC停止位void respons() /IIC应答位 u

19、char i; SCL=1; while(SDA=1)&(i250) i+; SCL=0;uchar read_byte() / 从EEPROM读到MCU uchar i,j; for(i=0;i8;i+) j=1; j|=SDA; return(j);void write_byte(uchar date) / 从MCU写到EEPROM uchar i,temp; temp=date; temp=temp1; SDA=CY; SDA=1;void write_data(uchar addr, uchar date) / 在指定地址addr处写入数据date start(); write_byt

20、e(0xa0); respons(); write_byte(addr); write_byte(date); stop();uchar read_data(uchar addr) / 在指定地址addr读取数据 uchar date; write_byte(0xa1); date=read_byte(); return date;void display(uint zongjine0,uint licheng0) /数码管显示方式0 uint jbai,jshi,jge,jxiaoshu,lbai,lshi,lge,lxiaoshu; uint numwei,numshu; /数码管位置分配

21、 jbai=zongjine0/1000; jshi=zongjine0%1000/100; jge=zongjine0%100/10; jxiaoshu=zongjine0%10; jbai=licheng0/1000; lshi=licheng0%1000/100; lge=licheng0%100/10; lxiaoshu=licheng0%10;/数码管动态显示 if(aa) aa=0; numshu+; if(numshu=8) numshu=0; P0=0xff; P2=0xff; switch(numwei) case 0:P20=0;P0=tablejbai;break; ca

22、se 1:P21=0;P0=tablejshi; case 2:P22=0;P0=tablejge|0x80; case 3:P23=0;P0=tablejxiaoshu; case 4:P24=0;P0=tablelbai; case 5:P25=0;P0=tablelshi; case 6:P26=0;P0=tablelge|0x80; case 7:P27=0;P0=tablelxiaoshu; /动态扫描位选控制 numwei+; if(numwei=8) numwei=0;void display1(uint zongjine1,uint licheng1) /数码管显示方式1 ui

23、nt jbai1,jshi1,jge1,jxiaoshu1,lbai1,lshi1,lge1,lxiaoshu1; jbai1=zongjine1/1000; jshi1=zongjine1%1000/100; jge1=zongjine1%100/10; jxiaoshu1=zongjine1%10; jbai1=licheng1/1000; lshi1=licheng1%1000/100; lge1=licheng1%100/10; lxiaoshu1=licheng1%10; /数码管动态显示P0=tablejbai1;P0=tablejshi1;P0=tablejge1;P0=tablejxiaoshu1;P0=tablelbai1;P0=tablelshi1;P0=tablelge1|0x80;P0=tablelxiaoshu1;void display2(uint zongjine2,uint licheng2) /数码管显示方式2 uint jbai2,jshi2,jge2,jxiaoshu2,lbai2,lshi2,lge2,lxiaoshu2; /

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

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