《---出租车计费系统(13页).doc》由会员分享,可在线阅读,更多相关《---出租车计费系统(13页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-出租车计费系统计科151李帅国学号:201508020114(一)绪论: 一.单片机是种可通过编程和控制的微处理器,虽然其自身不能够单独用在某项工程或产品上,但当其与外围数字器件和模拟器件结合时便可发挥强大的功能。 二.单片机区别和应用如下: 1. 工业自动化。如数据采集、测控技术。2. 智能仪器仪表。如数字示波器、数字信号源、感应电流表等。3. 消费类电子产品。如空调机、微波炉、IC卡、汽车电子设备等。 4. 通信方面。如调制解调器、程控交换技术等。5. 武器装备。如飞机、军舰、导弹、鱼雷制导、智能武器等。 三.我们作为与自动化技术和电子密切相关的理工科学生,掌握单片机是最简单也最基础的要
2、求。为了进一步丰富和巩固单片机知识,也为了能更好的联系实际应用,本次课程设计选择了基于单片机AT89S52控制的出租车计费器,并力求能做出实物。 鉴于电子技术、计算机技术以及各种更先进的仿真软件的出现,使用高级语言如C代替汇编语言进行编程和控制已成为现实,也成为一种发展趋势。单片机C语言编程相对于MC51汇编语言编程有如下优点: 1. 对单片机的指令系统不需要有很深的理解就可以编程操作单片机。 2. 寄存器分配、不同存储器的寻址及数据类型等细节完全由编辑器自动处理。 3. 程序有规范的结构,可分为不同的函数,可使程序结构化。 4. 库中包括许多标准子程序,具有较强的处理能力,使用方便。 5.
3、具有方便的模块化编程技术,使已编好的程序便于移植,可极大缩短开发时间,增加程序的可读性和可维护性。 四单片机最小系统单元 主控机系统采用STC公司生产的 STC89C52单片机,它含有512 字节数据存储器RAM,内置8K 的电可擦除FLASH ROM,可重复编程,大小满足主控机软件系统设计,所以不必再扩展程序存储器。芯片外围电路最高可接入40MHZ的晶振(AT单片机数值一般为24MHZ)。复位电路和晶振电路,以及P0口接入的10K的上拉电阻便构成了STC89C52 单片机工作所需的最简外围电路电路. (二)需求分析: 一.功能要求 : 1. 设计一个出租车计费器,并利用霍尔传感器和单片机内集
4、成的计数器测试出出租车运行里程。 2. 要求单价可调,里程精确到0.1公里,并要求对等待时间进行计时。 3. 利用I2C总线通过EEPROM对存储空间进行扩展,使其具备掉电存储功能。 二.目的: 1.事实上,当今许多硬件的开发都已开始用C语言编程,如各种单片机、DSP、ARM等,用C语言进行工业控制也已成为一种趋势,为了更好的适应当今社会形势,为了更好的面对挑战、把握机遇,此次毕业设计决定尝试用C语言编程完成。也希望能在进一步熟悉单片机控制的同时,对数字电子技术、模拟电子技术、计算控制技术以及常用外围芯片有更深层次的了解,提高自己的综合能力。 综上:基于单片机AT89S52设计的出租车计费器不
5、仅可方便的用软件代替硬件,降低成本,具备一般计费器的计算里程和显示总金额的功能,还具备了掉电保持,白天、夜晚单价切换,并且还可很方便的扩展为速度测试仪,具有很好市场前景。 (三)硬件设计:1.系统工作原理 1.1功能要求 出租车计费器是根据乘客乘坐汽车行驶距离和等候时间的多少进行计费的,并在行驶中同步显示本次消费、运行里程、运行单价以及等待时间等信息。从起步开始,当汽车行驶里程未满3公里时,均按起步价计算。超过3公里后,实现每1公里单价收费,中间遇到暂停时,计程数不再增加,开始计时收费,计程收费和计时收费的和便构成了一位乘客的车费。同时,白天和夜晚价格不同,可以进行切换。白天单价、夜晚单价、等
6、待单价和起步价格都可通过独立键盘进行调节。(默认起步价为5元/3公里,里程单价白天为2.5元/公里,夜晚为3.5元/公里,等待计时单价为1元/1分钟) 为提高计时、计费精度,确保乘客对自己消费的知情权,出租车计费器应做到里程数精确到0.1公里,同时为减少司机朋友来回调整单价以及停车后需重设单价的麻烦,计费器应具有掉电保持功能,即当重新启动后维持原有数值(包括总金额、等待时间、行驶里程、单价)不变,直至强制按下清零键,计费器显示起步价(刚起步时对应总金额)、运行单价,为下一次计费做准备。 1.2基本原理 计费器系统主要由五部分组成:分别为基于霍尔传感器A44E的里程检测单元、STC89C52单片
7、机、外扩串行EEPROM-AT24C02、独立键盘和LED显示。 霍尔传感器主要用于检测汽车行使的里程数,出租车车轮每旋转一周,霍尔传感器A44E便产生一相应的脉冲输出,并把该脉冲交由单片机进行处理,单片机则根据程序设定,通过计算脉冲个数换算出已行驶里程(里程=脉冲个数*出租车车轮周长),然后再根据从EEPROM-AT24C02中读取的单价等相关数据进行总的消费金额的。计算:当里程小于3公里时,总金额=起步价+等待时间*等待单价;当里程大于3公里时,总金额=起步价+(里程-3)*运行单价+等待时间*等待单价;计算好的金额、等待时间、里程和单价等数据信息都可实时地显示在数码管上。其中,等待时间可
8、根据霍尔传感器A44E是否有脉冲输出加以判断,如可设定等待时基为5s,即假如A44E在5s后仍无脉冲输出便认为进入等待时间,并由单片机STC89C52内部计时器对其进行计时。(四) .软件设计:1. 系统主程序 在主程序模块中,需要完成对各参量和接口的初始化、出租车起步价和单价的初始化以及中断、计算、循环等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计费等不同的操作。 当出租车运行后,就启动计费器,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。若已超过,则
9、根据里程值、每公里的单价值和起步价来计算出当前的总金额,并将结果存于总金额寄存器中;中途等待时,无脉冲输入,不产生中断,当时间超过等待设定值时,开始进行计时,并把等待金额加到总金额里,然后将总金额、里程、等待时间和单价送数码管显示出来。程序流程如图所示。2.计算程序 15 序中,里程变量加1,总金额根据此时所设单价做出相应的变化。里程中断子程序如图3-2所示。 INT0 计数达到500? 增加1公里 调用价格子程序 达到最大里程?返回 N N Y 开始 Y 图3-2 里程中断服务子程序 3.3 中途等待中断程序 在中途等待中断程序中,定时器1每50ms计一次数,每计够100次(5sec),便将
10、当前里程值送入某个缓存变量,与前一个5秒的值进行比较,如果两者相同,则表明霍尔传感器没有输出信号,认为出租车停了下来,进入等待计时,计时中间变量dd自加1,计够12次为一分钟,dd自清零,同时根据所设的等待单价刷新总金额。计数初值可有以下公式获得: X=(65536-t)*11.0592*106/12; TH=X/256; TL=X%256; 其中:X表示计数初值,TH、TL分别为16位计数器高8位和低8位应装入的初值。3. 显示程序: 由于8位数码管所有段选皆有8位的P0口进行控制,因此,在每一瞬间,8位LED会显示同一个数字。要想每位显示不同的字符,就必须采用动态扫描的方法轮流点亮各位LED,即在每一时刻只使某一位显示字符。在此瞬间,段选控制I/O口输出相应字符段选码(字符码),而位选则控制I/O口在该显示的位送入选通电平,以保证该位显示显示相应字符。如此循环操作,使每位分时显示该位应该显示的字符 7 。 在本次设计中显示程序利用延时程序,每隔5ms刷新一次,相应的数码管点亮,显示一位数据,利用主函数内的循环,实现动态扫描显示,同时根据数码管余辉和人眼暂留现象,给人看上去每个数码管总是在亮,以实现动态显示。2016年6月第 13 页-