出租车计价器(单片机c语言)
基于C语言的出租车计价器程序设计

目录1 前言 (3)2 系统设计方案 (4)2.1 系统的设计需求 (4)2.2 系统的工作原理 (4)3 系统硬件设计 (5)3.1 单片机介绍 (5)3.2 硬件组成 (8)4 系统软件设计 (12)5 仿真调试 (14)6 结论 (16)7 参考文献 (178)8 心得体会及致谢 (20)附录A 设计总图 (224)附录B 源程序 (235)1 前言随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注[1]。
相对于公共汽车拥挤与缓慢以及私家车高昂的费用,出租车无疑是一种低价高质的出行交通工具。
近年来越来越多的人为了出行方便舒适愿意选择使用出租车,出租车行业得以快速发展[2]。
出租车计价器是出租车营运收费的专用智能化仪表,随着电子技术的发展,出租车计价器的技术在不断进步和提高[3]。
最初的计价器计费模式较为单一,不便于在不同的运营环境下选取不同的计费模式。
考虑到出租车行驶可能会出现从市区行驶到郊区或者行驶到偏僻地区,郊区或偏僻区打车的人少的现象,司机空车行驶返回成本较高,这时需要乘客为空车返回的路程承担一定的费用,这就需要区分单程/往返不同计价模式。
“单程”模式是指目的地在郊区或者比较偏僻的地方,到达目的地后打车的人比较少,需要乘客乘客承担一定的空车返回的费用;“往返”模式是指目的地在市区,到达目的地后还会有乘客乘车返回,这种情况下司机不需要空车返回,乘客不需要承担回程费用。
考虑到夜晚时出租车的灯光需要消耗能源以及司机夜间服务比白天较为辛苦,所以一般夜晚出租车的价格需要比白天高一点。
早期的出租车计价器均采用模拟电路和数字电路设计。
计价器整体电路的规模较大,需要器件多,容易出故障,难调试。
和模拟电路和数字电路设计相比而言,基于单片机进行设计的计价器,用较少的硬件和适当的软件相互配合就可以很容易的实现设计需求,硬件电路简单,稳定性好,灵活性强[4],通过软件编程就可以实现计费模式的切换。
c语言出租车计费

c语言出租车计费c语言出租车计费已知某城市普通出租车收费标准为:起步里程为3公里,起步费为8元,10公里以内超过起步里程的部分,每公里加收2元,超过10公里以上的部分加收50%的回空补贴费,即每公里3元。
出租车营运过程中,因堵车和乘客要求临时停车等客的,按每5分钟加收2元计算,不足5分钟的不计费。
从键盘任意输入行驶里程(精确到0.1公里)和等待时间(精确到分钟),请编程计算并输出乘客应支付的车费,对结果进行四舍五入,精确到元。
输入提示信息:"Input distance and time:"输入格式:用逗号分隔的两个数字,第一个表示距离、第二个表示时间:"%f,%d"输出格式:"fee = %.0f\n" (注意:等号的两边各有一个空格)#includeint main(void){int start_money = 8, less_than_10_km_per_money = 2, beyond_10_km_extra_money = 1, wait_5_min_money = 2,real_wait_time;float start_distense = 3, real_distense ,real_money=0;printf("Input distance and time(eg.3.5,15):");scanf("%f,%d",ℜ_distense,ℜ_wait_time);real_money = start_money;real_money += real_distense > start_distense ? (real_distense - start_distense) * less_than_10_km_per_money : 0 ;real_money += real_distense > 10 ? (real_distense - 10) * beyond_10_km_extra_money : 0 ;real_money += real_wait_time / 5 > 0 ? real_wait_time / 5 *wait_5_min_money : 0 ;real_money = (int)(real_money + 0.5);printf("fee = %.0f\n",real_money);return 0;}。
基于单片机AT89C51的出租车计价器的设计ppt课件

分主程序、掉电
IO端口,及其控制
存储子程序、显
的灵活性ห้องสมุดไป่ตู้实现基
示子程序、键盘
+ 本的里程计价功能
控制子程序、里
和价格调节、显示
程计数子程序、
= 出租车 计价器
功能。主芯片采用
延时子程序六大
AT89C51,加上相
模块,采用C语言
应的外围电路。
实现。
9
硬件设计部分
10
时钟电路 键盘控制 复位电路
AT89C51
基于单片机的出租车计价器的设计
指导老师:胡 庆 学生姓名:钟华民 班 级:电信1班 学 号:200810312109
1
设计的背景 功能设定 设计方案 硬件设计部分 软件设计部分 测试、仿真
2
设计的背景
3
4
很一重个要 5
功能设定
6
7
设计方案
8
硬
软
件
件
采用单片机控制,
软件设计主要可
利用单片机丰富的
显示电路 掉电存储 里程模拟
电源
11
时钟电路 键盘控制 复位电路
AT89C51
显示电路 掉电存储 里程模拟
12
软件设计部分
13
主程序 显示子程序 里程计数子程序 掉电存储子程序 键盘控制子程序(中断) 延时子程序
14
测试、仿真
15
16
17
出租车计价器(单片机c语言)

分类号编号毕业设计题目:基于单片机的出租车计价器的设计——电子设计系别信息工程学院专业电子信息工程姓名学号2010年6月1 日学院毕业设计任务书设计题目:基于单片机的出租车计价器的设计——硬件部分专业:电子信息工程班级学号:姓名:指导教师:设计期限:2011年3月1日开始2011年6月1日结束院、系:北京信息工程学院2011年3 月1 日一、设计目的通过毕业设计使学生了解和掌握单片机应用技术;了解和掌握C语言的程序设计同硬件电路的结合;熟练运用proteus,keilC等软件的操作;了解和掌握单片机硬件电路的焊接和调试;了解和掌握掉电存储芯片AT24C02、霍尔传感器A44E、数码管、驱动芯片74LS245等外部接口芯片器件的应用。
二、主要设计内容实现出租车行驶里程和总金额的显示,预设起步价和起步公里数;实现清零、复位和掉电保护功能;实现对单价的调整。
三、重点研究问题(1)按下启动按键,显示起步里程与起步价。
(2)按模拟传感器信号的按键,显示行驶里程与总金额。
(3)按键控制清零、复位、掉电保护、调整预设单价。
(4)在软件中实现起步价,单价。
四、主要技术指标(1)数码管显示起步里程、单价,总里程、总金额。
(2)用按键控制清零、复位、掉电保护、调整预设单价。
五、设计成果要求(1)源程序通过编译、运行(2)软件烧录单片机硬件进行调试,运行(3)实现所述功能(4)电路板焊接、检测(5)最终提交软硬件、设计说明书、外文翻译、毕业设计说明书等六、其它参考文献:[1] 谭浩强.C程序设计(第二版).清华大学出版社.2003[2]潘永雄.新编单片机原理与应用.西安电子科技大学出版社.2003设计开题报告2011年3 月15日摘要现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。
而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。
C语言出租车计价器课程设计报告书

出租车计价器课程设计目录前言1、系统工作原理1.1 功能说明1.2 基本原理2、硬件设计2.1 单片机最小系统单元2.2 A44E霍尔传感器检测单元2.3 AT24C01存储单元2.4 键盘调整单元2.5 显示单元3、软件设计3.1 系统主程序3.2 中断程序3.2.1 里程计数中断程序3.2.2 中途等待中断程序3.3 计算程序3.4 显示程序3.5 键盘程序4、总结参考文献附录A 系统原理图附录B 系统源程序前言随着出租车行业的发展,出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。
而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。
而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。
本设计采用AT89S52单片机为主控器,以A44E霍尔传感器测距,实现对出租车的多功能的计价设计,并采用AT24C01实现在系统掉电的时候保存单价等信息,输出采用8段数码显示管。
本电路设计的计价器不但能实现基本的计价,而且还能根据白天,黑夜和中途等待来调节单价。
第一章系统工作原理1.1 功能说明出租车计价器根据乘客乘坐汽车行驶距离和等候时间的多少进行计价,并在行程中同步显示车费值。
从起步价开始,当汽车程行驶未满3公里时,均按起步价计算。
过3公里后,实现每1公里单价收费,中间遇暂停时,计程数不再增加,开始计时收费,测距收费和测时收费的和便构成了一位乘客的车费。
同时,白天和夜晚价格不同,可以进行切换。
白天单价、夜晚单价、等待单价和起步价格都可通过独立键盘进行调节。
(默认起步价为5元/3公里,里程单价白天为1.5元/公里,夜晚为1.8元/公里,等待计时单价为0.5元/5分钟)1.2 基本原理计数器系统主要由五部分组成:A44E霍尔传感器、AT89S52单片机、独立键盘、EEPROM AT24C01和显示数码管。
基于单片机的出租车计价器的设计

