基于stc89c52单片机的出租车计价器设计_第1页
基于stc89c52单片机的出租车计价器设计_第2页
基于stc89c52单片机的出租车计价器设计_第3页
基于stc89c52单片机的出租车计价器设计_第4页
基于stc89c52单片机的出租车计价器设计_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于STC89C52单片机的出租车计价器设计摘要单片机应用到出租车计价器上是一种很典型的设计。出租车行业在各地得以蓬勃发展,出租车经营更加步入正轨的状态。计价器的设计早已成熟,但还可以在此基础上增加一些功能,以使得出租车计价器的功能和性能更加完善。所以未来汽车计价器的市场还是十分有潜力的。该系统由单片机和一些外围设备,具有操作简单,显示清晰,功能强大的优点。包括里程显示和速度检测模块,控制模块,人机交互模块,超速报警模块,时钟显示。3144霍尔传感器模块组成里程检测模块,控制模块包括STC89C52单片机和IIC总线设备AT24C02,人机交互模块包括一个独立键盘,时钟显示模块由LED数码管组成,报警模块由蜂鸣器组成,时钟电路是由SPI总线器件DS1302组成。本设计的出租车计价器的功能指标1可以实现自由设定起步价,白天单价,夜间单价,等待价格;2可以实时显示当前行驶里程和总金额;3可以将形式公里精确到01公里,金额精确到01元。4可以实现出租车的超速报警功能。关键词STC89C52,霍尔传感器3144,IIC总线,SPI总线,动态显示THEDESIGNOFATAXIMETERBASEONSTC89C52MICROCOMPUTERABSTRACTTHEMICROCONTROLLERISAPPLIEDTOTHETAXIMETERISAVERYTYPICALDESIGNTAXIINDUSTRYTOFLOURISHINTHECOUNTRY,MORETAXIOPERATORSTRACKSTATEMETERDESIGNHASLONGBEENRIPE,BUTCANALSOADDSOMEOFTHEFEATURESONTHISBASIS,SOTHATTHEFUNCTIONANDPERFORMANCEOFTHETAXIMETERISMOREPERFECTSOTHEFUTUREOFAUTOMOTIVEMETERMARKETISSTILLVERYPROMISINGTHISSYSTEMCONSISTSOFAMICROCONTROLLERANDSOMEPERIPHERALDEVICES,WITHSIMPLE,CLEARDISPLAY,POWERFULADVANTAGESINCLUDINGMILEAGEDISPLAYANDSPEEDDETECTIONMODULE,CONTROLMODULE,HCIMODULE,SPEEDALARMMODULE,CLOCKDISPLAY3144HALLEFFECTSENSORMODULESMILEAGEDETECTIONMODULE,THECONTROLMODULEINCLUDESSTC89C52MCUANDIICBUSDEVICESAT24C02,HCIMODULEINCLUDESASEPARATEKEYBOARD,LEDDIGITALCLOCKDISPLAYMODULECONSISTSOFTUBES,THEBUZZERALARMMODULECOMPOSEDTHECLOCKCIRCUITISCOMPOSEDBYTHEDS1302SPIBUSDEVICESKEYWORDSSTC89C52,HALLEFFECTSENSOR3144,IICBUS,SPIBUS,DYNAMICDISPLAY目录前言1第1章概述311基本功能312国内外出租车计价器的研究现状及发展趋势313计价器基本工作原理4第2章硬件电路的设计621单片机的最小系统622DS1302实时时钟电路设计8221DS1302的数据寄存器10222读写时序说明11223电路原理图1223霍尔传感器测速模块1324EEPROM模块的设计15241其各引脚功能16242IIC总线协议定义16243IIC总线数据传输的格式1725键盘调节模块的电路设计1826显示模块的电路设计20第3章计价器软件程序的设计2431主程序的模块化设计24311C语言源文件24312C语言头文件2432里程计算中断服务程序2633等待计数器服务程序2634计价结果计算程序2835键盘调节程序设计2936显示程序设计31第4章硬件与软件的调试3341硬件的焊接与调试3342DS1302模块的调试3343AT24C02模块的调试3444显示模块的调试3545运行结果的分析35结论37谢辞39参考文献40附录41外文资料翻译61前言近几年来,出租汽车行业在全国各地蓬勃发展,经营已经步入正轨,出租车计价器成为出租车营运中必配的、很可靠的计量器具,其使用备性直接关系到经营者与乘客的经济利益。而随着出租车行业的蓬勃发展,对出租车计价器的要求也变得很高,不同国家和地址的计费有很大不同,如有些地区有夜间及郊区收费等,而有些地区则没有。但是在实际的运营中,总有不少经营者和乘客反映相同路径,不同车辆的收费有较大不同。计价器的设计早已非常的成熟,但还可以在此基础上增加功能,以使得车的计价器的功能和性能更加完善。出租车已经是城市交通的重要组成部分,从加强行业管理和减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是非常必要的。而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件非常多,故障率高。而采用单片机进行的设计,相对来说功能比较强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,有很强的灵活性,可以通过软件编程来完成更多功能。本设计采用STC89C52单片机为主控器,并用霍尔传感器检测转盘转动模拟车速,实现对出租车的多功能的计价设计,输出采用74HC573驱动数码管。单片微机(SINGLECHIPMICROCOMPUTER)简称单片机,有的也叫做微处理(MICROPROCESSOR简写P)或微控制器(MICROCONTROLLER简写C),通常统称微型处理部件(MICROCONTROLLERUNIT简写MCU)。一般的说,单片机就是在一块硅片上集成CPU、RAM、ROM、定时器/计数器、和多种I/O的完整的数字处理系统。单片机的结构与组成目前,单片机的系统结构有两种类型一种是将程序和数据存储器分开使用,即哈佛(HARVARD)结构,当前的单片机大都是这种结构。另一种是采用和PC机的冯诺依曼(VONNEUMANN)类似的原理,对程序和数据存储器不作逻辑上的区分。EPROM型存储器编程后其内容可用紫外线擦除,用户可反复使用,所以特别适用于开发过程,但EPROM型单片机价格很高。鉴于电子技术、计算机技术以及各种更先进的仿真软件的出现,使用高级语言如C代替汇编语言进行编程已成为趋势。C语言作为一种非常方便的语言而得到广泛的支持,C语言程序本身并不依赖于机器硬件系统,基本上不做修改就可根据单片机不同方便的移植过来。事实上,当今许多硬件的开发都已开始用C语言编程,如各种单片机、DSP、ARM等,为了更好的适应当今社会形势,为了更好的面对挑战、把握机遇,此次毕业设计决定用C语言编程完成。也希望能在进一步熟悉单片机控制的同时,对数字电子技术、模拟电子技术、计算控制技术以及常用外围芯片有更深层次的了解,提高自己的综合能力。综上基于单片机STC89C52设计的出租车计价器不仅可方便的用软件代替硬件,降低成本,具备一般计价器的计算里程和显示总金额的功能,还具备了掉电保持,白天、夜晚单价切换,并且还可很方便的扩展为速度测试仪,具有很好市场前景。第1章概述11基本功能出租车计价器是根据乘客乘坐汽车行驶距离和等候时间的多少进行计价的,并在行驶中同步显示本次消费金额、运行里程等信息。从起步开始,当汽车行驶里程未满3公里时,均按起步价计算。超过3公里后,实现每1公里单价收费,中间遇到暂停时,计程数不再增加,开始按等待计时收费,计程收费和计时收费的和便构成了一位乘客的车费,在出租车运行的同时本计价器还具有超速报警的功能,如果出租车超过设定速度5秒以上,则蜂鸣器响,提示司机减速,减速5秒后蜂鸣器灭。本计价器还显示实时的当前时间,方便乘客。同时,白天和夜晚价格不同,可以进行随时切换。白天单价、夜晚单价、等待单价和起步价格和起步包含里程数都可通过独立键盘进行调节。(默认起步价为5元/3公里,里程单价白天为2元/公里,夜晚为25元/公里,等待计时单价为1元/1分钟)为提高计时、计价精度,确保乘客对自己消费的知情权,出租车计价器应做到里程数精确到01公里,金额精确到角,同时为减少司机朋友来回调整单价以及停车后需重设单价的麻烦,计价器应具有掉电保持功能,计价器应具有掉电存储功能,即当重新启动后维持原有各种单价不变。12国内外出租车计价器的研究现状及发展趋势我国出租车行业是八十年代初兴起的一项行业,随着国民经济的高速发展,出租汽车已成为城市公共交通的重要组成部分。多年来国内普遍使用的计价器只具备单一的计量功能。目前全世界的计价器中有90为台湾所生产。现今我国计价器的生产企业有上百家,主要是集中在北京,广州,沈阳,上海和等地。随着科学技术的发展,产生了第二代计价器。它采用了机械结构与手摇计算机相结合的方式,实现了半机械半电子化。此时它在计程的同时还可以完成计价的工作。大规模集成电路的发展又产生了第三代计价器,也就是全电子化的计价器。它的功能也在不断完善。当单片机出现并应用于计价器后,基本具备了现代出租车计价器的模型,它可以完成计价,显示,计程等基本工作。单片机以及外围芯片的发展促进了计价器的发展。出租车计价器在最初使用时具备的主要功能是根据行驶里程计价,要求可靠性好,精度高。大规模集成电路的发展又产生了新一代计价器,也就是全电子化的计价器。随着单片机性能不断提高而价格却不断下降,它的功能也在不断完善。当单片机出现并应用于计价器后,现代出租车计价器的模型也就基本具备了,它可以完成计程,计价,显示等基本工作。单片机控制得到更广泛的应用,外围芯片的不断发展,使得计价器的功能更加强大,性能更加稳定。随着对计价器的不断改进和完善以及电子技术的发展,便产生了诸多的附加功能。例如1数码管显示功能,多组数码管可同时显示各项营运数据,使乘客看得很清楚。2实时时钟功能,在非营运状态下,日历时钟芯片的使用使计价器可以显示时钟;3掉电存储功能,可储存多营运数据,方便查询。数据存储器的应用使得计价器再掉电情况下还可以保存营运数据50年。13计价器基本工作原理本次设计的计价器系统主要由六个部分组成分别为基于霍尔传感器3144的里程检测模块、STC89C52单片机、IIC串行EEPROMAT24C02掉电存储芯片、SPI接口DS1302时钟芯片,独立键盘和LED数码管显示。霍尔传感器主要用于检测汽车行使的里程数,出租车车轮每旋转一周,霍尔传感器3144便产生一相应高电平脉冲输出,本设计把霍尔的输出口接到了单片机的P23口,启用外部中断,下降沿有效,通过计算脉冲个数换算出已行驶里程(里程脉冲个数出租车车轮周长),为了计价精确,本次就计算是按照百米,角的单位计算的。然后再根据从AT24C02中读取的单价等相关数据进行总的消费金额的计算当行驶里程小于30百米时,总金额起步价等待时间等待单价;当行驶里程大于30百米时,总金额起步(里程30)运行单价等待时间等待单价;计算好的金额、等待时间、行驶里程和单价等数据信息都可实时地显示在数码管上。其中,等待时间可根据霍尔传感器3144是否有脉冲输出加以判断,如可设定等待时基为5S,即假如3144在5S后仍无脉冲输出便认为进入等待时间,并由单片机STC89C52内部计时器对其进行计时。DS1302时钟芯片具有涓细电流充电能力的低功耗实时时钟芯片1。它可以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能。本设计用它来主要用于是时间的实时显示,方便司机和乘客查看。独立键盘可以调整单价等相关数据,当按下某按键,会给单片机相应端口一低电平信号,单片机会通过循环扫描检测到此信号,并根据预先设置好的程序做出相应的处理;调整好的数据存储到AT24C02中,掉电后可以使该数据不丢失,下次得电后直接从AT24C02中读到单片机,并通过数码管实时显示。基本结构图如下图所示。STC89C52单片机脉冲输入按键调整霍尔传感器DS1302时钟独立按键数据交换显示数码管显示AT24C02图11系统基本结构图数据读取第2章硬件电路的设计21单片机的最小系统单片机最小系统即单片机运行的最小模式,主要由电源、复位、振荡电路以及扩展部分等部分组成2。对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源模块的稳定可靠是系统平稳运行的前提和基础。51单片机虽然使用时间最早、应用范围最广,但是在实际使用过程中,一个和典型的问题就是相比其他系列的单片机,51单片机更容易受到干扰而出现程序跑飞的现象,克服这种现象出现的一个重要手段就是为单片机系统配置一个稳定可靠的电源供电模块。此最小系统中的电源供电模块的电源可以通过计算机的USB口供给,也可使用外部稳定的5V电源供电模块供给。电源电路中接入了电源指示LED。图21电源部分单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。当复位电平持续两个机器周期以上时复位有效。复位电平的持续时间必须大于单片机的两个机器周期。具体数值可以由RC电路计算出时间常数。复位电路由按键复位和上电复位两部分组成。1上电复位STC89系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10UF2。2按键复位按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。图22单片机复位电路单片机系统里都有晶振,在单片机系统里晶振的作用非常大,全程叫晶体振荡器,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片机的一切指令的执行都是建立在单片机晶振提供的时钟频率。STC89C52使用110592MHZ的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15PF至50PF之间2。图23单片机晶振电路图为单片机最小系统。图24单片机最小系统22DS1302实时时钟电路设计“DS1302是美国DALLAS公司推出的一种性能高、功耗低的实时时钟芯片,另付有31字节静态RAM,采用标准SPI三线接口与CPU进行同步数据通信,并可采用突然方式一次传送多个字节的时钟信号和RAM数据。它可以是年,月,日,周,日,小时,分钟,秒计时,并且具有闰年补偿等功能。一个月小与31天时可以自动调整,而且还具有补偿闰年功能。工作电压为2555V。采用两电源供电(主用电源和备用电源),可以设置备电源充电方式,提供了对后备电源进行涓流充电的能力。”DS1302可用于数据记录,特别是记录某些具有特殊意义的数据6。图25DS1302引脚分配下图为DS1302内部的结构。图26DS1302内部的结构各引脚的功能为VCC1主电源;VCC2后备电源。当VCC2VCC103V时,由VCC2向DS1302供电,当VCC230金额起步价金额起步价里程30单价等待金额金额起步价等待金额结束开始图34计算程序流程图35键盘调节程序设计键盘采用查询的方式,放在主程序中,当有按键按下的时候,在相应I/O口产生一次低电平,当单片机查询出该低电平后便转入进行处理,处理结束返回。按键查询比较容易实现,只要注意1按键结束后注意退出按键处理;2不要陷入死循环,即避免显示一个数据后退不出来;3在做实际键盘时要注意按下去抖和释放去抖5。按键去抖可通过以下语句实现IFKEY0/按键按下DELAYXMS5/延时5MS消抖IFKEY0/按键确实按下WHILEKEY/松手检测DELAYXMS5/延时5MS消抖WHILEKEY/确实松手执行按键处理程序开始YYYNNN寄存器,IO端口初始化检测是否有键按下延时5MS执行相应代码检测是否有键按下检测是否有键释放图35按键检测子程序流程图36显示程序设计在多位8段数码管显示时,为了简化硬件电路,通常将所有位的段选线相应地并联在一起,由一个单片机的8位I/O口控制,形成段选线的多路复用。而各位数码管的共阳极或共阴极分别由单片机独立的I/O口线控制,顺序循环地点亮每位数码管,这样的数码管驱动方式就称为“动态扫描”。在这种方式中,虽然每一时刻只选通一位数码管,但由于人眼具有一定的“视觉残留”,只要延时时间设置恰当,便会感觉到多位数码管同时被点亮了。多位8段LED动态显示器电路,其中段选线占用一个8位I/O口,位选线占用一个8位I/O口,由于各位的段选线并联,段线码的输出对各位来说都是相同的。因此,同一时刻,如果各位位选线都处于选中状态的话,8位LED将显示相同的字符。若要各位LED能够显示出与本位相应的显示字符,就必须采用扫描显示方式,即在某一位的位选线处于选通状态时,其它各位的位选线处于关闭的状态,这样,8位的LED中只有选通的那一位显示字符,而其它的位则是熄灭的。同样,在下一时刻,只让下一位的位选线处于选通的的状态,而其他的位选线处于关闭状态。如此循环下去,就可以使各位“同时”显示出将要显示的字符。由于人眼有视觉暂留现象,只要每位显示间隔足够短,则可造成多位同时亮的假象,达到显示的目的。本设计一共有11个数码管。显示里程的和金额的由P0口进行控制,显示时间的有P1口控制,在显示的时候先将在要显示的段选送到段选锁存器上,然后关闭段选锁存器,再打开位选锁存器,将要点亮的一位送低电平,其余高电平。即实现其中一位点亮所想的数值。每一瞬间,一个数码管只会显示一个数字。要想每位显示不同的字符,就必须采用动态扫描的方法轮流点亮各位数码管,即在每一时刻只使某一位显示字符。在此瞬间,段选控制I/O口输出相应字符段选码(字符码),而位选则控制I/O口在该显示的位送入选通电平,以保证该位显示显示相应字符。如此循环操作,使每位分时显示该位应该显示的字符。显示程序利用延时程序,每隔5MS刷新一次,相应的数码管点亮,显示一位数据,利用主函数内的循环,实现动态扫描显示,同时根据数码管余辉和人眼暂留现象,给人看上去每个数码管总是在亮,以实现动态显示。第4章硬件与软件的调试41硬件的焊接与调试在买来硬件之前都是用的软件能模拟仿真的,其结果也很正常,在硬件焊接好之后在进行调试就出现了很多问题,由于焊接的问题,及硬件芯片的问题中间耗费了不少时间,但是还算顺利,硬件焊接完了之后开始逐个模块的调试。42DS1302模块的调试DS1302作为目前广泛使用的实时时钟芯片,在很多场合都得到了应用。所以在我设计的计价器中,同样采用了DS1302实时时钟芯片来作为整个计价器时钟参考。首先是DS1302的规格,有八个管脚,VCC1作为后备电源,VCC2作为主电源。一般情况下,只有VCC2VCC102V的时候主电源才开始工作。在主电源掉电的情况下,后备电源才用上。还有晶振X1和X2,一般情况下采用32768HZ的晶振,晶振的精度和时钟的精确程序是有很大关系的。所以尽量选用好一些的晶振。另外关于是否串入电容的问题上,我认为不加电容的精度会稍微差一些,在搭电路的时候,可以尝试采用1PF10PF的电容,时间更准确一些。DS1302内部有318B的数据RAM和108B的时钟数据位。前面318B的RAM空间,可以储存一些需要暂存数据,比如说在调试DS1302的时候,为了防止每次启动系统的时候,时钟都进行初始化,这有时候是我们不希望的(毕竟我们想看到当前的时钟信息)。所以我们可以在RAM里面植入标志位,每次启动系统的时候就去识别这个标识位来判断是否进行初始化(当然标志位不丢失的前提是后备电池依然在工作,不然RAM就不能保存数据了)。另外在每次进行初始化或者要往RAM中写数据的时候,必须关闭写保护,即置CONTROL寄存器的最高位WP为0,写完后要记得关闭WP,禁止写入。43AT24C02模块的调试AT24C02是一个IIC器件,调试比较简单,只要严格按照操作时序,基本没什么问题。不过还要注意以下事项1、时钟一般由主设备控制,但一个字节后从设备发送确认信号,可能由于忙着处理中断和其他实时处理,将迫使时钟下降一段时间,所以控制时钟的主要设备发送一个新的字节或发送停止或启动信号,检测控制时钟,如果不加以控制,会产生假警报,如果从设备时钟一直较低,与其他设备访问也将出错,导致整个总线瘫痪。2、主设备发送的数据,每发送一个字节等待设备确认,即发送BIT7之后,主时钟,同时拉高SDA释放数据总线,等待SDA的置低,置低的时钟时间不要太短,保证从下拉,然后主要设备更高的SCL,保持一个高水平的时候,SDA较低的检测设备,如果没有拉低,则说明从设备出错,产生报警,发出停止信号。3、从设备给主设备发送数据时,每发送一个字节也都要等待主设备的确认。即从设备发送完BIT7后,主设备将时钟拉低,同时从设备在这段时间必须将SDA线拉高(释放数据线),等待主将SDA拉低,以发送下一个字节,如果主设备想继续接收下面的字节,则在时钟为低时,拉低SDA线,在SCL为高时,保持SDA为低电平表示确认。如果主不想接续接收下面的字节,则从设备将数据线释放后,主设备不再进行确认,即一直使SDA线为高,从设备检测到主没有确认后,等到SCL为高时,从设备也不会在发送下面的字节内容,此时控制权交给主设备,由主设备进行决定是发送停止还是重新启动信号。4、一个时钟周期波形先是低电平,为接收数据或发送数据做准备,作为接收时,这段时间给发送方以足够时间准备发送的数据。据此,在写函数时,对于某个时钟周期的操作,一般先将SCL置低,而不要以为上个时钟周期操作已经置低,从而违反一个时钟周期先低后高的原则。44显示模块的调试本设计的显示分为三组第一组是显示的是计价金额,第二组是显示的是当前时间,第三组是显示的是计价里程。由于购买错误把共阴极的数码管买成了共阳极的,不过能用,电路只做稍微的修改就可使用,我用的是PNP三极管驱动的共阳极数码管,三极管的基极接单片机的IO口,然后低电平触发三极管导通,这个模式和共阴极的数码管点亮是一样的,所以可以用同一个锁存器驱动不同的数码管,只是显示的段选不一样而已,显示模块是动态扫描,由于用了四个锁存器,也比较容易实现,但是焊接的时候要小心,引脚的虚焊或者连线可能导致一下午的问题排查。所以一定要小心,仔细45运行结果的分析在调试了近一周之后,所有的模块都正常了,运行良好,满足了所有的设计要求,也完成了计价器的原理图绘制,生成了PCB板子,由于成本的控制,只是手工焊接,没有做出PCB实物。但是实现了同样的功能,顺利的完成了自己的毕业设计,给自己的大学生活画了一个圆满的句号下图为焊接实物图图41焊接实物图下图为PCB图图42PCB原理图结论经过近几个月的设计,在多位老师和同学的帮助下,全面实现了预先设定的计价器应具有的功能,且满足了所有设计指标。1能准确计算出出租车运行里程;2实现了单价可调,里程精确到01公里,金额精确到角,所有数据可调,并可以对等待时间进行计时;3通过AT24C02对存储空间进行了扩展,使其具备掉电存储功能。4有完整的硬件电路,并用ALTIUMDESIGNER设计出了系统原理图,生成PCB板,手动焊接和实物电路板。本设计中,不管是硬件电路设计,软件编程乃至后期的硬件制板,都是重点和难点。在完成这些的时候,最重要的秘诀就是将问题划分开来,系统的,有条理的分步进行。硬件方面,先综合考虑系统功能,再将要实现的功能划分为各个模块并根据各个模块功能细化考虑模块组成,在各个模块都完成之后,方将所有模块联系在一起,形成一个完整的系统。软件方面,同硬件也是一个道理,先综合考虑主要程序要实现什么,然后主程序的运行思路为基础,逐个完成各个功能的子程序,由主程序将这些子程序系统地统一在一起,使其运行更为合理流畅。制板方面也是,先将每个模块画好,最后整合到一起。当然,就算思路已很明晰,实际动手去做还是会遇见许多问题。硬件要先制作实验板,经过反复试验,在试验中适当更换不同参数的元器件,观察结果,最终才能确定可行的使用方案。软件也不可能一次就写好,亦是要经过反复测试、修改,经过反复烧写,才能得到最后的程序。制板方面更是不容马虎,画PCB板时对线路的接法、元器件的封装、布线的粗细、焊盘的大小等等都要细致的一一定义清楚,只要有一点点差错,制出来的板就作废了。通过我的不懈努力和老师、同学的帮助,我总算完成了所有内容。对我来说,这次的设计是对单片机所学专业知识的考察。在做这设计的同时,我重新回顾了单片机的许多知识,对未涉及过的应用也翻阅了许多相应的资料,这样一个过程下来,让我获得了许多收获,不仅提高了动手能力,在其他各个方面也都有了很大的进步,尤其是对所学知识的实际应用有了很大程度的理解,能更好地将理论和实践融会贯通。当然,在这次设计中也暴露出许多缺点和不足,例如编程语法不够规范、画PCB时对很多细节设置不够细心、硬件上总是会疏忽了一些必要的器件等等,对于这些不足我都很认真地一一予以改正,并在今后更加努力,谢辞本论文是在郑玉丽老师的悉心指导下完成的,从下任务书开始,就帮我制定规划,提醒我应注意的问题;借给我资料,帮我联系硬件;和我一起调程序,并提出了很多的修改意见以及完善方案;此外还认真批阅了我的论文,指出其中很多瑕疵和不清晰的地方。郑老师的学识和经验给我留下了深刻的印象。从郑老师那里我学到的不仅是专业知识与实际问题科学解决的方法,更为重要的是勤奋和严谨治学的精神以及对学生的认真负责,老师的谆谆教诲使我受益匪浅,在此向郑老师表示衷心的感谢并致以崇高的敬意感谢我的家人和朋友对我生活上的关心,学习和工作的支持,这些使得我能够安心的完成我的毕业设计,同时要感谢我的学校,让我愉快而有意义的度过的大学时光,让我学会专业知识的同时,也学会了很多做人的道理。最后,对在我的学习和成长道路上给予帮助的所有老师和同学们表示深深地感谢,对评阅该论文的所有专家表示最崇高的敬意和真挚的感谢参考文献1周润景,张丽娜,基于PROTEUS的电路及单片机系统设计与仿真北京北航大学出版社,2000,110119;2李广弟,朱月秀,冷祖祁单片机基础第3版北京航空航天大学出版社,20078895;3刘瑞新单片机原理与应用,机械工业出版社2003,120125;4张毅刚MCS51单片机应用设计,清华大学出版社2009,3350;5李全利单片机原理及其接口技术高等教育出版社,20047075;6林捷,杨绪业,模拟电路与数字电路第二版人民邮电出版社201117217崔惠柳串行时钟芯片DS1302在汽车智能记录仪的应用电子技术,199838418林游,张俊杰,易凡霍尔传感器信号采集与显示系统设计现代电子术,2009(4)1911949郭天祥51单片机C语言教程北京电子工业出版社200810张齐,朱宁西,单片机系统设计与开发北京机械工业出版社,2008,110113。11谭浩强C语言程序设计第三版清华大学出版社2005,9599。12赵伟军PROTEL99E教程北京人民邮电出版社,200413龙脉工作室PROTEL99S入门与典型实例北京人民邮电出版社,200814夏彬彬,任明全,屈金学PIC单片机常用模块与综合系统设计电子工业出版社,200915康华光电子技术基础(模拟部分)高等教育出版社200516余孟尝数字电子技术基础教程高等教育出版社2006。17李刚新概念单片机教程天津大学出版社,200418马忠梅,张凯,马岩,单片机的C语言应用程序设计北京北京航空航天大学出版社,200319CHIRSJGEORGOPOULOSINTERFACEFUNDAMENTALSINMICROPROCESSORCONTROLLEDSYSTEMMDREIDELPUBLISHINGCOMPANY,1985附录原理图PCB原理图系统源程序初始化程序的头文件INITHIFNDEF_INIT_H_DEFINE_INIT_H_DEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINTEXTERNUNSIGNEDCHARBB,CC,SET,SPEED,TEMP,TEMP1,YI,ER,SAN,SI,WU,LIU,QI,START_P,WAITE_P,WAITE,PRICE,DAY_P,NIGHT_P,QIBUUNSIGNEDINTZHUAN,LUCHENG,MONEYBITFLAG,B,FLAG_1S,TURNTEMP,START,A,KEYUNSIGNEDCHARDIAN1UNSIGNEDCHARDIAN2UNSIGNEDCHARCODECODE1/YINDUANUNSIGNEDCHARCODECODE2/YANGDUANUNSIGNEDCHARBIT_CODE/TIMEDISPLAYWEIDODEUNSIGNEDCHARWRITE_ADD/DS1302WRITEADDRESSUNSIGNEDCHARREAD_ADD/DS1302RESDADDDRESSUNSIGNEDCHARDISPLAY_CODEUNSIGNEDCHARTIME/MINHOURVOIDDELAY1MSUNSIGNEDCHARVOIDDELAYVOIDINITENDIF初始化源程序INCLUDEINCLUDE“INITH“INCLUDE“DS1302H“INCLUDE“AT24C02H“UCHARDIAN10XBF,0X86,0XDB,0XCF,0XE6,0XED,0XFD,0X87,0XFF,0XEF,0X00/带有小数点共阴极的位选UCHARDIAN20X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10,0XFF/带有小数点共阳极的位选UCHARCODECODE10X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X00/共阴极数码管段选UCHARCODECODE20XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XFF/共阳极数码管段选UCHARBIT_CODE0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F/TIMEDISPLAYWEIDODEUCHARWRITE_ADD0X84,0X82,0X80/DS1302WRITEADDRESSUCHARREAD_ADD0X85,0X83,0X81/DS1302RESDADDDRESSUCHARDISPLAY_CODE0X00,0X00,0X00,0X00,0X00,0X00UCHARTIME00,00,00/MINHOURUNSIGNEDCHARBB,CC,SET,SPEED,TEMP,TEMP1,YI,ER,SAN,SI,WU,LIU,QI,START_P,WAITE_P,WAITE,PRICE,DAY_P,NIGHT_P,QIBUUNSIGNEDINTZHUAN,LUCHENG,MONEYBITFLAG0,B,FLAG_1S,TURNTEMP0,START0,A0,KEY0VOIDDELAY1MSUCHARXUNSIGNEDCHARB,CFORCXC0CFORB110B0BVOIDDELAYVOIDINITINIT2402START_PREAD_2402ADD1DAY_PREAD_2402ADD2NIGHT_PREAD_2402ADD3WAITE_PREAD_2402ADD4QIBUREAD_2402ADD5MONEY0LUCHENG0WAITE0TMOD0X11/开定时器T0,T1EA1/开总中断EX10/外部中断1ET01/定时器0中断开关ET10/定时器1中断开关TH10X4C/定时器1初始值TL10X00/定时器0初值TH00X0F9TL00X0E1TR10/关定时器1TR01/开定时器0IT11/负跳变有效AT24C02程序头文件IFNDEF_AT24C02_H_DEFINE_AT24C02_H_EXTERNVOIDINIT2402EXTERNUNSIGNEDCHARREAD_2402BYTEEXTERNVOIDWRITE_2402ADDUNSIGNEDCHAR,UNSIGNEDCHAREXTERNUNSIGNEDCHARREAD_2402ADDUNSIGNEDCHARENDIFAT24C02源程序文件INCLUDEINCLUDE“INITH“SBITSDAP36/2402SBITSCLP37VOIDSTART2402/开始信号SDA1DELAYSCL1DELAYSDA0DELAYVOIDSTOP2402/停止SDA0DELAYSCL1DELAYSDA1DELAYVOIDRESPONS2402/应答UCHARISCL1DELAYWHILESDA1/1302SBITIOP21SBITCLKP20VOIDWRITE_1302BYTEUCHARXUCHARIFORI0I1UCHARREAD_1302BYTEVOIDUCHARI,B,TFORI0I1TIOB|TINCLUDE“INITH“INCLUDE“DS1302H“SBITWELA1P27/SBITDULA1P26SBITDULA2P25SBITWELA2P24VOIDJISUANIFLUCHENGQIBUMONEYSTART_PLUCHENGQIBUPRICE/10WAITE_PWAITEVOIDDISPLAY1302/DS1302显示函数DISPLAY_CODE0CODE2TIME0/10DISPLAY_CODE1CODE2TIME010DISPLAY_CODE2CODE2TIME1/10DISPLAY_CODE3CODE2TIME110XUANZESWITCHAACASE1DULA21P1DISPLAY_CODE0DULA20WELA21P1BIT_CODE0WELA20BREAKCASE2DULA21P1DISPLAY_CODE1DULA10WELA11P1BIT_CODE1WELA10BREAKCASE3DULA21P1DISPLAY_CODE2DULA10WELA21P1BIT_CODE2WELA10BREAKCASE4DULA21P1DISPLAY_CODE3DULA10WELA21P1BIT_CODE3WELA10BREAKDEFAULTBREAK键盘扫描头文件IFNDEF_KEYSACN_H_DEFINE_KEYSACN_H_EXTERNVOIDTURNEXTERNVOIDBEGAINEXTERNVOIDKEYSCANENDIF键盘扫描源程序INCLUDEINCLUDE“INITH“INCLUDE“AT24C02H“INCLUDE“DS1302H“INCLUDE“DISPLAYH“SBITK1P35/设置键SBITK2P30/加一键SBITK3P31/减一键SBITK4P32/白天夜晚切换键SBITK5P34/清零键SBITBEEP23VOIDKEYSCAN/键盘扫描IFKEY/如果没有按下开始键IFK1DELAY1MS3IFK1BEE0FLAG1WHILEK1SETBEE1IFSET8SET0FLAG0IFSET0IFSET1IFK2DELAY1MS5IFK2BEE0WHILEK2TIME0BEE1IFTIME024TIME00IFSET3IFK2DELAY1MS5IFK2BEE0WHILEK2START_PBEE1IFSTART_P200START_P0IFK3DELAY1MS5IFK3BEE0WHILEK3START_PBEE1IFSTART_P1START_P200WRITE_2402ADD1,START_PDISPLAYSTART_P,10VOIDTURNIFKEY/如果没有按下开始键IFK4DELAY1MS5IFK4BEE0WHILEK4IFSET0/如果没按下设置键TURNTEMPTURNTEMPBEE1IFSET0/如果按下了设置SET0FLAG0BEE1IFTURNTEMP0PRICEDAY_PIFTURNTEMP1PRICENIGHT_PVOIDBEGAINIFSET0IFK5/初始化DELAY1MS3/延时消抖IFK5BEE0WHILEK5STARTSTARTBEE1IFSTARTEX11ET11TR11KEY1IFSTARTINITKEY0主函数源程序INCLUDEINCLUDE“KEYSCANH“INCLUDE“INITH“INCLUDE“AT24C02H“INCLUDE“DS1302H“INCLUDE“DISPLAYH“SBITBEEP23VOIDMAININITWHILE1IFFLAGGETTIMETURNKEYSCANBEGAINJISUANVOIDTIMER0INTERRUPT1/等待判断和计时UCHARAA/定时器2MSTH00X0F9TL00X0E1AABBCCIFBB8BB0DISPLAY1302IFCC5CC0DISPLAYMONEY,LUCHENGIFAA250/等待500MSFLAG_1SFLAG_1S/取反AA0VOIDEXTER1INTERRUPT2/3144脉冲计算里程ZHUANIFZHUAN500/轮胎周长为2米,50个脉冲为100MIFZHUAN65535ZHUAN0LUCHENGIFLUCHENG9990LUCHENG0外文资料翻译STRUCTUREANDFUNCTIONOFTHEMCS51SERIESSTRUCTUREANDFUNCTIONOFTHEMCS51SERIESONECHIPCOMPUTERMCS51ISANAMEOFAPIECEOFONECHIPCOMPUTERSERIESWHICHINTELCOMPANYPRODUCESTHISCOMPANYINTRODUCED8TOPGRADEONECHIPCOMPUTERSOFMCS51SERIESIN1980AFTERINTRODUCING8ONECHIPCOMPUTERSOFMCS48SERIESIN1976ITBELONGTOALOTOFKINDSTHISLINEOFONECHIPCOMPUTERTHECHIPSHAVE,SUCHAS8051,8031,8751,80C51BH,80C31BH,ETC,THEIRBASICCOMPOSITION,BASICPERFORMANCEANDINSTRUCTIONSYSTEMAREALLTHESAME8051DAILYREPRESENTATIVES51SERIALONECHIPCOMPUTERSANONECHIPCOMPUTERSYSTEMISMADEUPOFSEVERALFOLLOWINGPARTS1ONEMICROPROCESSOROF8CPU2ATSLICEDATAMEMORYRAM128B/256B,ITUSENOTDEPOSITTINGNOTCANREADING/DATATHATWRITE,SUCHASRESULTNOTMIDDLEOFOPERATION,FINALRESULTANDDATAWANTEDTOSHOW,ETC3PROCEDUREMEMORYROM/EPROM4KB/8KB,ISUSEDTOPRESERVETHEPROCEDURE,SOMEINITIALDATAANDFORMINSLICEBUTDOESNOTTAKEROM/EPROMWITHINSOMEONECHIPCOMPUTERS,SUCHAS8031,8032,80C,ETC4FOUR8RUNSIDEBYSIDEI/OINTERFACEP0FOURP3,EACHMOUTHCANUSEASINTRODUCTION,MAYUSEASEXPORTINGTOO5TWOTIMER/COUNTER,EACHTIMER/COUNTERMAYSETUPANDCOUNTINTHEWAY,USEDTOCOUNTTOTHEEXTERNALINCIDENT,CANSETUPINTOATIMINGWAYTOO,ANDCANACCORDINGTOCOUNTORRESULTOFTIMINGREALIZETHECONTROLOFTHECOMPUTER6FIVECUTOFFCUTTINGOFFTHECONTROLSYSTEMOFTHESOURCE7ONEALLDUPLEXINGSERIALI/OMOUTHOFUARTUNIVERSALASYNCHRONOUSRECEIVER/TRANSMITTERUART,ISITREALIZEONECHIPCOMPUTERORONECHIPCOMPUTERANDSERIALCOMMUNICATIONOFCOMPUTERTOUSEFOR8STRETCHOSCILLATORANDCLOCKPRODUCECIRCUIT,QUARTZCRYSTALFINELYTUNEELECTRICCAPACITYNEEDOUTERALLOWOSCILLATIONFREQUENCYAS12MEGAHERTASNOWATMOSTEVERYTHEABOVEMENTIONEDPARTWASJOINEDTHROUGHTHEINSIDEDATABUSAMONGTHEM,CPUISACOREOFTHEONECHIPCOMPUTER,ITISTHECONTROLOFTHECOMPUTERANDCOMMANDCENTRE,MADEUPOFSUCHPARTSASARITHMETICUNITANDCONTROLLER,ETCTHEARITHMETICUNITCANCARRYON8PERSONSOFARITHMETICOPERATIONANDUNITALUOFLOGICOPERATIONWHILEINCLUDINGONE,THE1STORINGDEVICETEMPORARILIESOF8,STORINGDEVICE2TEMPORARILY,8SACCUMULATIONDEVICEACC,REGISTERBANDPROCEDURESTATEREGISTERPSW,ETCPERSONWHOACCUMULATEACCCOUNTBY2INPUTENDSENTEREDOFCHECKINGETCTEMPORARILYASONEOPERATIONOFTEN,COMEFROMPERSONWHOSTORE1OPERATIONISITISITMAKEOPERATIONTOGOONTOCOUNTTEMPORARILY,OPERATIONRESULTANDLOOPBACKACCWITHANOTHERONEINADDITION,ACCISOFTENREGARDEDASTHETRANSFERSTATIONOFDATATRANS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论