单片机课程设计_第1页
单片机课程设计_第2页
单片机课程设计_第3页
单片机课程设计_第4页
单片机课程设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及应用课程设计PAGE1前言单片微型计算机简称单片机,是典型的嵌入式微控制器(MicrocontrollerUnit),常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是其它器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板,但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别,因为单片机的通过编写的程序可以实现高智能,高效率,以及高可靠性。单片机又称微控制器,以体积小、功能全、性价比高等诸多优点而独具特色,因此单片机技术已经普及到我们的生活、工作、科研等各个领域,本文主要介绍了一个基于AT89C51单片机的测温报警系统,描述了单片机的基本信息以及利用DS18B20数字温度传感器开发测温系统,对其外围硬件进行连接、软件编程等模块都进行了详细介绍。该系统可以实现温度的采集和显示,并且可以根据需要设定温度的上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、功耗低等优点,非常适合日常生活的温度测量。DS18B20与AT89C51结合实现最简单的温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有着广泛的应用前景。1概述1.1数字温度计简介随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。数字温度计可以准确的判断和测量温度,以数字显示,而非指针或水银显示。故称数字温度计或数字温度表。数字温度计采用温度敏感元件也就是温度传感器,将温度的变化转换成电信号的变化,这个电信号可以使用模数转换的电路即AD转换电路将模拟信号转换为数字信号,数字信号再送给处理单元,处理单元经过内部的软件计算将这个数字信号和温度联系起来,成为可以显示出来的温度数值,如25.0摄氏度,然后通过显示单元(如LED)显示出来给人观察。这样就完成了数字温度计的基本测温功能。此次课程设计所介绍的数字温度计与传统的温度计相比,其读数方便,测温范围广,测温准确,其输出温度采用数字显示,该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度发送到AT89C51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器用4位共阴LED1.2设计内容及要求本次单片机课程设计将以51系列单片机为核心,以开发板为平台;利用Proteus及KEIL仿真软件设计一个简易数字温度计,要求使用温度传感器(DS18B20)测量温度,再经单片机(简称MCU)处理后,在LED数码管显示当前的温度值,分别为百位、十位、个位和小数点后一位。并且可以实现超限报警功能。1.3系统组成及工作原理本系统功能是由硬件和软件两大部分协调完成的,硬件部分主要完成各种新号的采集和各种信息的显示的;软件主要完成信号的处理及控功能等。基于工作原理是AT89C51单片机对按钮的输入信号的查询和检测,然后对输入信号进行相应处理后通过LED数码管输出。温度计电路设计控制器采用单片机AT89C51,温度传感器采用DS18B20,DS18B20温度传感器能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式,仅需要一个端口引脚进行通信。显示电路采用4位共阴极LED数码管,采用LED动态显示方式,从P1口输出段码,P2.0~P2.3作为位选控制端。2系统总体设计及软件设计2.1设计思路本实验设计4个开关按键K1,K2,K3,K4:其中K2按键按下去时,进入报警上下限设置,按动K2,K3分别对报警上限和下限进行设置,增减由K1进行控制,当设置完毕后,按K4保存并退出。该实验要求对环境温度进行测量并在LED上显示数据,则可利用AT89C51芯片的P0.7-P0.0管脚对应了接数码管的A,B,C,D,E,F,G和小数点位,P2.0~P2.3接显示数据的小数位、个位、十位、百位(符号位),P3.4端口与DS18B20进行数据传递和通信端口,P3.7端口输出报警信号。2.2硬件构成2.2.1主控模块AT89C51单片机AT89C51是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89C51具有8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路另外,AT89C51可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口和P2口是一个具有内部上拉电阻的8位双向I/O口,输出缓冲器能驱动4个TTL逻辑电平。对端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(2.2.2温度传感器DS18B20DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.0~5.5V;零待机功耗;温度以9或12位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。DS18B20的测温原理:器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。表表1一部分温度对应值表温度/℃二进制表示十六进制表示+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100000191H+10.125000000001010000100A2H+0.500000000000000100008H000000000000010000000H-0.51111111111110000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FE6FH-551111110010010000FC90HDS18B20器件仅在主机发出读时隙时,才向主机传输数据。所以在主机发出读数据命令后,必须马上产生读时隙,以便DS18B20能够传输数据。所有的读时隙至少需要60us,且在两次独立的读时隙之间,至少需要1us的恢复时间。每个读时隙都由主机发起,至少拉低总线1us。在主机发起读时隙之后,DS18B20器件才开始在总线上发送0或1,若DS18B20发送1,则保持总线为高电平。若发送为0,则拉低总线当发送0时,DS18B20在该时隙结束后,释放总线,由上拉电阻将总线拉回至高电平状态。DS18B20发出的数据,在起始时隙之后保持有效时间为15us。因而主机在读时隙期间,必须释放总线。并且在时隙起始后的15us之内采样总线的状态。2.3显示模块显示电路采用4位共阴极LED数码管,采用LED动态显示方式,从P1口输出段码,P2.0~P2.3作为位选控制端。其中P1做输出口时需要加上拉电阻。图2-1显示模块2.4开关控制电路模块本模块有四个按键来实现报警温度的设置功能,当K2键按下时,系统进入报警温度上下限调整程序,按动K2可以实现对报警温度上限TH增一或减一,按动K3可以实现对报警温度下限TL增一或减一,其加减由按动K1来控制,同时LED显示当前在调的报警温度值,当调整完毕后,按K4键退出调整程序。图2-2开关控制电路3软件设计系统程序主要包括主程序,读温度子程序,,温度转换命令子程序,计算温度子程序,温度比较子程序,报警温度调整子程序和显示子程序。3.1主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,并与温度报警上下限设定值进行比较,同时查询K2是否按下进行报警温度的设置,然后循环执行。其程序流程见图3-1所示。YY发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY调用显示子程序调用显示子程序读取温度转换温度温度显示温度比较按键检测初始化图3-1主程序流程图图3-2读取温度流程图3.2读取温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图3-2所示。3.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图3-3所示。发DS18B20复位命令发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束图3-3温度转换流程图3.4计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如下图3-4所示。开始温度零下?温度值取补码置“—”标志计算小数位温度BCD值计算整数位温度BCD值结束置“+”标志NY图3-4计算温度流程图3.5温度比较子程序此程序是将实际温度与设置的报警上下限比较,决定是否发出报警信号。由于T为实际温度的绝对值,TH、TL也是温度的绝对值,因此判断大小关系时要通过其正负符号来确定。4Proteus软件仿真4.1系统整体硬件电路系统整体硬件电路包括:传感器数据采集电路,温度显示电路,上下限报警温度调整电路和报警电路,如附录所示。图中有4个独立式按键可以分别调整温度计的上下限报警温度,蜂鸣器可以在被测温度超出上下限范围内时,发出报警鸣叫声音,同时报警指示灯超高亮发光二极管将被点亮。图中画出来的是上电复位电路,实际电路将采用按健加上电复位电路,使用比较方便,在程序跑飞时,可以手动复位,这样就不用重启单片机电源,就可以实现复位。显示电路采用动态扫描方式,这样不仅使用单片机端口较少,而且外围电路也比较简单。4.2温度显示由于18B20的测温范围是-55~125°C,所以当温度为负值时,第一位数码管用来显示温度的负号,当温度值的十位数字为0时,不显示,温度值为正且小于100°C时,第一位数码管也是用来显示符号,为正时不显示,当温度值大于等于100°C4.3报警温度调节调节高温报警温度时,先按下高温调节按键,进入高温调节模式,此时4位数码管的第一位当报警温度小于100°C时不显示,大于等于100°C时显示百位数字,第二位显示报警温度的十位数字,第三位显示报警温度的个位,第一位显示“H”,表示处于高温报警温度调节状态。按下加一键后报警温度值会加一并且数码管闪亮一次显示更新的高温报警温度值,按下减一键时执行同样操作。直到按下确定键,才退出设定状态。调节低温报警温度时,先按下低温调节按键,进入低温调节模式,数码管显示和高温调节时相似,只是第一位显示“L”,表示处于低温报警温度调节状态。按键操作也和高温调节时相同。在此值得一提的是低温调节按键和确认键是复用的,也就是说如果按下低温调节按键后再按一次,就会直接退出低温设定状态。另外低温调节按键还具有关报警电路的功能,当所测温度值超出上下限报警温度时,蜂鸣器响同时报警指示灯亮,此时连续按下2次确认键即可关掉报警,再连续按下2次确认键就又进入了报警状态。总结经过一周的单片机课程设计,终于完成了简易数字温度计的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这次设计把理论运用到了实践当中。

在本次设计的过程中,我发现很多的问题,虽然以前也做过这样的课程设计但这次设计真的让我成长进步了许多,单片机课程设计重点就在于软件算法的设计,需要用很巧妙的程序算法,虽然以前上课时编写过几次程序,但编好一个完整的程序真的不是一件容易的事情,比如此次课设编写的程序我参考了一下类似的实例,用的都是16进制的数直接加减,显示处理时在用对不同的位,求商或求余,感觉效果比较好。还有时序的问题,通过这次的设

温馨提示

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

评论

0/150

提交评论