基于单片机的出租车计价器的设计一、设计目标:设计一个基于单片机的出租车计价器,能够准确计算乘客的乘车距离和费用,并能显示当前的计价信息。
二、设计原理:1. 距离测量:使用速度传感器和车轮直径来测量出租车行驶的距离。
2. 费用计算:根据距离和预设的计价规则,使用单片机进行费用计算。
3. 显示:使用LCD显示屏显示当前的计价信息和距离。
三、硬件设计:1. 单片机:选择合适的单片机,如ATmega8,作为主控制器。
2. 速度传感器:选择合适的速度传感器,如霍尔传感器,用于测量车轮转速。
3. LCD显示屏:选择合适的LCD显示屏,如16x2字符LCD,用于显示计价信息和距离。
4. 按键开关:设计合适的按键开关,用于启动计价器和调整设置。
四、软件设计:1. 初始化设置:在计价器启动时,进行LCD显示屏和速度传感器的初始化设置。
2. 距离测量:通过速度传感器读取车轮转速,根据车轮直径计算出租车行驶的距离。
3. 费用计算:根据距离和预设的计价规则,使用单片机进行费用计算,并将计算结果显示在LCD上。
4. 设置调整:设计按键开关用于调整计价规则和费率设置。
5. 实时显示:将计价信息和距离实时显示在LCD上,方便乘客查看。
五、测试和验证:进行功能测试和实地验证,确保计价器的准确性和稳定性。
包括距离测量的准确性、费用计算的准确性以及LCD显示的正确性。
六、优化和改进:根据测试结果和用户反馈,对计价器进行优化和改进,提高其性能和用户体验。
总结:基于单片机的出租车计价器是一个实用的设计,能够帮助出租车司机和乘客准确计算乘车距离和费用。
通过合理的硬件设计和软件编程,可以实现距离测量、费用计算和实时显示等功能。
在实际使用中,需要进行充分的测试和验证,以确保计价器的准确性和稳定性。
通过不断优化和改进,可以提高计价器的性能和用户体验,满足用户的需求。
基于单片机出租车计价器课题设计(c语言编写)

单片机系统课程设计报告完成日期:2010年12月28日系:电子信息工程系专业:通信工程班级:071班设计题目:出租车计价器学生姓名:谢明七王勉指导教师:董玉华、许爽目录一、设计任务和性能指标 (2)1.1设计任务 (2)1.2性能指标 (2)二、设计方案 (3)2.1任务分析 (3)2.2系统设计 (4)三系统硬件设计 (6)3.1电源电路 (6)3.2单片机的最小系统 (7)3.3 DS1302时钟电路 (8)3.4显示电路的设计 (9)3.5按键控制的设计 (10)3.7复位电路 (12)四、系统软件设计 (13)4.1主程序设计 (13)4.2 子程序设计 (14)4.2.1 DS1302子程序 (14)4.2.1 DS1302子程序流程图 (14)4.2.2 显示子程序 (16)4.2.2 显示子程序流程图 (18)4.3 修改时间子程序 (19)五、调试及性能分析 (20)5.1调试步骤 (20)5.1.1硬件调试 (20)5.1.2软件调试: (20)5.2性能分析 (20)六、心得体会 (22)七、参考文献 (23)八、附录 (24)附录1、程序清单 (24)附录2 系统硬件电路图 (34)一、设计任务和性能指标1.1设计任务出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。
它关系着交易双方的利益。
具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。
出租车计价器的主要功能是计价显示、时钟显示、根据白天、黑夜、途中等待来调节营运参数、计量数据查询等。
要求用Protel 画出系统的电路原理图(要求以最少组件,实现系统设计所要求的功能),印刷电路板(要求布局合理,线路清晰),绘出程序流程图,并给出程序清单(要求思路清晰,尽量简洁,主程序和子程序分开,使程序有较强的可读性)。
1.2性能指标1.不同情况具有不同收费标准:白天、晚上、途中等待(>10min开始收费);2.数据输出:单价输出、路程输出、总金额输出;3.按键:启动计时开关、数据显示切换、白天/晚上切换、复位;4.能手动进行修改单价,但单价设定需密码进入。
单片机课程设计(999999显示与出租车计费器,包含汇编与C语言)

湖南工业大学课程设计资料袋电气与信息工程学院(系、部)2012~2013 学年第 2 学期课程名称单片机系统课程设计指导教师职称学生姓名甘显豪专业班级自动化1004 学号10401701305题目出租车计费系统成绩起止日期2012 年12月31日~2013 年1 月11 日目录清单湖南工业大学课程设计任务书电气与信息工程学院(系、部)自动化专业1004 班级课程名称:单片机系统课程设计设计题目:出租车计费系统完成期限:自2012 年12月31日至2013 年 1 月11 日共 2 周指导教师(签字):年月日系(教研室)主任(签字):年月日附件三(单片机应用系统)设计说明书(题目)出租车计费系统起止日期:2012 年12 月31 日至2013 年 1 月11日学生姓名甘显豪班级自动化1004学号10401701305成绩指导教师(签字)电气与信息工程学院2012年12 月31 日一、设计任务:1.1 外部脉冲自动计数,自动显示。
1.1.1设计一个255计数器:0-255计数,计满后自动清0,重新计数(在数码管中显示)。
1.1.2设计一个999999计数器:0-999999计数,计满后自动清0,重新计数(在数码管中显示)。
1.2 设计一个出租车计费系统:起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m 刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示价钱(角,元,十元)二、设计原理及思路1.设计一个255计数器:0-255计数,计满后自动清0,重新计数(在数码管中显示)。
设计原理:这个用汇编和C语言都比较简单。
首先我确定用的是T0(TMOD=0x06)定时计数器,用查询计数模式,工作方式2(8位,可自动重新装初值),总中断不用开,赋初值255,来一个脉冲直接溢出,只要判断溢出标志位TF0是否为1即可,TF0为1则说明溢出,然后再用指令清0就OK了,然后给数码管显示加1(当然这里要先判断是否加到了255,若>255就显示清0)。
单片机课程设计论文---出租车计价器

河南理工大学《单片机应用与仿真训练》设计报告基于单片机的出租车计价器的设计摘要本设计采用AT89S52单片机为主控器,并用霍尔传感器检测电机转盘转动模拟车速,实现对出租车的多功能的计价设计,输出采用8段数码显示管。
本电路设计的计价器可以实现要单程,往返和中途等待来调节计费,并且能够记录等待时间。
出租车计价是根据车所行驶的路程以及乘客乘车的方式综合决定的。
出租车行驶总路程可以通过车轮的周长乘车轮旋转圈数得到。
即可计算得到车轮旋转几周出租车能行驶一公里的路程。
使用霍尔传感器方便地计量车轮旋转的圈数。
输出的脉冲信号被接入到AT89S52单片机系统中,通过计算接收到的脉冲个数,计算出当前所行驶的路程,并且可以计算实时的速度,在速度低于5公里每小时是进入等待计费。
于此同时,根据不同的收费标准,通过选择相应的起步价、单价等收费标准进行计算。
通过键盘能够实现往返设置,启动、暂停、停止计价器以及切换显示当前的行驶里程和需支付的车费。
本设计硬件电路总体可以分为五个单元:单片机最小系统单元,指示灯电路单元,按键电路单元,路程时间与金额显示单元,转速信号接收单元。
软件系统可以大致分为五个大的模块为:总初始化模块,按键扫描模块,中断与定时模块,数据计算模块,数码管显示模块。
其中,键盘扫描和数码管显示采用查询方式,转速信号接收与等待记时采用中断方式。
这些软硬件系统构成了最终的设计。
关键词单片机霍尔传感器出租车计价器摘要...........................................................................................................- 1 -1概述................................................................................................................- 3 -1.1设计目的、意义 .. (3)1.2AT89S52单片机功能简介 (3)2.系统总体方案设计及硬件设计......................................................................- 5 -2.1设计要求 .. (5)2.2设计参数 (5)2.3方案的选取 (5)2.4硬件设计 (6)2.4.1 AT89S52单片机及最小系统..................................................................- 6 -2.4.2 测距单元.................................................................................................- 8 -2.4.3 显示单元.............................................................................................. - 10 -2.4.4键盘与指示单元................................................................................... - 11 -3软件设计 ...................................................................................................... - 12 -3.1总体流程 . (12)3.2计算模块 (12)3.3键盘扫描 (13)3.4显示程序 (13)4 PROTEUS软件仿真...................................................................................... - 14 -5课程设计体会............................................................................................... - 14 -参考文献......................................................................................................... - 16 -附1:源程序代码 ........................................................................................... - 17 -附2:系统原理图 ........................................................................................... - 31 -1概述1.1 设计目的、意义租车计价器技术也在不断进步和提高。
本科毕业设计---用单片机stc89c52设计的出租车计价器

