出租车计价器总结报告.docx
《出租车计价器总结报告.docx》由会员分享,可在线阅读,更多相关《出租车计价器总结报告.docx(22页珍藏版)》请在冰豆网上搜索。
出租车计价器总结报告
电气工程学院
微机原理与接口技术课程设计
设计题目:
出租车计价器系统设计
学 号:
11291092
姓名:
杨艳丽
同组人:
无
指导教师:
徐建军
设计时间:
2014.3.15-3.25
设计地点:
电气学院实验中心
微机原理课程设计成绩评定表
姓名
杨艳丽
学号
11291092
课程设计题目:
出租车计价器系统设计
课程设计答辩或提问记录:
成绩评定依据:
课程设计预习报告及方案设计情况(20%):
课程设计考勤情况(5%):
电路焊接情况(15%)
课程设计调试情况(40%):
课程设计总结报告与答辩情况(20%):
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日
微机原理与接口技术课程设计任务书
学生姓名:
杨艳丽指导教师:
徐建军
一、课程设计题目:
出租车计价器系统设计
二、课程设计要求
1.根据具体设计课题的技术指标和给定条件,独立进行方案论证和电路设计,要求概念清楚、方案合理、方法正确、步骤完整;
2.查阅有关参考资料和手册,并能正确选择有关元器件和参数,对设计方案进行仿真;
3.完成预习报告,报告中要有设计方案,设计电路图,还要有仿真结果;
4.进实验室进行电路调试,边调试边修正方案;
5.撰写课程设计报告——最终的电路图、调试过程中遇到的问题和解决问题的方法。
三、进度安排
1.时间安排
序号
内容
学时安排(天)
1
方案论证和系统设计
3.14-3.15
2
完成电路仿真,写预习报告
3.16-3.17
3
电路调试
3.18-3.25
4
写设计总结报告与答辩
3.26-3.27
合计
13天
设计调试地点:
电气楼410
2.执行要求
微机原理与接口技术课程成绩80分以上的同学可以自拟题目,其余的同学都是指定题目。
,每组不得超过2人,要求学生在教师的指导下,独力完成所设计的详细电路(包括计算和器件选型)。
严禁抄袭,严禁两篇设计报告雷同。
摘要
现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。
而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。
出租车计价器是根据客户用车情况来自动显示车费的数字仪表,根据用车起步价、行车里程计费求得客户用车的总费用,并通过数码管显示相应的里程及金额。
本电路以AT89C51单片机为中心,附加A44E霍尔传感器测距(本电路中用模拟开关替代),实现对出租车计价,采用AT24C02实现在系统掉电的时候保存单价,输出采用8段数码显示管,显示行驶总里程和总金额。
模拟出租车计价器设计:
进行里程显示,预设起步价和起步公里数;行程按全程收费,有复位功能和启动功能,启动后,开始计价。
我们采用单片机进行设计,可以用较少的硬件和适当的软件相互配合来实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能,应用前景广阔。
关键词:
出租车计价器AT89C51单片机A44E霍尔传感器断电保存8段数码显示管
Abstract
TheAT89C51isalow-power,high-performanceCMOS8-bitmicrocontrollerwith4KbytesofIn-SystemProgrammableFlashmemory.ThedeviceismanufacturedusingAtmel'shigh-densitynonvolatilememorytechnologyandiscompatiblewiththeindustry-standard80C51instructionsetandpinout.Theon-chipFlashallowstheprogrammemorytobereprogrammedin-systemorbyaconventionalnonvolatilememoryprogrammer.Bycombiningaversatile8-bitCPUwithIn-SystemProgrammableFlashonamonolithicchip,theAtmelAT89S51isapowerfulmicrocontrollerwhichprovidesahighly-flexibleandcost-effectivesolutiontomanyembeddedcontrolapplications.
Keywords:
taximeterAT89C51hallelementnixietube
目录
第1章系统方案设计1
1.1系统硬件设计
1.1.1硬件设计说明6
1.1.2AT89C51单片机简介6
1.1.3硬件电路设计7
1.1.4硬件组成8
1.1.5驱动电路9
1.1.6显示电路9
1.1.7复位电路10
1.1.8掉电保护电路11
1.1.9时钟电路12
1.1.10按键电路12
1.2系统软件设计
1.2.1软件总体设计13
1.2.2系统程序设计13
第2章仿真14
第3章调试17
3.1焊接检测17
3.2硬件检测18
3.3软件调试18
第4章结论19
第5章心得体会与建议20
参考文献21
附录1元器件清单22
第1章系统方案设计
1.1系统硬件设计
1.1.1硬件设计说明
单片机是单片微型计算机的简称,单片机以其卓越的性能,得到广泛的应用,已经深入到各个领域。
在这次设计中,我们用到P0口和P2口,P0口为8位三态I/O口,此口为地址总线及数据总线分时复用;P2口为8位准双向口,与地址总线高八位复用;P0口和P2口都有一定的驱动能力,P0口的驱动能力较强。
设计中,为了能够让数码管更好的正常显示,我们采用了驱动电路来驱动。
在本次硬件设计中,我们考虑采用芯片74LS245来驱动数码管显示。
设计电路时,考虑到用里程(霍尔)传感器价格昂贵,且不便于试验检测,在设计中采用一个模拟开关来代替。
模拟开关一端接在P3.4口,另一端接地,通过来回高低电平的变化,每按两次,对应的里程数加一。
通过在程序中设置的里程和金额的信息,在加上驱动电路的设计,就可以在数码管上分别显示总金额和总里程。
在显示方面,可以用液晶显示,也可以用数码管进行显示。
由于在这次设计中只需要显示里程和金额信息,我们采用数码管进行显示。
这样既节约了成本,又可以达到显示的目的。
同时为了减少硬件的复杂度,我们采用了动态显示方式,选用了共阴极数码管。
为了焊接方便,我们选用了集成在一起的数码管。
我们还设计了控制按键,能够很好的对出租车计价器控制,如启动/停止按键,清零按键等。
1.1.2AT89C51单片机简介
AT89C51具有如下特点:
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口有两个功能:
除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置。
AT89C51引脚图AT89C51封装图
设计中用到的单片机各管脚(图2.1)功能介绍如下:
VCC:
接+5V电源。
VSS:
接地。
时钟引脚:
XTAL1和XTAL2两端接晶振和30PF的电容,构成时钟电路。
它可以使单片机稳定可靠的运行。
RST:
复位信号输入端,高电平有效。
当在此引脚加两个机器周期的高电平时,就可以完成复位操作。
P1.0:
接启动/停止按键,控制计价。
P1.1:
接功能键。
P1.3:
接清零键。
P0口接数码管段选端,P2口接驱动芯片。
P3.4(T0):
接模拟开关按键,替代了出租车计价器中的霍尔传感器。
P3.1、P3.0口接掉电保护电路。
1.1.3硬件电路设计
按下计价按键时,显示起步价和起步里程范围,这些在程序中设置;当等于或超过两公里后,按计算总价的公式为:
总价=起步价+单价*(总里程-起步里程)进行计价。
本设计中,起步价为10元,起步里程为3公里,当然这些数据可以在程序中改写,以满足不同时期价格调整的需要。
下图是通过在KeilC中编译通过,并生成Hex文件,在PROTEUS中仿真通过的整体硬件原理图。
系统结构图:
电路原理图:
1.1.4硬件组成
硬件组成主要包括:
驱动电路、显示电路、复位电路、掉电保护电路、时钟电路、按键电路。
1.1.5驱动电路
74LS245是我们常用的芯片,用来驱动led或者其他的设备。
总线驱动器74LS244和74LS245经常用作三态数据缓冲器,74LS244为单向三态数据缓冲器,而74LS245为双向
三态数据缓冲器。
本设计用74LS245作为驱动芯片,双向总线发送器/接收器(3S)。
驱动芯片管脚图
74LS245主要电器特性的典型值如下:
引出端符号:
AA总线端
BB总线端
/G三态允许端(低电平有效)
DIR方向控制端
功能表:
功能表
利用74LS245来驱动数码管显示,单片机的P2.0到P2.5分别接A0到A5管脚,进行数据的传送,其中AB/BA接高电平,控制数据从A到B进行传送,B0到B5分别接数码管的位选端,驱动数码管依次显示。
P2.0到P2.5的数据通过A传送到B中的数据送到数码管,以达到显示数据信息的目的。
1.1.6显示电路
多数的应用系统,都要配输入和输出外设,LED显示器和LCD显示器,虽然LCD显示效果比较好,已经成为了一种发展趋势,但为了节约成本,我们选用了LED显示器(图2.6)。
在显示方面,我们选用了动态显示。
静态显示虽然亮度较高,接口编程容易,但是每位的段码线分别与一个8位的锁存器输出相连。
占用的I/O口线比较多,在显示位数较多的情况下,一般都采用动态显示方式。
利用动态显示的方法,由于LED显示器的余辉和人眼的视觉暂留现象,只要每位显示的时间间隔足够短,就仍能感觉到所有的数码管都在显示。
为了简化硬件,通常将所有位的段码线相应段并联在一起,由一个8位I/O口控制,在同一时刻,只让一位选通,如此循环,就可以使各位显示出将要显示的字符。
LED数码管数码管引脚图
数码管字形字位
LED数码有共阳和共阴两种,把这些LED发光二极管的正极接到一块(一般是拼成一个8字加一个小数点)而作为一个引脚,就叫共阳的,相反的,就叫共阴的,那么应用时这个脚就分别的接VCC和GND。
再把多个这样的8字装在一起就成了多位的数码管了。
在本设计仿真中使用的是2个3位共阴8段数码管(图2.7)。
找公共共阴和公共共阳的方法:
首先我们找个电源|稳压器(3到5伏)和1个1K(几百欧的也行)的电阻,VCC串接个电阻后和GND接在任意2个脚上,组合有很多,但总有一个LED会发光的,找到一个就够了,然后用GND不动,VCC(串电阻)逐个碰剩下的脚,如果有多个LED(一般是8个),那它就是共阴的了。
共阴极数码管,阴极接地,当某个发光二极管的阳极为高电平时,发光二极管点亮,对应的段就显示。
1.1.7复位电路
单片机的复位是由外部的复位电路实现的,复位电路通常采用上电自动复位和按钮复位两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的。
除了上电复位外还需要按键手动复位(图2.8)。
按键手动复位有电平方式和脉冲方式两种。
其中电平复位是通过RST端经电阻与电源VCC接通而实现的。
单片机的复位速度比外围I/O接口电路快为
能够保证系统可靠的复位,在初始化程序中应安排一定的复位延迟时间。
复位电路
1.1.8掉电保护电路
掉电保护电路中采用了存储芯片AT24C02。
AT24C02是一个CMOS标准的EEPROM存储器,是AT24CXX系列(AT24C01/02/04/08/16)成员之一,这些EEPROM存储器的特点是功耗小、成本低、电源范围宽,静态电源电流约30uA~110uA,具有标准的I2C总线接口,是应用广泛的小容量存储器之一。
AT24C02引脚图
上图是AT24C02的引脚图,这个芯片是一个8脚芯片,内部存储器有256字节。
引脚功能介绍如下:
A0(引脚1):
器件地址的A0位,是器件地址的最低位,器件地址排列是A6A5A4A3A2A1A0R/W。
A1(引脚2):
器件地址的A1位。
A2(引脚3):
器件地址的A2位。
GND(引脚4):
地线。
SDA(引脚5):
数据总线引脚。
SCL(引脚6):
时钟总线引脚。
TEST(引脚7):
测试引脚。
Vcc(引脚8):
电源线引脚。
本设计采用掉电存储电路图如下:
掉电存储电路
1.1.9时钟电路
MCS-51单片机的各功能部件都是以时钟控制信号为基准,内部电路在时钟信号的控制下,严格地按时序执行指令进行工作,单片机本身如同一个复杂的同步时序电路,为了保证其各个部分同步工作,电路要在唯一的时钟信号控制下,严格地按照时序进行工作。
其实只需在时钟引脚连接上外围的定时控制元件,就可以构成一个稳定的自激振荡器。
为更好地保证振荡器稳定可靠地工作,谐振器和电容应尽可能安装得与单片机芯片靠近。
本设计中使用的振荡电路,由12MHZ晶体振荡器和两个约30PF的电容组成,在XTAL1和XTAL2两端跨接晶体,电容的大小不会影响振荡频率的高低。
在整个系统中为系统各个部分提供基准频率,以防因其工作频率不稳定而造成相关设备的工作频率不稳定,晶振可以在电路中产生振荡电流,发出时钟信号。
如图2.11所示。
时钟电路
1.1.10按键电路
按键控制电路中,单片机的P1.0管脚接启动/停止按键,通过软件编程,当按下按键计数器开始工作,开始计价;当弹起按键时,计数器停止工作,停止计价,启动/停止按键带自锁功能。
按下启动按键,开关处于导通状态,这时给P1.0送低电平信号,这时TR0=1,计数器开始工作,调用计价子程序开始计价。
清零按键接单片机的P1.3管脚,按下清零按键,P1.3为低电平,调用清零子程序,用于将显示数据清零,在程序中给各位赋0代码(0x3f),以达到清零的目的,方便下次计价。
另外为功能键,控制价格调整,这个按键是在没有按下启动/停止按键时有作用,计价过程中无效。
按键电路
1.2系统软件设计
1.2.1软件总体设计
51单片机的程序设计语言主要有两种:
一是汇编程序设计;二是C语言编程设计。
两种程序设计语言都有各自的优点。
用汇编语言编写和高级语言(C语言)比较起来节省空间,这样对于存储空间仅4Kb的芯片来说是极之有利的,51单片机能更高速的运行。
C语言编写的程序,虽然不象汇编那样速度快、但程序简单易行、并且需要较小的存储空间。
C语言作为一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。
此外,C语言程序还具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。
因此,使用C语言进行程序设计已成为软件开发的主流。
本设计就是采用C语言编写的,由于采用模块化操作,使得程序在修改,执行的时候显得方便易行。
1.2.2系统程序设计
本设计中,软件设计采用模块化操作,利用各个模块之间的相互联系,在设计中采用主程序调用各个子程序的方法,使程序通俗易懂,我设计了整体程序流程图。
在main函数编写开始,要进行初始化,包括对系统初始化和对存储器初始化,要对硬件设备进行初始化,并使硬件处于就绪状态。
通过判断是否计费,调价,清零等状态,来分别调用不同的子程序,使程序在设计之前,就有了很强的逻辑关系。
这些对应于硬件就是通过按下各个控制开关,来分别进行不同的动作,最后数码管根据输入的信息,来显示不同的数据信息,这就达到了软件控制硬件,同时输入信息控制输出信息的目的。
整个程序流程图如下:
N
Y
N
Y
N
Y
第二章仿真
1.打开Proteus软件。
2.选择file菜单下的opendesign选项,找到所需的元器件,元器件上单击右键选中,再单击左键对其进行命名和赋值,接着在编辑器左边的一栏中,找出并绘制设计所要的各种元器件,按照电路图连接后并保存。
3.将用keil编译产生的hex文件下载到单片机中:
双击51单片机,在对话框中把保存过的hex文件打开,再单击确定。
4.单击左下角运行按钮,进行软件仿真调试,直到出现正确的结果。
下图为软件的仿真窗口图:
仿真结果图:
第三章调试
调试流程图:
3.1焊接检测
(1)检测断路:
将万用表调到蜂鸣器档,分别用红黑表笔接触实物上连接的两点。
如果蜂鸣器发出清脆的蜂鸣的声音说明线路焊接良好,没有断路;如果蜂鸣器没有发出声音,先尝试多测2次,可能是表笔没有接触好接点,尝试多次后仍无声音,则该条线路需要重新焊接。
我首先测的是数码管,上拉电阻那一块,因为数码管脚复杂的原因,这部分电路焊的很杂。
通过测试后,均无断路。
然后测74ls245数码管驱动部分电路。
最复杂的测完之后,测试按键晶振电路那一块,发现提供脉冲按键没有和51芯片P3.4口焊接在一起。
其他电路没有问题。
(2)检测短路:
将万用表蜂鸣器档得红黑表笔分别接触电路不应连接的两点,如果蜂鸣器响则电路短路,否则,电路没有短路。
我仔细观察电路后,一一测试了焊锡靠的很近的地方,测试后,均无短路。
3.2硬件检测
在焊接电路前,首先要进行元器件的检测。
检测主要是测出各个元器件的型号。
对于数码管的检测在显示电路中已介绍。
识别电阻时可根据各环的数量级和色码表,判断电阻的阻值。
排阻是将多个电阻集中封装在一起,组合制成的。
排阻具有装配方便、安装密度高等优点。
常用排阻有A型和B型。
A型排阻的引脚总是奇数的。
它的左端有一个公共端(用白色的圆点表示),常见的排阻有4、7、8个电阻,所以引脚共有5或8或9个。
B型排阻的引脚总是偶数的。
它没有公共端,常见的排阻有4个电阻,所以引脚共有8个。
排阻的阻值读法如下:
“103”表示:
10kΩ,“510”表示:
51Ω。
以此类推。
对于集成芯片的检测,就是根据它的管脚图,来识别各个引脚,以方便焊接。
设计的过程中,对硬件的检测和对软件的测试都不能忽略,因为在系统的仿真过程中。
各元件都是理想的,而在设计实际电路时,就需要多方面考虑。
要先对元件进行检测,然后进行调试。
例如如果在设计中不加任何驱动,在仿真软件中仍然可以正常计价,但是在具体硬件焊接时,需要考虑电路的驱动能力。
在已经焊接好的电路板上,要对其各个元器件进行检查。
一般情况下,集成电路不会出现故障。
在本设计中采用了先焊接插槽的方法,这可以避免一些元件在焊接的过程中被烧坏。
另外在焊接数码管时,要先排线,再焊接以免线路混乱。
元件在选购时需要多备选元件,元件的型号较多,产品质量没有可靠保证,就避免不了我们买的元器件是损坏的,再加上焊接是在万能板上焊接的。
就有可能发生虚焊,短路等情况的发生。
所以,在焊接好每个元件后都要进行检测,以保证焊接无误。
焊接好电路板,把相应的芯片插到对应的插槽中,再检一次,看芯片是否与插槽接触良好。
驱动部分是检查74LS245与数码管和单片机接触的各个引脚,看是否焊接良好,另外要让芯片和插座有良好的接触。
显示部分检测的目的是看数码管是否能够正常显示。
如果不该亮的字段点亮,检测是因否有短路的情况;如果数码管不显示,说明位选端可能没有焊好;如果显示不够亮,则应该检查驱动电路。
晶振部分使用示波器查看波形。
如果出现看不到12MHZ的正弦波形的现象,说明此部分电路不正常。
(1)首先检测各部分硬件是否损坏:
51芯片,74245芯片,数码管能否正常亮。
检测后均正常。
上网查资料区分电解电容的正负极。
(2)检测电阻值是否正确:
从实验室拿了不同阻值的电阻,但为了以防万一,先用万用表的欧姆档测需要接入电路的各电阻阻值是否正确。
测试中发现有一包标为10k的电阻测得为1k,于是去实验室重新取了10k电阻。
(3)在仿真中,芯片的接地和VCC是不需要分别接电源和接地的。
但在实际电路焊接中需要给每个芯片接电源和接地。
3.3程序调试
全部测试后,数码管可以正常亮,但似乎有数字在闪,根本不能分辨究竟电路有没有工作。
有同学说可能是延时时间太长的原因。
于是上网查资料后得知:
延时时间太长,会使数码管闪;延时时间太短,会出现叠影现象。
在proteus仿真电路中将延时时间修改为很大观察结果,数码管示数的确有闪烁。
于是将51芯片拆下来,修改程序,将延时时间改小。
重新生成hex文件,下载到51芯片中,插在电路中。
通电后,数码管终于可以正常显示了。
整个电路调试成功。
第四章结论
在本次设计中,我采用AT89S52芯片(实际电路)为核心器件,设计出了简单的出租车计价器,能够实现显示总金额和总里程,按键控制清零。
选题后,我便开始复习单片机方面的知识,也查阅、搜索了很多相关资料,进行总体设计与具体设计,同时也学习仿真软件Protues和编程软件KeiC。
由于以前都采用汇编语言实现编程,对用C语言来实现单片机的编程不太习惯,花费了一些时间来熟悉C语言的编程。
在设计开始,要形成流程图,它可以使设计有一定的逻辑性与严密性,使得设计思路明确。
采用模块化的设计思想很重要,它方便编写、修改与调试,另外加上必要的注释,便于交流与理解。
经过细心的电路焊接和后期的思考调试,最终实现了预期的功能:
利用按键代替霍尔传感器形成脉冲,给单片机的P3.4口,经过执行程序后在数码管上显示总金额和里程数。
前三公里10元,超过3公里,每公里2元。
而等待每15min加2元的程序编程不会。
算法为:
M=10+2*(k-3)
本次设计还有很多不足。
例如脉冲部分如果用霍尔传感器效果会更好。
程序编程还需要很大的改进,因为本人能力还不够,等待15min加2元得程序不会编写,使这次课设有点遗憾。
此外,出租车计价器还可以有很多功能的延伸和丰富,例如显示模块可以利用ds1302芯片在不计费的情况下作为电子时钟使用;可以增加语音模块播报路程金额信息等。
通过本次课设,认识到自身的很多不足,激励我以后一定要认真学习专业知识,熟悉应用他们,变成自身的一种能力。
第五章心得体会与建议
这次课程设计完成后,体会颇多,在学与做的过程中,取长补短,不断学习新的知识,吸取经验,达到进步的目的。
通过自身的努力以及相关图书资料的帮助,逐渐熟悉了KEIL、PROTEUS和C语言等软件的使用以及硬件焊接与检测过程中的一些小技巧。
本