![自行车里程表设计(原理图+PCB+程序)_第1页](http://file4.renrendoc.com/view/981630f003f2576610c82342e2a6a16b/981630f003f2576610c82342e2a6a16b1.gif)
![自行车里程表设计(原理图+PCB+程序)_第2页](http://file4.renrendoc.com/view/981630f003f2576610c82342e2a6a16b/981630f003f2576610c82342e2a6a16b2.gif)
![自行车里程表设计(原理图+PCB+程序)_第3页](http://file4.renrendoc.com/view/981630f003f2576610c82342e2a6a16b/981630f003f2576610c82342e2a6a16b3.gif)
![自行车里程表设计(原理图+PCB+程序)_第4页](http://file4.renrendoc.com/view/981630f003f2576610c82342e2a6a16b/981630f003f2576610c82342e2a6a16b4.gif)
![自行车里程表设计(原理图+PCB+程序)_第5页](http://file4.renrendoc.com/view/981630f003f2576610c82342e2a6a16b/981630f003f2576610c82342e2a6a16b5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 前言1.1 设计背景我国是自行车大国,随着人们生活水平的逐渐提高,人们对于生活质量的要求也日益增加,尤其是对健身的要求。自行车在中国普遍作为代步工具。而在国外,自行车却是一项十分受欢送的健身运动。因为它无污染,价位低廉,老少皆宜。而且在运动过程中可以充分享受到大自然,对于忙碌的现代人来说,无疑是一种较好的放松方法。在中国这种情况也在慢慢发生变化。因此爱好自行车运动的人十分需要一款装置,以知道自己的运动情况。并根据外界条件,如温度等进行适当的调节,已到达最正确运动的效果。随着自行车里程表的开展,其功能也逐渐从单一的里程显示开展到速度、时间显示,甚至有的还具有测量骑车人的心跳、显示骑车人热量消
2、耗等功能,让人能清楚地知道当前的速度、时间、里程等物理量。如佛山高明华劲电子公司的自行车里程表MS-601,能动态显示行驶里程、骑车时间、实时车速等。1.2 设计概述本设计中,我们以ATMEL公司AT89C52单片机为控制核心,采用霍尔传感器检测自行车轮胎的运转情况,通过一定的抗干扰处理和计算后,由LED显示自行车的里程。本设计中,计数的正确性决定了本装置的精度,如何在复杂的环境中得到正确的计数脉冲,是本设计的难点,初步的解决方法是在硬件上进行合理的滤波,软件上进行一定的算法处理。其原理很简单,因为车轮的直径,车轮的圆周长便是恒定不变的。由此可以计算出每走一里路车轮要转多少圈,这个数也是恒定不
3、变的。因此只要能够自动把车轮的转数积累下来,然后除以每一里路对应的转数就可以得到行驶的里程了。本里程表的设计具有结构简单,本钱低廉,显示清晰,稳定可靠等优点。并且可进行扩充,参加时速表的功能,更加方便的了解你现在所处的情况。1.2.1设计目标1.根本要求:设计一个自行车车轮半径可以在一定范围内由人工设定,用霍尔传感器测定出自行车的里程和平均速度,并通过数码管显示出来的自行车里程表系统。2.主要性能指标: 可测定自行车里程。 可测定自行车的平均速度,并通过数码管显示出来。1.2.2技术路线要实现该设计,就应把整个电路分为几大模块。分别是单片机控制模块,显示模块,键盘输入模块,报警模块和串口下载模
4、块。先通过对各个模块进行设计、调试之后再将其组合起来进行整机调试。1.2.3实施方案首先就是要理清实现设计的框图,在总体框图的指导下,作出具体的电路图,由要设计实现的功能,计算出各个电路元件的值,并逐一对各个元件进行选择。最后用仿真软件对设计进行仿真操作,调试软件,并对照出设计有误的地方进行必要的修正,确保设计的正确。1.2.4必备条件要实现该电路的设计,首要的就是要制定出设计的原理框图,并在老师的指导和参照资料的条件下作出具体电路图,选定实现实现该设计的各种元器件。另外,还应由必要的软件帮助设计的完成。2 总体方案设计对同一种目的的实现,可以用不同的方案,下面就着重介绍以下各种不同方案对同一
5、目的的实现方法。并比拟他们的优劣,最终确定本次设计要采用的方案。2.1 总体方案设计及论证2.1.1 总体方案一这种方案采用LCD显示模块、供电模块、信号采集模块、报警模块组成。通过霍尔传感器将采集到的信号送到52单片机,通过软件编程对单片机进行控制后,再通过LCD液晶显示模块显示出自行车里程和平均速度。系统框图如图2.1所示。单片机外部信号霍尔传感器报警局部速度显示里程显示图2.1 方案一原理框图2.1.2总体方案二方案二以单片机AT89C52为核心,采用一个按键来控制外部脉冲信号,通过单片机编程处理后去控制自行车车轮半径,并通过软件来实现自行车里程和平均速度的计算。最终在数码管上显示出自行
6、车的里程及其平均速度。系统框图如图2.2所示。单片机控制系统报警局部键 盘脉冲信号显示电路图2.2 方案二的系统框图2.2方案设计的论证与选择方案一与方案二相比,方案一更加简单,且所用的器件更少。方案一用LCD液晶显示器来作为显示模块,而方案二采用八段数码管。液晶显示器比数码管更贵,且对其进行编程控制也更难。数码管显示更加直观,控制也更容易。在方案一中选择霍尔传感器来实现信号的采集,但霍尔传感器的本钱较高。在方案二中选择用一个按键来代替,当按键按下时就开始采集信号,当第二次按下按键时就停止采集信号。这样即降低了本钱同时也更方便对先好进行采集。综合以上所述,我们决定选择方案二作为本次课程设计的方
7、案。3 单元模块设计本节主要介绍系统各单元模块的具体功能、电路结构、工作原理、以及各个单元模块之间的联接关系;同时本节也会对相关电路中的参数计算、元器件选择、以及核心器件进行必要说明。3.1 各单元模块功能介绍及电路设计3.1.1 USB供电电路电源总是电路设计不可缺少的局部,本次设计采用了USB电源供电。USB接口可以向外提供电源,且是5V的电压,非常适合于TTL信号的系统,特别是单片机系统。可以使用这个电源为USB供电,这样便减少了电源设计,简化了USB系统结构。在USB总线系统中,USB主机和USB集线器可以通过VBUS和GND两根电源线向外提供电源,电源一般4.755.25V。USB协
8、议中规定,每个USB端口最大数据电流为500mA。USB端口具有高输出功率和低输出功率之分,同样,USB设备可以按照电流的消耗分为高功率消耗设备和低功率消耗设备。高功率消耗设备一般需要100500mA的电流,低功率消耗设备一般需0100mA的电流。电路图如图3.1所示。图3.1 USB供电电路3.1.2 按键电路键盘在单片机应用系统中,实现输入数据、传送命令的功能,是人工干预的主要手段。键盘是单片机系统设计中一种主要的信息输入接口,合理的设计,不仅可以节省系统的设计本钱,更可使仪器设备的操作变得更为简单、方便,很大程度上提高系统综合性能。本次设计中通过按键来更改自行车车轮半径,并控制显示自行的
9、车里程和平均速度。电路图如图3.2所示。图3.2 按键电路3.1.3 显示电路显示模块可以采用液晶显示器或者数码管显示器,但数码管具有低功耗,容易控制,占用CPU资源少这些优点,考虑到本钱原因,选择了4位的七段数码管显示已经完全足够。电路图如图3.3所示。图3.3 显示电路3.1.4串口下载电路串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。单片机的串行通信可用于与计算机之间传送数据,一般采用RS232接口,但是由于TTL电平和RS232电平不兼容,所以两者
10、对接时,必须进行电平转换,其原理图如图3.4。RS232与电平转换最常用的芯片有MC1488、MC1489和MAX232,各厂家生产的此类芯片虽然不同,但原理都一样。在本次设计选用的是美国MAXIM公司的MAX232芯片,引脚如图3.4,由此构成程序下载电路,以便调试烧写程序。它是RS232双工发送器/接收器接口电路芯片,由于芯片内部有自升压的电平倍增电路,将+5V转换成-10+10V,满足RS232标准对逻辑1和逻辑0的电平要求,工作时仅需要单一的+5V电源。图3.4 串口下载电路3.1.5 复位电路复位是单片机的初始化操作,它是由外部的复位电路来实现,只需给单片机的复位引脚RST加上大于2
11、个机器周期的高电平就可使其复位。电路图如图3.5所示。图3.5 复位电路3.1.6 晶振电路晶振电路用于产生单片机工作时所需的时钟控制信号。通过单片机的引脚XTAL1,XTAL2跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器。时钟频率直接影响单片机的速度,晶振电路的质量也直接影响单片机系统的稳定性。晶振电路电路图如图3.6所示。图3.6 晶振电路3.2电路参数的计算及元器件的选择3.2.1 USB供电电路USB供电电路选用了1个发光二极管,1个按键,1个10uF的电解电容和1个10K的电阻组成。3.2.2 按键电路按键电路用了4个5.1K的电阻和4个按键构成。3.2.3显示电路显示电路
12、是1个4位的七段数码管。3.2.4 串口下载电路串口下载电路用于串口通信,选用了芯片MAX232,1个串口,1个电解电容,4个无极电容。电阻值选1K和330,4个电容为0.1uF,电解电容为10 uF。3.2.5 复位电路复位电路用于单片机复位,是单片机的初始化操作。选用了1个10uF的电解电容,1个10K的电阻,1个1K的电阻和1个按键。3.2.6晶振电路晶振电路选用了1个石英晶体振荡器和2个30pF的微调电容。3.3 特殊器件介绍3.3.1单片机AT89C52如图3.7所示,该图为89C52的引脚图。使用单片机,对于单片机的选择,可以考虑8031与805X系列,由于8031没有内部RAM,
13、系统又需要大量内存存储数据,因而不适用。STC89C52是美国ATMEL公司生产的低功耗、高性能CMOS8位单片,片内含4k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器RAM,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C52单片机可为您提供许多较复杂系统控制应用场合。STC89C52有40个引脚,32个外部双向输入/输出I/O端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规
14、方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发本钱。图3.7 AT89C52的引脚图3.3.2 数码管如图3.8所示,为数码管引脚图。这类数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp小数点。4个 HYPERLINK :/ go-gddq /show.aspx?id=385940&cid=178 o 数码管 数码管共用adp这8根数据线,作为段码线,为人们的使用提供了方便,因为里面有4个数码管
15、,所以它有四个公共端,加上adp,共有12个引脚。数码管使用条件:段及小数点上加限流电阻;使用电压:段:根据发光颜色决定,小数点:根据发光颜色决定使用电流:静态:总电流 80mA每段 10mA,动态:平均电流 4-5mA,峰值电流 100mA。图3.8 数码管引脚图3.3.3MAX232芯片如图3.9所示,该图为MAX232芯片引脚图。MAX232芯片是专门为电脑的RS-232标准串口设计的单电源电平转换芯片,实用+5V单电源供电。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑插头,插头的RS-232数据从R1IN、R2IN输入转换成TTL/
16、CMOS数据后从R1OUT、R2OUT输出。其主要特点有:符合所有的RS-232技术标准;只需要单一+5V电源供电;片载电荷汞具有升压、电压极性反转能力,能够产生+10V和-10V电压;功耗低,典型供电电流5mA;内部集成2个RS-232C驱动和2个RS-232C接收器。图3.9 MAX232引脚图3.4 各单元模块的联接系统电路原理图见附录1所示。系统PCB图见附录2所示。4 软件设计系统软件由主程序,LCD显示子程序, PID计算子程序,水温检测子程序,定时中断效劳子程序组成。4.1 主程序主程序流程图如图4.1所示。主程序主要完成以下几项任务。初始化。设定可编程芯片的工作方式,对内存中的
17、工作参数进行初始化,显示系统初始化状态。 在有键入操作时读取键值,并调转到相应的功能的子程序中去。开始初始化是否键入温度保存温度读入DS18B20温度值KeyscanLCD显示PID计算PID执行控制ENDYN图4.1 主程序流程图4.2 LCD显示子程序 LCD显示子程序流程图如图4.2所示。LCD初始化BusyWrite LCD设置显示位置ENDNY图4.2 LCD显示子程序流程图4.3 水温检测子程序 水温检测子程序流程图如图4.3所示。DS18B20初始化写控制字符到DS18B20读DS18B20温度温度转为BCDEND图4.3 水温检测子程序流程图4.4 PID算法子程序 PID算法
18、子程序的作用在于:根据给定温度r、实测温度fk和调节器参数Kc、Ki、Kd计算输出量uk,并将输出量按比例转换为双向晶闸管的导通时间tk,程序流程图如图4.4所示。入口返回图4.4 PID算法子程序流程图4.5 定时中断效劳子程序采样定时由定时器0的定时操作完成,定时器0的溢出时间受采样周期控制。由T0溢出引发的中断效劳程序用于设置定时标志,程序流程图如图4.5所示。保护现场设置定时已到标志恢复现场返回图4.5 定时中断效劳子程序流程图系统软件设计程序见附录3所示。5 系统调试5.1 Keil软件简介Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统
19、,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能表达高级语言的优势。单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种Keil软件图标是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过
20、汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断开展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断开展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境uVision将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。
21、掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。5.2 功能仿真5.3 连机调试连机调试就是在样机中全速运行系统软件,观察系统运行情况,并根据运行结果修改控制参数,或对软件、硬件方案作必要的修改,重复调试过程,直到系统能满足各项性能性能指标要求。本设计最主要的连机调试过程是当对信号采集后,对单片机的控制和编程。其中包括对主程序,显示模块和按键控制模块等得设计和调试
22、。5.3.1 调试方法将所编写的程序下载到单片机,按下控制采集信号的按键,开始采集信号。当信号采集结束时,设定好自行车车轮半径的大小。按下控制自行车里程和平均速度的按键,看数码管显示是否正确,假设不正确检查是否是软件编程的出错。修改后再进行调试,知道调试成功为止。 5.4 调试结果分析由调试结果可知本次设计实现了对自行车的里程和平均速度的测定,在误差较小的范围内,其结果测量正确,满足设计要求。5.4.1 调试电路已实现的功能通过先分步调试后整体调试的方法,本设计已实现一个自行车车轮半径可由人工设定,当对信号进行采集后,通过对单片机编程控制来实现对自行车的里程和平均速度的测量。5.4.2 调试中
23、遇到的问题和此设计的缺乏在调试的过程中遇到了许多的问题,主要在于对里程和速度的计算和控制方面很复杂的,存在一定的误差。还有就是对信号采集的处理不是很完整。系统实物图见附录4所示。6 系统功能指标参数本节主要介绍实现设计的电路的功能指标参数。6.1 系统实现的功能设计一个自行车车轮半径可以在一定范围内由人工设定,用霍尔传感器测定出自行车的里程和平均速度,并通过数码管显示出来的自行车里程表系统。6.2 系统指标参数测试对于本设计系统的参数测试,总共分两步。第一步就是将自己设计的电路用软件protel作出具体的线路图,用protel自带的检测功能检测线路是否连接有误,直到修改线路至无误为止。第二步就
24、是根据我们的电路原理图画出PCB图,并制作出实物。对实物的每个局部进行调试和测试,在每个局部到达正确结果后,然后将各个模块连接起来进行整体测试。经过测试证明我们设计的自行车里程表工作正常,实现了要求的功能。7 结论该设计通过对设计出来的板子进行调试,验证了理论分析结果的正确性。此次课程设计经过为期近1个月的不懈努力,目前根本到达了预期的要求。通过对整个系统的调试,可得到如下结论:本系统是一个可测量自行车里程和平均速度的自行车里程表。当所设定的温度控制范围内,可以实现对温度的控制,是温度以一定的度数增加且能够通过数码管显示出来。理解了自行车里程及其平均速度的计算。里程与速度分别根据以下公式求得:
25、里程=脉冲总数车轮周长速度=车轮周长/车轮转一圈所用的时间通过实验证明本次设计符合设计的要求,能实现对里程、速度的显示,功能性较强,具有一定的实践意义,将会在许多场合应用。不过,这个设计还是有它的缺乏之处。首先就是电路设计有些复杂,元器件种类有点多,它们会消耗掉一定的电力。另外就是对自行车的控制不是很全面,对测定自行车的瞬时速度等方面我们还未做到。8 设计总结8.1 设计的收获体会在设计之前,参考了一些相关的资料。在设计中又参考了所学单片机的知识及单片机应用设计举例,有了设计系统的根本框架。加之在网上找了一些相关资料最终设计出自行车里程表的电路原理图,有了根本的思路。但着手设计时,又出现了许多
26、未预料到的问题,例如元件的选择:在选择单片机时,是采用MCS-51系列的哪种型号的单片机。在8031、8051、8751三种型号中我们选择了8051。8051是在8031的根底上开展的,又集成了4KB的ROM,而8751是在8031的根底上增加了4KB的EPROM。相对而言8051更适合我们所设计的系统,因而我们选择应用较为广泛的89C52单片机。在电源电路的设计中用了USB接口来实现,使系统供电更加方便。另外,在一些设计原理上也遇到了许多新问题。发现当电源接通后,发现当按下按键后数码管无法正确显示,经同学以及老师的指证,发现是软件编程的原因,并及时的改正。总之,这次实验过程中我受益匪浅,培养
27、了我的设计思维,增加了动手操作的能力。更让我体会到实现温度控制功能后的喜悦。 8.2 对设计的进一步完善提出意见或建议本次设计还是有许多的缺乏之处,比方说本次设计的自行车里程表的功能并不强大等问题。我们在以后可以设计功能更为强大的自行车里程表,比方说我们可以添加测量自行车的瞬时速度等功能,只是由于时间以及个人的能力问题我们暂时还难以设计出这样的电路,这就有待于今后我们在学习中认真领悟、参透。9 致谢在这里,谨以一声“老师,你辛苦了来表达我们指导老师李涛老师最衷心的感谢。李老师在这次智能化设计过程中对我们的全方位的指导,是我们这次智能化设计取得成功的最根本保证和力量源泉。李老师对这次智能化设计抱
28、着极其认真负责的态度,他竭力做好安排、指导、辩论等各个环节,每个步骤循序渐进,一丝不苟,只为我们能通过这几周的智能化设计学到更多知识,更快地提高我们的能力。在李老师的指导下,我们了解了和学到了很多平时闻所未闻的东西,尤其是学到了很多依托我们的专业知识在实际生活中广泛应用的东西,更使我认识到电子技术与我们的生活息息相关,使我看到了自己知识的匮乏。另外,还要感谢学校能安排这次智能化设计,为我们熟悉与我们的专业相关的知识提供了平台。当然,这次智能化设计能取得成功,还少不了我们组几个同学的通力合作和其他同学的帮助,大家在设计中献言献策,积极发挥着个人的聪明与才智。10 参考文献1 陆应华.电子系统设计
29、教程M.北京:国防工业出版社,2005年2月2 张瑾等Protel 99SE入门与提高M北京:人民邮电出版社,20073 彭介华.电子技术课程设计指导M.北京:高等教育出版社.20064 冯育长.单片机系统设计与实例分析M.西安:西安电子科技大学出版社,2007年5月5 电子技术根底模拟局部第5版M北京:清华大学出版社,20066 卢结成等.电子电路实验及应用课题设计M.合肥:中国科学技术大学出版社,2002年3月7 电子技术根底数字局部第5版M北京:清华大学出版社,20068 徐学彬.电子技术实验指导书M成都:西华大学2021年10月9 陈光明等. 电子技术课程设计与综合实训M.北京:北京航
30、空航天大学出版社,2007年5月10 贾更新.电子技术根底实验设计与仿真M.郑州:郑州大学出版社,200611 杨旭东等.实用电子电路精选M.北京:化学工业出版社,200712 朱清慧等Proteus教程电子线路设计、制版与仿真M北京:清华大学出版社,202113 姚福安.电子电路设计与实践M.济南:山东科学技术出版社,2001附录1:系统的电路原理图附录2:系统的PCB图附录3:系统软件设计程序主程序:#include #include DS18B20.H#include LCD1602.H#include KEY_SCAN.H#include PID.Hsbit PWM =P20;unsi
31、gned char t2,*pt;/用来存放温度值,测温程序就是通过这个数组与主函数通信的unsigned char data num_time;unsigned int final_tem ,pa;unsigned int cur_tem;unsigned char code dotcode4=0,25,50,75;/look up tableunsigned char TempBuffer19=0 x2b,0 x31,0 x32,0 x32,0 x2e,0 x30,0 x30,0 x43,0;unsigned char TempBuffer29=0 x2b,0 xfe,0 x32,0 x3
32、2,0 x2e,0 x30,0 x30,0 x43,0;void covert1(void)/将温度转换为LCD显示的数据 unsigned char x=0 x00,y=0 x00; t0=*pt; pt+; t1=*pt; if(t10 x07) /判断正负温度 TempBuffer10=0 x2d; /0 x2d为-的ASCII码t1=t1; /*下面几句把负数的补码*/t0=t0; /* 换算成绝对值*/x=t0+1;t0=x;if(x255) t1+ ; else TempBuffer10=0 x2b;/0 xfe为变+的ASCII码 t1=4;/右移4位 x=x&0 x0f;/和前
33、面两句就是取出t0的高四位 t1=t1|x;/将上下字节的有效值的整数局部拼成一个字节 cur_tem =t1;/保存当前温度 TempBuffer11=t1/100+0 x30; /+0 x30 为变 09 ASCII码 if( TempBuffer11=0 x30) TempBuffer11=0 xfe; /百位数消隐 TempBuffer12=(t1%100)/10+0 x30;/别离出十位 TempBuffer13=(t1%100)%10+0 x30; /别离出个位 t0=t0&0 x0c;/取有效的两位小数 t0=2;/左移两位,以便查表 x=t0; y=dotcodex;/查表换算
34、成实际的小数 TempBuffer15=y/10+0 x30;/别离出十分位 TempBuffer16=y%10+0 x30;/别离出百分位void M_init(void)TMOD =0X01;EA =1;ET0 =1;TH0 =0X3C; /set time as 50msTL0 =0XB0;TR0 =0;void Action() if(pa0) if(final_temcur_tem)if(num_time 150)PWM =1;elsePWM =0; else if(final_tem=cur_tem)if(num_time 100)PWM =1;elsePWM =0; else P
35、WM =1; else PWM =1;void main(void) unsigned char data key,key1,key2; unsigned char cc0 =CUR TEM ; unsigned char cc1 =FIL TEM ; cur_tem =0; final_tem =0; LCD_Initial(); Init_DS18B20(); PID_INIT(); M_init();while(1)key =Key_scan();if(key=10)while(key!=20)key =Key_scan();while(key=20)key =Key_scan();ke
36、y1 =key;TempBuffer22 =key1+0 x30 ;while(key!=20)key =Key_scan();while(key=20)key =Key_scan();key2 =key;TempBuffer23 =key1 + 0 x30;final_tem =key1*10+key2;TR0 =1;else if(key=11)TR0 =0;num_time =0;pt=ReadTemperature(110,-20,0 x3f);covert1();LCD_Initial();LCD_Print(0,0,cc0);Print(TempBuffer1);LCD_Print
37、(0,1,cc1); Print(TempBuffer2);cur_tem =cur_tem*100; /form to integerfinal_tem =final_tem*100; /form to integerpa =PID(cur_tem,final_tem);Action();void int_t0(void) interrupt 1TR0 =0 ;TL0 =0XB0;TH0 =0X3C;TR0 =1 ;num_time+;if(num_time=200) num_time =0;LCD显示子程序:#include #include /Port Definitionssbit L
38、cdRs= P24;sbit LcdEn = P23;sfr DBPor = 0 x80; /内部等待函数*void LCD_Wait(void)LcdRs=0;_nop_();LcdEn=1;_nop_();while(DBPor&0 x80);LcdEn=0;/return DBPor; /向LCD写入命令或数据*#define LCD_COMMAND0 / Command#define LCD_DATA 1 / Data#define LCD_CLEAR_SCREEN0 x01 / 清屏#define LCD_HOMING 0 x02 / 光标返回原点void LCD_Write(bit
39、 style, unsigned char input)LcdEn=0;LcdRs=style;_nop_();DBPor=input; _nop_();LcdEn=1;_nop_();LcdEn=0;_nop_();LCD_Wait();/设置显示模式*#define LCD_SHOW0 x04 /显示开#define LCD_HIDE0 x00 /显示关 #define LCD_CURSOR0 x02 /显示光标#define LCD_NO_CURSOR0 x00 /无光标 #define LCD_FLASH0 x01 /光标闪动#define LCD_NO_FLASH0 x00 /光标不
40、闪动void LCD_SetDisplay(unsigned char DisplayMode)LCD_Write(LCD_COMMAND, 0 x08|DisplayMode);/设置输入模式*#define LCD_AC_UP0 x02#define LCD_AC_DOWN0 x00 / default#define LCD_MOVE0 x01 / 画面可平移#define LCD_NO_MOVE0 x00 /defaultvoid LCD_SetInput(unsigned char InputMode)LCD_Write(LCD_COMMAND, 0 x04|InputMode);/初
41、始化LCD*void LCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0 x38); /8位数据端口,2行显示,5*7点阵LCD_Write(LCD_COMMAND,0 x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); /开启显示, 无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); /清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC递增, 画面不动/*void GotoXY(unsigned char x, unsigned char y)if
42、(y=0)LCD_Write(LCD_COMMAND,0 x80|x);if(y=1)LCD_Write(LCD_COMMAND,0 x80|(x-0 x40);void Print(unsigned char *str)while(*str!=0)LCD_Write(LCD_DATA,*str);str+;void LCD_Print(unsigned char x, unsigned char y, unsigned char *str) GotoXY(x,y); Print(str);水温检测子程序:#include /用AT89C51时就用这个头文件sbit DQ = P22;/定义D
43、Q引脚为P2.2/*DS18B20对时间要求很严,但只能长不能短*/void delay_18B20(unsigned int i)while(i-);/*ds18b20初始化函数*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ复位 delay_18B20(8); /稍做延时 DQ = 0; /单片机将DQ拉低 delay_18B20(80); /精确延时 大于 480us DQ = 1; /拉高总线 delay_18B20(14); x=DQ; /稍做延时后 如果x=0那么初始化成功 x=1那么初始化失败 delay_18B20
44、(20);/*ds18b20读一个字节*/ unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0 x80; delay_18B20(4); return(dat);/*ds18b20写一个字节*/ void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0 x01; delay_18B20(5); DQ = 1; dat=1; /*读取ds18b20当前温度*/unsigned char *ReadTemperature(char TH,char TL,unsigned char RS)unsigned char tt2;Init_DS18B20();WriteOneChar(0 xCC); / 跳过读序号列号的操作WriteO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023八年级历史上册 第五单元 从国共合作到国共对立第17课 中国工农红军长征说课稿 新人教版
- 3 欢欢喜喜庆国庆(说课稿)-2024-2025学年统编版道德与法治二年级上册
- Module 3 Unit 1 What are you doing?(说课稿)-2024-2025学年外研版(三起)英语四年级上册
- 11《赵州桥》说课稿-2023-2024学年统编版语文三年级下册
- 1学会尊重(说课稿)-2023-2024学年道德与法治六年级下册统编版001
- Unit 3 Festivals and Customs Extended reading 说课稿-2024-2025学年高中英语译林版(2020)必修第二册
- 2023九年级物理下册 专题六 材料、信息和能源B 能源学说课稿 (新版)新人教版
- 2023二年级数学下册 六 田园小卫士-万以内的加减法(二)我学会了吗说课稿 青岛版六三制
- 2024-2025学年高中化学 专题五 电化学问题研究 5.1 原电池说课稿 苏教版选修6
- 《10 身边的新闻调查》(说课稿)-2023-2024学年三年级上册综合实践活动吉美版
- 初级中学语文教师资格考试学科知识与教学能力试题及解答参考(2024年)
- 2024年高端装备制造行业现状分析:国家政策确保高端装备制造行业有序发展
- 《带一本书去读研:研究生关键学术技能快速入门》笔记
- 知识图谱智慧树知到答案2024年浙江大学
- 2024年吉林省吉林市中考一模物理试题(解析版)
- Unit 2 Last weekend C Story time (教学设计)人教PEP版英语六年级下册
- 2024年上海市普通高中学业水平等级性考试化学试卷(含答案)
- DZ∕T 0153-2014 物化探工程测量规范(正式版)
- 2024年度-美团新骑手入门培训
- 化妆品祛痘功效评价
- 高一数学寒假讲义(新人教A专用)【复习】第05讲 三角函数(学生卷)
评论
0/150
提交评论