毕业设计论文用单片机STC89C52设计的出租车计价器的论文设计摘要随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展。
现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展有很好的前景。
尽管小城市尚未普及,但计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。
出租车计价器是单片机的一种典型应用。
基于单片机的计价器是由单片机和外部电路组成。
包括检测模块,控制模块,人机模块。
里程检测模块由A44E构成,控制模块包括STC89C52单片机和AT24C02,人机模块包括独立键盘和LED动态显示。
系统性能指标1.设定价格;2.显示当前单价、行驶里程和总金额;3.里程精确到0.1公里。
通过多次调试系统性能达到设计要求。
关键词:STC89C52,霍尔传感器A44E ,I2C总线,动态显示Design of Taximeter Based on STC89C52ABSTRACTWith the rapid development of city constriction, the taxi industry which symbolizes the cityscape also has an accelerated progress. Nowadays the automatic taximeter has been widely used in taxi industry in many cites. Therefore, the development of automatic taximeter is doomed. Although automatic taximeter is not spread in some towns, there is no doubt that it would be popularized. Thus, in future the business of automatic taximeter is still potential.One typical application of single chip computer is automatic taximeter. The hardware of this design is composed of single chip computer and peripheral circuits which consist of Detection Unit, Processing Unit and Human Computer Interaction Unit. The Detection Unit is based on Hall-effect sensor. The Processing Unit contains STC89C52 and AT24C02. Human Computer Interaction Unit is composed of keyboard and LED.The function of this system includes as follows:1.Set the unit price;2.Display the unit price, total amount and mileage.3.Accuracy: 0.1km.After repeatedly debugging, the performance of this system is reached the design requirements.KEY WORDS: STC89C52, Hall-effect sensor, A44E, I2C Bus, Dynamic display目录前言 (1)第1章系统工作原理 (3)1.1 功能要求 (3)1.2 基本原理 (3)第2章硬件设计 (5)2.1 单片机最小系统单元 (5)2.2 霍尔传感器单元 (6)2.3 掉电存储单元 (8)2.4 键盘调整单元 (9)2.5 显示单元 (10)第3章软件设计 (14)3.1 系统主程序 (14)3.2 里程计数中断程序 (15)3.3 中途等待中断程序 (15)3.4 计算程序 (17)3.5 显示程序 (17)3.6 键盘程序 (18)第4章调试改进过程及运行结果分析 (21)4.1 动态扫描的调试和分析 (21)4.2 AT24C02的编程与调试 (21)4.3 按键查询功能的实现 (21)4.4 计算程序的分析与设计 (22)4.5 结果分析与性能改进 (23)4.6 计价器系统的仿真 (23)结论 (26)谢辞 (27)参考文献 (28)附录A 系统原理图 (30)附录B 仿真图PCB板 (32)附录C 系统源程序 (34)外文资料翻译 (57)前言单片机是一种可通过编程控制的微处理器,虽其自身不能单独用在某项工程或产品上,但当其与外围数字器件和模拟器件结合时便可发挥强大的功能,现在单片机已广泛应用于众多领域。
基于单片机的出租车计价系统的设计

基于单片机的出租车计价系统的设计随着经济的高速发展,交通系统的完善出租车计价器的应用越来越广泛。
计价器计价准确与否,直接关系到司机和乘客的经济利益。
使用单片机实现出租车计价系统,是对单片机应用的深入学习。
本系统将会提高我们在C语言编写程序的能力有所提高,这里主要是以AT89C52单片机为核心控制器,单片机有着丰富的I/O端。
本文基于STC89C52单片机为系统的控制中心,利用传感器测量路程,设计了出租车计价器,具有自动计程、计价显示时间、调节起步价等功能。
对其进行了硬件设计,硬件设计包括复位电路,复位电路是单片机的初始化操作,除了正常的初始化外,为摆脱困境,通过复位电路可以重新开始。
晶振电路、时钟电路,时钟电路作为系统的时钟源,具有较高的准确性。
按键电路,通过按键可以调整起步价,里程数。
通过按键模拟出租车的运行,暂停,停止。
显示电路,上电时LCD1602液晶显示屏显示最初的起步价,里程收费,当前时间。
然后采用C语言进行了软件设计,再通过软件设计接口芯片和参数的初始化按要求写入程序。
通过软硬件结合进行仿真,仿真结果表明此设计可以实现路程计价功能和价格调节、时钟显示功能。
关键词出租车计价器;89C52单片机;液晶显示器;硬件设计;软件设计;仿真0 引言随着科技和时代的进步,出租车在城市交通中发挥的作用越来越重要,可以说出租车行业的发展速度是迅速的,无论是从维护乘客以及司机的利益来说,还是从规范出租车行业的制度上来说,性能优异的出租车计价器对整个出租车行业的良性循环发展至关重要。
出租车行业是从1980年开始兴起的,属于新兴行业,重庆市起重机厂是中国第一家生产计价器企业。
在国内,最早的计价器最开始使用的是机械齿轮结构,但其实早期的计价器就是一个里程表,它仅仅只有计算里程功能。
在国内,机械齿轮结构是最早的计价器使用的结构,但其实早期的计价器其实就是一个里程表,它仅有计程功能。
仅仅能显示出租车行驶了的路程,不能准确的显示出更多的其他信息。
基于单片机的出租车计费(c语言)

基于单片机的出租车计费(c语言)基于proteus仿真一.设计要求:1.用单片机AT89c51实现出租车计费器的设计。
2.出租车起步开始计程和计费,计程系统按实际公里数计程,计费系统首先显示起步价(如5.0),车行驶2km以内,只收起步价5元。
3.出租车行驶超过2km后,按每公里1.8元在5.0元的基础上增加。
4.出租车达到目的地后,(用一个按钮)计程和计费数据清零,为下一次计费开始。
5.出租车行驶仿真:把信号发生器的输出接到单片机外部中断上,设置信号发生器不同的频率输出,分别表示速度的快慢。
6.每一个脉冲表示轮胎转一圈,目前出租车轮胎周长为1.83米。
8.运行时间显示(时、分、秒),每一次起步时清零9.出租车行驶超过10km后(或超过20元路费),每公里加收50%的车费,即车费变为每公里2.7元。
10.行驶速度计算11.参数设置:可以修改轮胎周长,修改起步价,修改每公里单价等。
二.设计仿真proteus三.设计程序#include<reg51.h>unsignedchar d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};//段选unsigned char f=0x00,y=0x00,k=0x00,m=0x00,z=0x00,q=0x00,w=0x00,s=0x00;//定义变量注意其范围(不然容易出现乱码)unsigned int x=0;#define uint unsigned int#define uchar unsigned charvoid delay(unsigned int i)//延时1ms{unsigned char j;while(i--){for(j=0;j<125;j++){;}}}void div2()//显示{ P2=0x80;P1=d[s/10];//计时小时P0=d[y/100];//计费百位delay(5);P2=0x40;P1=d[s%10];//小时个位P0=d[y%100/10];//计费十位delay(5);P2=0x20;P1=d[10];//显示“-”P0=d[y%10]&0x7f;//计费个位delay(5);P2=0x10;P1=d[f/10];//分钟P0=d[x*2/10000];//路程万位delay(5);P2=0x08;P1=d[f%10];P0=d[x*2%10000/1000];//路程千位delay(5);P2=0x04;P1=d[10];P0=d[x*2%1000/100];delay(5);P2=0x02;P1=d[w/10];//秒P0=d[x*2%100/10];delay(5);P2=0x01;P1=d[w%10];P0=d[x*2%10];delay(5);}void tt()//总费用函数{if(x*2<2000){y=5;}else if(x*2>2000){y=5+(x*2-2000)/1000*2;}else if(x*2>10000){y=21+(x*2-10000)/1000*3;}}void main()//开3个中断端{EX0=1;//开启外部中断源IT0=1;EX1=1;IT1=1;TH0=(65535-50000)/256;TL0=(65535-50000)%256;TMOD=0X01;ET0=1;TR0=1;//开启定时中断 EA=1;//开中断源while(1){div2();tt();}}void int1(void) interrupt 0 //信号中断服务程序{x++;}void int2() interrupt 2 //清零中断{w=0;f=0;s=0;x=0;y=0;EX0=0;ET0=0;}void int0() interrupt 1//计时中断服务程序{ ET0=0;TR0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;q++;if(q==20)//计数20恰好为1秒{q=0;w++;if(w==60)//秒到60{w=0;f++;if(f==60)//分到60{f=0;s++;if(s==12){s=0;}}}}ET0=1;}四.设计结果。
出租车计价器(单片机c语言)doc资料

出租车计价器(单片机c语言)摘要本电路以AT89S51单片机为中心,附加A44E霍尔传感器测距(本电路中用模拟开关替代),实现对出租车计价,采用AT24C02 实现在系统掉电的时候保存单价,输出采用8段数码显示管,显示行驶总里程和总金额。
模拟出租车计价器设计:进行里程显示,预设起步价和起步公里数;行程按全程收费,有复位功能和启动功能,启动后,开始计价。
我们采用单片机进行设计,可以用较少的硬件和适当的软件相互配合来实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能,应用前景广阔。
关键字:出租车计价器; AT89S51单片机; A44E霍尔传感器; 断电保存; 8段数码显示管.目录第 1章绪论 01.1 课题背景 01.2 主要设计内容及基本要求 0第2章系统硬件设计 (1)2.1硬件设计说明 (1)2.2 AT89S51单片机简介 (1)2.3 硬件电路设计 (2)2.4 硬件组成 (3)2.4.1 驱动电路 (3)2.4.2 显示电路 (4)2.4.3 复位电路 (5)2.4.4 掉电保护电路 (5)2.4.5 时钟电路 (6)2.4.6 按键电路 (6)第3章系统调试 (7)3.1 单片机仿真软件在线调试—PROTEUS (7)3.2 电路元件检测 (8)3.3 硬件检测 (8)附录1程序源代码 (12)附录2电路仿真图 (18)总结 (19)第 1章绪论1.1 课题背景我们知道,只要乘坐的出租车启动,随着行驶里程的增加,就会看到司机旁边的计价器里程数字显示的读数从零逐渐增大,而当行驶到某一值时(如2KM)计费数字显示开始从起步价(如4元)增加。
当乘客到站时,按下停止按键,计费数字显示总里程和总金额,它可以很直观的反映用户使用情况。
1.2 主要设计内容及基本要求利用AT89S51单片机,设计简单的出租车计价器。
在出租车计价器的总体设计中,我主要负责出租车计价器硬件设计。
其中主要的外围功能电路有:驱动电路,按键控制电路,掉电保护电路,时钟部分,数码管显示电路等。
C语言——7-18出租车计价

C语⾔——7-18出租车计价本题要求根据某城市普通出租车收费标准编写程序进⾏车费计算。
具体标准如下:起步⾥程为3公⾥,起步费10元;超起步⾥程后10公⾥内,每公⾥2元;超过10公⾥以上的部分加收50%的回空补贴费,即每公⾥3元;营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不⾜5分钟则不收费)。
输⼊格式:输⼊在⼀⾏中给出输⼊⾏驶⾥程(单位为公⾥,精确到⼩数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
输出格式:在⼀⾏中输出乘客应⽀付的车费(单位为元),结果四舍五⼊,保留到元。
输⼊样例1:2.6 2输出样例1:10输⼊样例2:5.1 4输出样例2:14输⼊样例3:12.5 9输出样例3:34#include<stdio.h>int main(){double b,c;int h,a;scanf("%lf %d",&b,&h);a=h/5;printf("%0.1f,%d\n",b,a);if(b<=3){c=10+a*2;}else if(b>3&&b<=10){c=10+(b-3)*2+a*2;}else if(b>10){c=10+14+(b-10)*3+a*2;}printf("%.0f\n",c);return0;}总结:注意①:四舍五⼊需要是浮点型;注意②范围要有等号。
单片机课程设计 出租车计价器

摘要出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。
而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。
而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。
本设计的是一个基于单片机AT89S52的出租车自动计费设计,附有复位电路,时钟电路,键盘电路等。
复位电路是单片机的初始化操作,除了正常的初始化外,为摆脱困境,通过复位电路可以重新开始。
时钟电路采用12MHz的晶振,作为系统的时钟源,具有较高的准确性。
在上电时LED数码管显示最初的起步价,里程收费,等待时间收费三种收费。
按暂停键,计价器可暂停计价,按查询键,在LED数码管上可以显示运行时等待的时间。
通过计算可以得出总共的费用和总的路程。
在这里主要是以AT89S52单片机为核心控制器,P0口、P2 口接两片四合一数码管,P1口接按键,通过按键输入。
关键词:单片机 AT89S52;LED数码管;出租车计费器;目录1 概述 (1)1.1 课题简介 (1)1.2 功能要求 (1)2 系统总体方案及硬件设计 (2)2.1 系统工作原理及总体方案 (2)2.2 单片机最小系统单元 (3)2.3 霍尔传感器检测单元 (3)2.4 键盘调整单元 (5)2.5 显示单元 (5)3 软件设计 (7)3.1系统主程序 (7)3.2 按键扫描程序 (8)3.3 中断程序 (9)3.4 计算程序 (10)3.5 显示程序 (10)4 实验仿真 (12)4.1 Proteus介绍 (12)4.2 调试与测试 (12)4.3 里程计价测试 (12)5 课程设计体会 (14)参考文献 (15)附1:系统原理图 (16)附2:源程序代码 (16)1 概述1.1 课题简介出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。
单片机出租车计价器课程设计

单片机出租车计价器课程设计1. 引言出租车计价器是一种用于计算乘客乘坐出租车费用的设备。
它基于单片机技术,通过对里程和时间进行测量,并根据预设的费率规则计算出乘客应支付的费用。
本文将介绍一个基于单片机的出租车计价器的课程设计方案。
2. 设计目标本次课程设计旨在培养学生对单片机应用的能力,同时提升学生对实时系统和算法设计的理解。
具体设计目标如下: - 掌握单片机编程技术,包括IO口操作、定时器和中断等。
- 熟悉实时系统设计方法,能够合理利用中断处理程序。
- 理解并能够应用合适的算法进行费率计算。
3. 设计方案3.1 硬件设计本次课程设计使用一块基于XX单片机的开发板作为硬件平台。
开发板上包含了所需的IO口、定时器和显示屏等外设。
3.1.1 输入部分输入部分主要包括里程和时间两个参数。
里程通过一个旋转编码器来测量,编码器输出脉冲信号,通过外部中断来捕获脉冲数量。
时间通过一个定时器来测量,定时器每秒触发一次中断。
3.1.2 显示部分显示部分使用一个液晶显示屏来显示计算结果。
液晶显示屏通过IO口和单片机进行连接,可以显示费用、里程和时间等信息。
3.2 软件设计软件设计主要包括中断处理程序和计费算法两部分。
3.2.1 中断处理程序中断处理程序主要用于捕获里程和时间的输入,并进行相应的处理。
当旋转编码器触发外部中断时,中断处理程序会读取编码器的状态并更新里程值。
当定时器触发中断时,中断处理程序会更新时间值。
3.2.2 计费算法计费算法根据预设的费率规则计算乘客应支付的费用。
一般而言,出租车计价规则包括起步价、里程单价和时间单价等参数。
根据这些参数和输入的里程和时间,计费算法可以准确地计算出乘客应支付的费用。
3.3 系统测试设计完成后,需要对系统进行测试以验证其功能正确性和稳定性。
测试可以分为硬件测试和软件测试两个部分。
3.3.1 硬件测试硬件测试主要包括对旋转编码器、定时器和液晶显示屏等外设的功能测试。
单片机出租车计价器课程设计报告

单片机原理及系统课程设计专业:自动化班级:动1102姓名:学号: 201108645指导教师:林海香兰州交通大学自动化与电气工程学院2014 年 1 月 17 日基于单片机的出租车计价系统设计1 设计目的,要求和设计方法1.1设计目的(1)学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调适能力,进一步提高综合运用所学知识和设计能力的的目的。
(2)掌握C语言程序设计方法。
(3)培养实践技能,提高分析和解决实际问题的能力,并具备一定程度的设计能力。
1.2基本设计要求本出租车自动计费,上电后显示最初的起步价,里程计费单价,等待时间计费单价,通过按键可以调节起步价,里程计费单价,等待时间计费单价。
同时具有运行,等待,暂停等状态,可以显示暂停的时间。
出租车停止后能够显示行驶的总费用。
1.3性能指标1、费用的计算是按行驶里程收费。
设起步价为7.00元。
2、当里程<3km时,按起价计算费用。
3、当里程>3km时,每公里按1.7元计费。
4、等待累计时间>2min时,按1.5元/min计费。
1.4显示功能1、显示行驶里程:用两位数字显示,显示方式为“XX”,单位为km。
计程范围0-99km,精确到1km。
2、显示等候时间:用两位数字显示,显示方式为“XX”,单位为min。
计时范围0-59min,精确到1min。
3、显示总费用:用四位数字显示,显示方式为“XXX.X”,单位为元。
计价范围0-999.9元,精确到0.1元。
1.3 设计方法本设计采用AT89C51单片机为主控器,并用开关或者频率信号发生器模拟车速,利用AT89C51的定时器工作在方式1下定时实现对出租车的计时及计价设计,输出采用LCD液晶显示屏显示。
2 设计方案及原理2.1 设计方案本设计,利用单片机丰富的端口和控制的灵活性,采用AT89C51单片机为主控器,并用开关或频率信号发生器模拟车速,通过石英振荡器,LCD液晶显示和发光二级管以及单片机内部程序构成完整的出租车计价系统,基本可以实现了按运行状态计价的功能,价格调整功能。
基于单片机的出租车计价器的设计

摘要随着经济的发展,以及城市的发展,带动了出租车行业的快速发展,使出租车成为我们日常生活中不可缺少的交通工具,了解和研究出租车上应用的计费原理及计费系统,对我们日常生活也有帮助。
而使用单片机实现出租车计价系统,是学习和深化单片机应用的较好途径。
本系统将会提高我们用C语言编写程序的能力、对C语言的实际应用有更深的了解,单片机应用系统设计综合能力的训练、培养我们分析问题和解决问题的能力。
对我们以后的工作招聘以及参加工作均有一定的帮助。
本设计的是一个基于单片机STC89C52的出租车自动计费设计,附有复位电路,时钟电路,键盘电路等。
复位电路是单片机的初始化操作,除了正常的初始化外,为摆脱困境,通过复位电路可以重新开始。
时钟电路采用12MHz的晶振,作为系统的时钟源,具有较高的准确性。
在上电时字符型液晶1602显示最初的起步价,里程收费,等待时间收费三种收费,通过按键可以调整起步价,里程收费,等待时间收费。
通过按键模拟出租车的运行,暂停,停止。
在1602液晶上可以显示运行的时间,运行时暂停的时间,通过计算可以得出总共的费用和总的路程。
【关键词】STC89C52 1602液晶出租车计费器目录1绪论 (1)1.1研究背景 (1)1.2研究意义 (1)1.3研究内容 (2)1.3.1 系统的主要功能 (2)1.3.2 方案论证与比较 (2)2系统总体设计 (4)2.1硬件设计 (4)2.2软件设计 (4)3硬件设计 (5)3.1 STC89C52单片机介绍 (5)3.2 单片机各引脚功能说明 (5)3.3 振荡电路设计 (7)3.4 复位电路设计 (8)3.5 键盘接口电路设计 (8)3.6 显示电路设计 (9)3.6.1 1602LCD的基本参数及引脚功能 (9)3.6.2 显示模块采用1602液晶显示接口电路 (10)4软件设计 (11)4.1 单片机资源使用 (11)4.2 单片机软件模块设计 (11)4.2.1 中断子函数 (11)4.2.2 判键子函数 (12)4.2.3 显示子程序 (13)4.3 总程序流程框图 (14)4.4. 使用软件proteus的介绍 (15)5系统测试 (16)5.1 计价器模式测试 (16)5.2 计价器计价参数测试 (17)5.3 计价器稳定性测试 (17)总结 (18)参考文献 (19)附录1 元件清单 (20)附录2 原理图 (21)附录3 单片机程序 (22)致谢................................................................. 错误!未定义书签。
单片机出租车计价器程序及原理图

#include <reg52.h>#include <absacc.h>#define uint unsigned int#define uchar unsigned char#define DISPON 0x3f //显示开#define DISPOFF 0x3e //显示关#define FIRSTROW 0xc0 //显示起始行设置1 1 L5 L4 L3 L2 L1 L0,在0到63行间选择#define SETY 0xb8 //Y方向,8页64行,1 0 1 1 1 P2 P1 P0,0到8页选择#define SETX 0x40 //X方向,半屏64列,0 1 C5 C4 C3 C2 C1 C0 ,0到63列选择/*P2+P0口16位编址,有效位是P2.3~P2.0,无关位用“1”表示P2.0--RS,P2.1--RW,P2.2--CS2,P2.3--CS1右屏命令和数据读写编址 CS2 CS1 RW RS*/#define LLCD_CMD_WR XBYTE[0xf4ff] //0 1 0 0#define LLCD_DAT_WR XBYTE[0xf5ff] //0 1 0 1#define LLCD_CMD_RD XBYTE[0xf6ff] //0 1 1 0#define LLCD_DAT_RD XBYTE[0xf7ff] //0 1 1 1/*左屏命令和数据读写编址*/#define RLCD_CMD_WR XBYTE[0xf8ff] //1 0 0 0#define RLCD_DAT_WR XBYTE[0xf9ff] //1 0 0 1#define RLCD_CMD_RD XBYTE[0xfaff] //1 0 1 0#define RLCD_DAT_RD XBYTE[0xfbff] //1 0 1 1/**********************数据坐标记录**************************左-路程:整数部分 x=9,y=1,小数部分 x=31,y=1左-路程费用:整数部分 x=9,y=3,小数部分 x=31,y=3总费用:整数部分-左:x=45,y=5路程单价:x=34,y=7右-时间:整数部分 x=20,y=1右-时间费用:整数部分 x=10,y=3,小数部分 x=32,y=3总费用:小数部分-右:x=2,y=5时间单价:x=44,y=7*************************************************************/#define L_Mile_X_Z 9#define L_Mile_X_D 30#define L_Mile_Y 1#define L_Cost_X_Z 9#define L_Cost_X_D 30#define L_Cost_Y 3#define L_Total_X 45#define L_Total_Y 5#define L_Unit_X 34#define L_Unit_Y 7#define R_Time_X 20#define R_Time_Y 1#define R_Cost_X_Z 10#define R_Cost_X_D 31#define R_Cost_Y 3#define R_Total_X 2#define R_Total_Y 5#define R_Unit_X 44#define R_Unit_Y 7sbit LED=P2^7 ;sbit START=P1^0;sbit STOP=P1^1;sbit CLEAR=P1^2;sbit MUINT_UP=P1^4;sbit MUINT_D=P1^5;sbit TUINT_UP=P1^6;sbit TUINT_D=P1^7;uchar Mile_Unit=4,Time_Unit=2;long time_cost,time_cost_Z,time_cost_D,time_con_s,time_con_m;long mile_cost,mile_cost_Z,mile_cost_D,mile_con_m,mile_con_km;long speed_con,speed_con_m,speed,speed_flag,cost_flag;long total_z=5,total_d;code char shu[10][6]={0x3E,0x41,0x41,0x41,0x3E,0x00, //00x00,0x42,0x7F,0x40,0x00,0x00, //10x42,0x61,0x51,0x49,0x46,0x00, //20x22,0x41,0x49,0x49,0x36,0x00, //30x38,0x24,0x22,0x7F,0x20,0x00, //40x27,0x45,0x45,0x45,0x39,0x00, //50x3E,0x45,0x45,0x45,0x38,0x00, //60x01,0x01,0x79,0x05,0x03,0x00, //70x36,0x49,0x49,0x49,0x36,0x00, //80x0E,0x51,0x51,0x51,0x3E,0x00, //9};/*************************初始化界面*****************************/code uchar logo[]={0xFF,0x07,0x03,0xE1,0x11,0x09,0x09,0x09,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x11,0xE1,0x03,0x07,0xFF,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x11,0xE1,0x03,0x07,0xFF, 0xFE,0x00,0x00,0xFF,0x00,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xFE,0x10,0x28,0x44,0x82,0x00,0xF8,0x08,0xF8,0x08,0xF8,0x00,0xFF,0x00,0x00,0xFF, 0xFF,0x00,0x00,0xFF,0x00,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x04, 0xF8,0x04,0xFE,0x00,0xF4,0x00,0xF8,0x08,0xF8,0x08,0xF8,0x00,0xFF,0x00,0x00,0xFE, 0xFE,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x02, 0x02,0x02,0x02,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x02,0x02, 0x02,0x02,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x00, 0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF, 0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x00, 0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0xFF,0x00,0x00,0xFE, 0xFE,0x00,0x00,0xFF,0x00,0xFC,0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x12,0x12,0x13,0x7E,0x13,0x12,0x12,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF, 0xFF,0x00,0x00,0xFF,0x00,0xFC,0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x12,0x12,0x13,0x7E,0x13,0x12,0x12,0x00,0x00,0x00,0xFF,0x00,0x00,0xFE, 0xFE,0x00,0x00,0x01,0x02,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05,0x05,0x04,0x05, 0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0xC5,0x24,0x14,0x14,0x14,0x15,0x15, 0x15,0x15,0x15,0x14,0x15,0x15,0x15,0x15,0x15,0x14,0x15,0x15,0x15,0x15,0x15,0x14, 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x12,0x11,0x10,0x10,0x1F, 0x1F,0x10,0x10,0x11,0x12,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x14, 0x15,0x15,0x15,0x15,0x15,0x14,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x15, 0x15,0x15,0x15,0x15,0x14,0x15,0x25,0xC5,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05, 0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x01,0x00,0x00,0xFE, 0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x7E,0x3C, 0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60, 0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x49,0x4A,0x4C, 0xF8,0x4C,0x4A,0x49,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x04,0x04,0x04,0x04, 0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x05,0x05, 0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x04,0xFC, 0xFC,0x04,0x05,0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x04,0x05,0x05, 0x05,0x05,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, 0x05,0x04,0x04,0x04,0x04,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE, 0xFE,0xE0,0xC0,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0x80,0x9E,0xA0, 0x20,0x9E,0x80,0xBC,0x82,0x82,0xBC,0x80,0x3D,0x80,0x84,0x9E,0xA4,0xA4,0x80,0xB6, 0x36,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x3E,0x41,0x41,0x41, 0x3E,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0xC0,0xE0,0xFF, 0xFF,0xE0,0xC0,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0x80,0x9E,0xA0, 0x20,0x9E,0x80,0xBC,0x82,0x82,0xBC,0x80,0x3D,0x80,0x84,0x9E,0xA4,0xA4,0x80,0xB6, 0x36,0x80,0x80,0x3E,0x41,0x41,0x41,0x3E,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0xC0,0xE0,0xFE, };/*************************************************************写命令*************************************************************/void lcd_cmd_wr(uchar cmdcode,uchar right){if(right)RLCD_CMD_WR=cmdcode;elseLLCD_CMD_WR=cmdcode;}/*************************************************************写数据*************************************************************/void lcd_data_wr(uchar dispdata,uchar right){if(right)RLCD_DAT_WR=dispdata;elseLLCD_DAT_WR=dispdata;}/*************************************************************数据清屏*************************************************************/void lcd_clr(void){uchar i,j;for(i=0;i<8;i++)lcd_cmd_wr(SETY+i,0);lcd_cmd_wr(SETX,0);lcd_cmd_wr(SETY+i,1);lcd_cmd_wr(SETX,1);for(j=0;j<64;j++){lcd_data_wr(0,0);lcd_data_wr(0,1);}}}/************************************************************* 写一个数字*************************************************************/ void lcd_shu_wr(uchar w,uchar x,uchar y,uchar shu_1){uchar i;lcd_cmd_wr(SETY+y,w);lcd_cmd_wr(SETX+x,w);for(i=0;i<6;i++)lcd_data_wr(shu[shu_1][i],w);}/************************************************************* 写一个三个数字*************************************************************/ void lcd_sanshu_wr(uchar w,uchar x,uchar y,uint str){uint bai,shi,ge;bai=str/100;shi=(str%100)/10;ge=str%10;lcd_shu_wr(w,x,y,bai);lcd_shu_wr(w,x+6,y,shi);lcd_shu_wr(w,x+12,y,ge);}/************************************************************* 写一贞128X64点的图片显示*************************************************************/ void lcd_bmp_wr(uchar *bmp){uchar i,j;for(i=0;i<8;i++)lcd_cmd_wr(SETY+i,0);lcd_cmd_wr(SETX,0);lcd_cmd_wr(SETY+i,1);lcd_cmd_wr(SETX,1);for(j=0;j<64;j++){lcd_data_wr(bmp[128*i+j],0);lcd_data_wr(bmp[128*i+j+64],1);}}}/************************************************************* 延时函数*************************************************************/ DelayNms(uint y){uint x;for(;y>0;y--)for(x=113;x>0;x--);}/************************************************************* LCD初始化*************************************************************/ void lcd_init(void){lcd_cmd_wr(DISPON,0);lcd_cmd_wr(FIRSTROW,0);lcd_cmd_wr(SETY,0);lcd_cmd_wr(SETX,0);lcd_cmd_wr(DISPON,1);lcd_cmd_wr(FIRSTROW,1);lcd_cmd_wr(SETY,1);lcd_cmd_wr(SETX,1);lcd_clr();DelayNms(500);lcd_bmp_wr(logo);//welcome_init();}/************************************************************** 初始化中断,定时器等**************************************************************/void interrput_init(){IT0=1; //外部中断0触发方式:边沿触发EX0=1; //开外部中断0ET0=1; //开定时器中断0ET1=1; //开定时器中断1//EA=1; //开部中断TMOD=0x11; //00010001TH0=(65535-50000)/256;TL0=(65535-50000)%256;TR0=1;TH1=(65535-50000)/256;TL1=(65535-50000)%256;TR1=0;}/**************************************************************显示数据**************************************************************/void display(){lcd_sanshu_wr(0,L_Mile_X_Z,L_Mile_Y,mile_con_km); //写行驶路程lcd_sanshu_wr(0,L_Mile_X_D,L_Mile_Y,mile_con_m);lcd_sanshu_wr(0,L_Cost_X_Z,L_Cost_Y,mile_cost_Z); //写路程费用lcd_sanshu_wr(0,L_Cost_X_D,L_Cost_Y,mile_cost_D);lcd_sanshu_wr(0,L_Total_X,L_Total_Y,total_z); //写总费用整数部分lcd_shu_wr(0,L_Unit_X,L_Unit_Y,Mile_Unit); //写路程单价lcd_sanshu_wr(1,R_Time_X,R_Time_Y,time_con_m); //写行驶时间lcd_sanshu_wr(1,R_Cost_X_Z,R_Cost_Y,time_cost_Z); //写时间费用lcd_shu_wr(1,R_Cost_X_D,R_Cost_Y,time_cost_D);lcd_sanshu_wr(1,R_Total_X,R_Total_Y,total_d); //写总费用小数部分lcd_shu_wr(1,R_Unit_X,R_Unit_Y,Time_Unit); //写时间单价}/*************************************************************键盘输入**************************************************************/void keyboard(){P1=0xff;if(P1!=0xff){DelayNms(1);if(P1!=0xff){if(!START) EA=1;if(!STOP) EA=0;if(!CLEAR){mile_con_km=0;mile_con_m=0;mile_cost_Z=0;mile_cost_D=0;total_z=5;time_con_m=0;time_cost_Z=0;time_cost_D=0;total_d=0;display();}if(!MUINT_UP){Mile_Unit++;while(!MUINT_UP);lcd_shu_wr(0,L_Unit_X,L_Unit_Y,Mile_Unit);//写路程单价}if(!MUINT_D){Mile_Unit--;while(!MUINT_D);lcd_shu_wr(0,L_Unit_X,L_Unit_Y,Mile_Unit);//写路程单价}if(!TUINT_UP){Time_Unit++;while(!TUINT_UP);lcd_shu_wr(1,R_Unit_X,R_Unit_Y,Time_Unit);//写时间单价}if(!TUINT_D){Time_Unit--;while(!TUINT_D);lcd_shu_wr(1,R_Unit_X,R_Unit_Y,Time_Unit);//写时间单价}}}}/**************************************************************测速**************************************************************/ void testspeed(){if(speed>=18){speed_flag=1;TR1=0;}else{speed_flag=0;TR1=1;}}/************************************************************** 主函数**************************************************************/ void main(){lcd_init();interrput_init();display();while(1){keyboard();testspeed();}}/************************************************************* 外部中断0服务程序测所走过的路程,并且测车速*************************************************************/ void Int0() interrupt 0{LED=!LED;speed_con_m++;if(speed_flag){mile_con_m++;if(mile_con_m==1000){mile_con_m=0;mile_con_km++;if(mile_con_km==1)cost_flag=1;}}}/************************************************************定时器0中断服务程序测速计时器*************************************************************/void timer0() interrupt 1{TH0=(65535-50000)/256; //50msTL0=(65535-50000)%256;speed_con++;if(speed_con%5==0) //0.25s测速一次{speed=speed_con_m*2;speed_con_m=0;}if(speed_con==20) ////1s刷新显示一次{speed_con=0;if(cost_flag){mile_cost_D=(mile_con_m*Mile_Unit)%1000; //计算路费用mile_cost_Z=(mile_con_km-1)*Mile_Unit;mile_cost_Z=mile_cost_Z+(mile_con_m*Mile_Unit)/1000;total_z=mile_cost_Z+time_cost_Z; //计算总费用total_z+=5;total_d=mile_cost_D+time_cost_D*100;total_z=total_z+total_d/1000;total_d=total_d%1000;}display();}}/*************************************************************定时器1中断服务程序按时间计费计时器*************************************************************/void timer1() interrupt 3{.TH1=(65535-50000)/256; //50ms计时TL1=(65535-50000)%256;time_con_s++;if(time_con_s==1200) //一分钟{time_con_s=0;time_con_m++;time_cost=time_con_m*Time_Unit; //计算时间费用time_cost_Z=time_cost/10;time_cost_D=time_cost%10;}}11 / 11。
基于单片机的出租车计价器设计20240525

基于单片机的出租车计价器设计20240525出租车计价器是一种用于计算乘客乘坐出租车所需支付费用的设备。
它可以根据时间和里程计算车费,并显示在计价器上供乘客查看。
本文将介绍基于单片机的出租车计价器的设计。
首先,我们需要使用一个单片机来控制计价器的运行。
单片机是一种集成电路,可以通过程序控制其输入和输出。
我们可以使用一些常见的单片机,如ATmega328P或PIC16F877A。
接下来,我们需要一些外部组件来实现计价器的功能。
这些组件包括LCD显示屏、按键、蜂鸣器和电子记忆器。
LCD显示屏用于显示车费、时间和里程等信息;按键用于设置起步价和每公里价格;蜂鸣器用于发出提醒声音;电子记忆器用于存储车费、时间和里程等信息,以便在断电后恢复运行。
计价器的设计包括以下几个部分:1.硬件设计:将LCD显示屏、按键、蜂鸣器和电子记忆器与单片机连接起来。
LCD显示屏通过并口或串口与单片机连接,按键通过输入引脚与单片机连接,蜂鸣器通过输出引脚与单片机连接,电子记忆器通过SPI或I2C总线与单片机连接。
2.软件设计:编写单片机的程序来实现计价器的功能。
程序应包括以下几个功能:-设置起步价和每公里价格:乘客可以通过按键设置起步价和每公里价格。
单片机将读取按键的状态,并将设置的值保存在RAM中。
-计算车费:根据时间和里程计算车费。
单片机将读取时间和里程,并使用保存在RAM中的起步价和每公里价格进行计算。
-显示车费:使用LCD显示屏显示计算得到的车费。
-提示声音:当计价器开始计费、结束计费或车费超过一定额度时,蜂鸣器将发出提醒声音。
-存储数据:将计费时间和里程等数据存储在电子记忆器中,以便在断电后恢复运行。
3.测试和调试:在设计完成后,需要对计价器进行测试和调试,确保其正常运行。
可以通过模拟输入数据并观察输出结果来进行测试。
通过以上的设计和实现,我们可以得到一个基于单片机的出租车计价器。
它可以准确计算乘客所需支付的车费,并通过LCD显示屏显示出来。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要本电路以AT89S51单片机为中心,附加A44E霍尔传感器测距(本电路中用模拟开关替代),实现对出租车计价,采用AT24C02 实现在系统掉电的时候保存单价,输出采用8段数码显示管,显示行驶总里程和总金额。
模拟出租车计价器设计:进行里程显示,预设起步价和起步公里数;行程按全程收费,有复位功能和启动功能,启动后,开始计价。
我们采用单片机进行设计,可以用较少的硬件和适当的软件相互配合来实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能,应用前景广阔。
关键字:出租车计价器; AT89S51单片机; A44E霍尔传感器; 断电保存; 8段数码显示管.目录第 1章绪论 (1)1.1 课题背景 (1)1.2 主要设计内容及基本要求 (1)第2章系统硬件设计 (2)2.1硬件设计说明 (2)2.2 AT89S51单片机简介 (2)2.3 硬件电路设计 (3)2.4 硬件组成 (3)2.4.1 驱动电路 (3)2.4.2 显示电路 (4)2.4.3 复位电路 (5)2.4.4 掉电保护电路 (5)2.4.5 时钟电路 (6)2.4.6 按键电路 (7)第3章系统调试 (8)3.1 单片机仿真软件在线调试—PROTEUS (8)3.2 电路元件检测 (8)3.3 硬件检测 (9)附录1程序源代码 (12)附录2电路仿真图 (18)总结 (19)第1章绪论1.1 课题背景我们知道,只要乘坐的出租车启动,随着行驶里程的增加,就会看到司机旁边的计价器里程数字显示的读数从零逐渐增大,而当行驶到某一值时(如2KM)计费数字显示开始从起步价(如4元)增加。
当乘客到站时,按下停止按键,计费数字显示总里程和总金额,它可以很直观的反映用户使用情况。
1.2 主要设计内容及基本要求利用AT89S51单片机,设计简单的出租车计价器。
在出租车计价器的总体设计中,我主要负责出租车计价器硬件设计。
其中主要的外围功能电路有:驱动电路,按键控制电路,掉电保护电路,时钟部分,数码管显示电路等。
通过对以上各功能的设计,制作出的出租车计价器应具有以下功能:上电时显示全为零,通过按下启动按键来开始计价,数码管开始显示起步价和起步金额;按下模拟开关按键来产生一个脉冲信号,模拟行驶的里程;数码管开始显示所走里程和所应付的金额,并逐渐增加;按下停止按键,停止计价,数码管显示所走总里程和用户所需付总金额,按下清零按键,数码管全显示零,以备下次计价。
方案二:设计采用AT89S51单片机为主控器,以A44E霍尔传感器测距(按键替代),实现对出租车的基本的计价设计,并采用AT24C02实现在系统掉电的时候保存单价等信息,输出采用8段数码显示管。
利用单片机丰富的I/O端口,及其控制的灵活性,实现基本的计价功能。
系统结构图如下:1.1系统结构图通过比较以上两种方案,我们采用方案二实现出租车计价器的功能。
本电路设计的计价器能实现基本的计价功能,单片机计算总价的公式为:总价=起步价+单价*(总里程-起步里程)+1。
AT89S51作为一个单片微型计算系统,灵活性高,其强大的控制处理功能和可扩展功能设计电路提供了很好的选择。
第2章系统硬件设计2.1硬件设计说明单片机是单片微型计算机的简称,单片机以其卓越的性能,得到广泛的应用,已经深入到各个领域。
在这次设计中,我们用到P0口和P2口,P0口为8位三态I/O口,此口为地址总线及数据总线分时复用;P2口为8位准双向口,与地址总线高八位复用;P0口和P2口都有一定的驱动能力,P0口的驱动能力较强。
设计中,为了能够让数码管更好的正常显示,我们采用了驱动电路来驱动。
在本次硬件设计中,我们考虑采用芯片74LS245来驱动数码管显示。
设计电路时,考虑到用里程(霍尔)传感器价格昂贵,且不便于试验检测,在设计中采用一个模拟开关来代替。
模拟开关一端接在P3.4口,另一端接地,通过来回高低电平的变化,每按两次,对应的里程数加一。
通过在程序中设置的里程和金额的信息,在加上驱动电路的设计,就可以在数码管上分别显示总金额和总里程。
在显示方面,可以用液晶显示,也可以用数码管进行显示。
由于在这次设计中只需要显示里程和金额信息,我们采用数码管进行显示。
这样既节约了成本,又可以达到显示的目的。
同时为了减少硬件的复杂度,我们采用了动态显示方式,选用了共阴极数码管。
为了焊接方便,我们选用了集成在一起的数码管。
2.2 AT89S51单片机简介AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器, 128 bytes的随机存取数据存储器(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使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置。
图2.1 AT89S51引脚图图2.2 AT89S51封装图设计中用到的单片机各管脚(图2.1)功能介绍如下:VCC:接+5V电源。
VSS:接地。
时钟引脚:XTAL1和XTAL2两端接晶振和30PF的电容,构成时钟电路。
它可以使单片机稳定可靠的运行。
RST:复位信号输入端,高电平有效。
当在此引脚加两个机器周期的高电平时,就可以完成复位操作。
P1.0:接启动/停止按键,控制计价。
P1.1:接功能键。
P1.3:接清零键。
P0口接数码管段选端,P2口接驱动芯片。
P3.4(T0):接模拟开关按键,替代了出租车计价器中的霍尔传感器。
P3.1、P3.0口接掉电保护电路。
2.3 硬件电路设计按下计价按键时,显示起步价和起步里程范围,这些在程序中设置;当等于或超过两公里后,按计算总价的公式为:总价=起步价+单价*(总里程-起步里程)+1进行计价。
本设计中,起步价为4元,起步里程为2公里,当然这些数据可以在程序中改写,以满足不同时期价格调整的需要。
下图是通过在Keil C中编译通过,并生成Hex文件,在PROTEUS中仿真通过的整体硬件原理图:图2.3硬件原理图2.4 硬件组成2.4.1 驱动电路74LS245是我们常用的芯片,用来驱动led或者其他的设备。
总线驱动器74LS244和74LS245经常用作三态数据缓冲器,74LS244为单向三态数据缓冲器,而74LS245为双向三态数据缓冲器。
本设计用74LS245作为驱动芯片,双向总线发送器/接收器(3S)。
图2.4驱动芯片管脚图74LS245主要电器特性的典型值如下:引出端符号:A A总线端B B总线端/G 三态允许端(低电平有效)DIR 方向控制端功能表:表 2.5功能表利用74LS245来驱动数码管显示,单片机的P2.0到P2.5分别接A0到A5管脚,进行数据的传送,其中AB/BA接高电平,控制数据从A到B进行传送,B0到B5分别接数码管的位选端,驱动数码管依次显示。
P2.0到P2.5的数据通过A传送到B中的数据送到数码管,以达到显示数据信息的目的。
2.4.2 显示电路多数的应用系统,都要配输入和输出外设,LED显示器和LCD显示器,虽然LCD显示效果比较好,已经成为了一种发展趋势,但为了节约成本,我们选用了LED显示器(图2.6)。
在显示方面,我们选用了动态显示。
静态显示虽然亮度较高,接口编程容易,但是每位的段码线分别与一个8位的锁存器输出相连。
占用的I/O口线比较多,在显示位数较多的情况下,一般都采用动态显示方式。
利用动态显示的方法,由于LED显示器的余辉和人眼的视觉暂留现象,只要每位显示的时间间隔足够短,就仍能感觉到所有的数码管都在显示。
为了简化硬件,通常将所有位的段码线相应段并联在一起,由一个8位I/O口控制,在同一时刻,只让一位选通,如此循环,就可以使各位显示出将要显示的字符。
图2.6 LED数码管图2.7集成数码管LED数码有共阳和共阴两种,把这些LED发光二极管的正极接到一块(一般是拼成一个8字加一个小数点)而作为一个引脚,就叫共阳的,相反的,就叫共阴的,那么应用时这个脚就分别的接VCC和GND。
再把多个这样的8字装在一起就成了多位的数码管了。
在本设计仿真中使用的是6个一组的共阴8段数码管(图2.7)。
找公共共阴和公共共阳的方法:首先我们找个电源|稳压器(3到5伏)和1个1K(几百欧的也行)的电阻,VCC串接个电阻后和GND接在任意2个脚上,组合有很多,但总有一个LED会发光的,找到一个就够了,然后用GND不动,VCC(串电阻)逐个碰剩下的脚,如果有多个LED(一般是8个),那它就是共阴的了。
共阴极数码管,阴极接地,当某个发光二极管的阳极为高电平时,发光二极管点亮,对应的段就显示。
2.4.3 复位电路单片机的复位是由外部的复位电路实现的, 复位电路通常采用上电自动复位和按钮复位两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的。
除了上电复位外还需要按键手动复位(图2.8)。
按键手动复位有电平方式和脉冲方式两种。
其中电平复位是通过RST端经电阻与电源VCC接通而实现的。
单片机的复位速度比外围I/O接口电路快为能够保证系统可靠的复位,在初始化程序中应安排一定的复位延迟时间。
图2.8复位电路2.4.4 掉电保护电路掉电保护电路中采用了存储芯片AT24C02。
AT24C02是一个CMOS标准的EEPROM存储器,是AT24CXX系列(AT24C01/02/04/08/16)成员之一,这些EEPROM存储器的特点是功耗小、成本低、电源范围宽,静态电源电流约30uA~110uA,具有标准的I2C总线接口,是应用广泛的小容量存储器之一。
图2.9 AT24C02引脚图上图是AT24C02的引脚图,这个芯片是一个8脚芯片,内部存储器有256字节。
引脚功能介绍如下:A0(引脚1):器件地址的A0位,是器件地址的最低位,器件地址排列是A6 A5 A4 A3A2 A1 A0 R/W。
A1(引脚2):器件地址的A1位。
A2(引脚3):器件地址的A2位。
GND(引脚4):地线。
SDA(引脚5):数据总线引脚。
SCL(引脚6):时钟总线引脚。
TEST(引脚7):测试引脚。
Vcc(引脚8):电源线引脚。
本设计采用掉电存储电路图如下:图2.10掉电存储电路2.4.5 时钟电路MCS-51单片机的各功能部件都是以时钟控制信号为基准,内部电路在时钟信号的控制下,严格地按时序执行指令进行工作,单片机本身如同一个复杂的同步时序电路,为了保证其各个部分同步工作,电路要在唯一的时钟信号控制下,严格地按照时序进行工作。