ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:662.12KB ,
资源ID:9169487      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9169487.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于简单IO口的8LED显示温度控制器设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于简单IO口的8LED显示温度控制器设计.docx

1、基于简单IO口的8LED显示温度控制器设计一、实验目的及要求、实验目的、设计要求二、要求分析三、系统框架图四、元件明细表、单片机、显示屏五、系统电路总体设计六、系统电路总体设计、系统工作原理、硬件系统设计、系统程序设计七、系统总体调试八、实验总结九、附录参考文献十、附录程序清单基于简单I/O口的8LED显示温度控制器设计一、设计要求(1)基本要求: 1 用18B20或AD590温度传感器作温度探头,采集温度数据并转换成BCD码在数码管上显示。 2 记录间隔可任意设定(1S到1h,步长1s),能按设定时间存储数据。 3 通过键回放温度和记录时间参数。(2)发挥部分: 1 通过DA回放数据(直方图

2、),用模拟示波器显示。2 设定温度告警门限。 3 通过声、光告警显示。(3)动态显示格式:自定 注:基于简单IO口是指显示器由74HC373控制二、要求分析根据设计要求,需要利用DS18B20作为温度探头,采集温度数据并转换成BCD码在数码管上显示。当按下键盘的设定步长按键后,可以设定任意长度的步长,能按设定时间存储数据。当按下键盘的读取存储数据按键后,可以通过按键1-9来回放相应的温度和记录时间参数。三、系统框架图键盘单片机89C518LED锁存器74HC373DS18B20四元件明细表元件名称 型号单片机89C51温度探测器DS18B20锁存器74LS373数码显示器7SEG-MPX8-C

3、C-BLUE4*4键盘KEYPAD-SMALLCALC1、单片机 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。作为嵌入式系统控制核心的单片机具有其体积小、功能全、性价比高等诸多优点。51 系列单片机是国内目前应用最广泛的单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51 系列单片机的发展又进入了一个新的阶段。在今后很长一段时间内51 系列单片机仍将占据嵌入式系统产品的中低端市场。2、显示屏五、总体方案的确定在温度采集方面,在设计开始时就准备了两种方案:一种是采用热敏电阻式传感器和ADC0809转换器进行数据采集。具体方案如下

4、:温度传感器的模拟信号转换为数字信号后由P0口输入。ADC0809由P3.0启动转换,由P3.1控制输出。信号传输采用无条件输入方式,启动A/D转换后延时100微妙从P0口采集数据。时间延迟由T0实现。另一种是采用单线数字温度传感器DS18B20进行数据采集。DSB18B20S数字温度计提供9到12位温度读数,指示器件的温度信息经过单线接口送入DS18B20送出,因此从中央处理器到DS18B20仅需连接一条线和地,读写和完成温度变换所需的电源可以由数据线本身提供,甚至不需要外部电源。而总体方案和系统电路图方面基本上和热敏式传感器相同,只在数据采集方面有所差别。根据选择传感器的原则,考虑到模拟量

5、输出传感器会带来许多不便,具体体现在接线多、信号处理复杂等,在硬件实现方面比较困难。而且热敏电阻式温度传感器互换性差,非线性严重。而数字温度传感器DS18B20接线简单,数字输出量能直接作为单片机的输入数据, 同时考虑到只是在普通环境下测量,无论在灵敏度、线性范围、稳定性,还是在精度方面,DS18B20的强大功能已足够满足设计需要。在本次设计中,温度数据采集用到的传感器是DS18B20。具体电路图如图1所示。图1 数字传感器式温度控制器六、系统电路总体设计1、系统工作原理该温度控制系统用到89C51单片机作为系统的CPU进行控制控制,由数字传感器DS18B20进行数据采集,89C51对采集到的

6、数据进行处理,得到各种信号。而这些信号将作为LED数码管显示的信号输入,同时将利用单片机的其它使能端口实现键盘的控制作用。2、硬件系统设计系统的硬件部分主要可分为温度采集电路,信号处理与控制控制,温度显示电路,键盘控制电路四大部分。(1)温度采集电路本系统中采集温度使用的是DS18B20数字温度传感器。 DS18B20是Dallas 半导体公司生产的世界上第一片支持 “一线总线”接口的温度传感器。与之前的传感器相比,DS18B20体积更小、适用电压更宽、更经济。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20 “一线总线”数字化温度传感器支

7、持“一线总线”接口,测量温度范围为 -55到+125,在-10到+85范围内,精度为0.5。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V到5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。DS18B20可以程序设定9到12位的分辨率,精度为0.5。当分辨率为12位时,转换时间为750ms。使得用户可选择更小的封装方式,更宽的电压适用范围和分辨率设定,同时用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20一般为三

8、极管型封装,包括温度传感器、64位激光ROM单线单口、存放中间数据的高速暂存器、用于存储用户设定的温度上下限值、触发器存储与控制逻辑、8位循环冗余校验码发生器等。其引脚图如图2所示。这三个引脚分别为:GND电源地;QD数字信号输入/输出端;VDD外接供电电源(可选5V)。图2 DS18B20引脚图在单片机89C51中,输入/输出端口分别P0、P1、P2、P3。其中P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻吧端口拉到高电位,这时可用作输入口。P3作输入口使用时,因为有内部的上拉电阻,那些被电阻拉低的引

9、脚会输出一个电流。在该系统中,DS18B20的数字信号输入/输出端连接到89C51的P3.7中,作为89C51的数据输入。(2)信号处理与控制电路信号处理与控制采用51单片机基本电路。此电路以51单片机为核心,51的具体引脚图如图3。在该系统中,要使单片机实现信号处理与控制,则要使单片机的18、19脚(XTAL2、XTAL1)接12MHz的晶振和两个电容,组成片内振荡电路,为单片机提供时钟脉冲。9脚(RST)接按键复位电路,提供复位信号给单片机。图3 89C51引脚图 89C51芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为XTAL1,输出端为XTAL2,两端跨接石英晶体

10、及两个电容就可以构成稳定的自激振荡器。两个电容通常取30pF左右,稳定频率并对震荡频率有微调作用。如图4所示。图4 晶振电路手动复位是通过接通一按钮开关,使单片机进入复位状态。系统上电运行后,若需要复位,则通过手动复位来实现的。如图5所示。 图5 手动复位电路(3) 温度显示电路本系统中,温度显示硬件由74HC373和八位LED数码管构成。1.八位LED数码管八位数码管引脚图如图6所示。它的1、2、3、4、5、6、7、8脚为位选脚,分别对应从左到右八个数码管,输入低电平选通。剩下的其他引脚为数据输入脚,此电路中数码管的8个数据引脚(a、b、c、d、e、f、g、dp)。图6 LED数码管引脚图

11、2、74HC373 373为三态输出的八口透明锁存器,共有74HC373和74LS373两种线路结构形式。在本系统中,采用74HC373,因为在PROTUES仿真里,用74LS373会被报错。74HC373的D0-D7脚分别与单片机的P0.0-P0.7脚相连。74HC373引脚图如图7所示: 图7 74HC373引脚图(4)键盘控制电路键盘控制电路的作用是通过按键回放温度和记录时间参数。当所设置的功能键或数字键按下时,单片机系统应该完成该按键所设定的功能,因此,键的输入信息是与软件结构密切相关的。在本系统中采用4*4的键盘,键盘的列线与P1口的低4位相连,行线与P1口的高4位相连。键盘控制电路

12、如图8所示: 图8 键盘控制电路3、系统程序设计(1)主程序模块(如图9所示)。主程序开始读取温度温度转换温度显示键盘按下按键盘要求作处理结束 图9 主程序流程图(2)DS18B20的工作流程如图10所示。 图11 DS18B20的工作流程(3)温度显示流程图如图11所示。 图11 温度显示流程图(4)键盘控制电路流程图如图12所示是否有键按下执行相应操作显示新设置返回 图12 键盘控制电路流程图完整的程序请详见附录。七、系统的调试1、程序调试过程中遇到的问题和解决办法1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器采用串行数据传送,因此,在对DS1820进行读写编程时

13、,必须严格的保证读写时序,否则将无法读取测温结果。2)在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦DS1820连线未接好,当程序读该DS1820时,将没有返回信号,程序进入死循环。这一点在进行DS1820软件设计时也要给予一定的重视。3)编程时要注意,在程序开始时,要写入各定时器中断的入口地址。4)编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。5) 程序的结构要设计的合理,避免上下乱调用的现象,这样会使程序更加清晰化。6)编程前要加流程图,这样会使思路清晰。2、调试结果(1)温度显示结果 DS182

14、0采集温度数据并转换成BCD码在8位LED上显示,结果如图13所示: 图13 温度显示结果(2)键盘控制显示结果 通过键盘回放温度和记录时间参数,结果如图13所示: 图13 键盘控制显示结果八、实验总结这次的课程设计,我觉得我学到了很多的东西,受益匪浅。首先我了解了proteus软件的基本使用方法,以及利用这个软件用来仿真,对于电路的设计有了一定的理解,懂得了如何利用C语言联系实际来进行编程,同时在编程的过程中,了解一些管脚的使用方法,以及在C语言中使用的代码和一些器件的初始化方法,同时也让我明白了自己的一些不足,认识到仅仅把书本上的知识学好是远远不够的,需要拓宽自己的知识面,来应付未来的挑战

15、。 当然在本次课程设计中,我遇到了很多没有遇到过的困难,于是图书馆和INTERNET成了我们很好的助手。在查阅资料的过程中,我们要判断优劣、取舍相关知识,不知不觉中我们查阅资料的能力也得到了很好的锻炼。我们学习的知识是有限的,在以后的工作中我们肯定会遇到许多未知的领域,这方面的能力便会使我们受益非浅。而且在设计过程中,总是遇到这样或那样的问题。有时发现一个问题的时候,需要做大量的工作来进行调试,然后才能解决。自然而然,我分析问题解决问题的能力得到了增强。为以后的工作积累了经验,增强了信心。通过这次的软件设计,我熟悉了单片机开发的每个步骤,它不但检查了我的整个知识面的掌握程度,知道了自己的不足,

16、让我更加牢固的掌握了单片机方面的相关知识!这次的软件设计也让我学会了在遇到问题时,如何冷静的思考问题以及解决问题!更让我懂得了学习贵在坚持。我学到了更多以前没有学到过的知识。在这里,我很感谢指导老师和同学给我的帮助,使我能顺利完成我的软件设计。 总之通过本次设计,让我很好的锻炼了理论联系实际,如何把理论应用于实际,又如何实践中遇到的问题怎样用理论去解决。感谢学校给我们大家这样一次课程设计的机会,为我们以后的工作打下了坚实的基础。附录 参考文献雷晓平,李晓东,罗海天.2021 .单片机原理及应用.机械工业出版社于珍珠,赵娜,赵刚等.2021 .基于51单片机的温度测量系统.单片机开发与应用.23

17、(1-2):146-148齐建家,胡天明.2021.基于DS18B20的数字温度设计及其应用.黑龙江工程学院学报.22(2):59-62罗平,陶冶.袁永超.2021 .基于DS18B20的温度测量系统.农机化研究.(10):161-164曹柏荣.2021 .单片机原理及其应用技术.上海:原子能出版社曹海平.2021.基于单片机和DS18B20的分布式多点温度检测系统的设计.自动化技术与应用.27(11):90-93魏英智.2021 .DS18B20在温度控制中的应用.煤矿机械.(3):92-93魏泽鼎.2021 .单片机应用技术与实例.北京:电子工业出版社附录 程序清单#include #in

18、clude #include #include #include typedef unsigned char uchar; typedef unsigned int uint;typedef signed char schar;typedef signed int sint;#define DQ P3_7 /温度检测 P3.7#define KEY_SET 14 / on/c#define KEY_COMFIRM 15 / =extern void DelayXms(uint xms);extern uchar KeyScan();uchar code dis_code11=0x3f,0x06

19、,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;/ 0-9、负号,共阴极数码管uint timecnt = 0,step = 1,stepcnt = 0;uchar temptable11,position=0;schar temp=0;/延时函数 void DelayXus(uint i) while(i-);/初始化函数void InitialDS18B20() uchar x=0; DQ = 1; /DQ复位 DelayXus(8); /稍做延时 DQ = 0; /单片机将DQ拉低 DelayXus(80); /精确延时 大于 480us DQ

20、 = 1; /拉高总线 DelayXus(14); x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 DelayXus(20);/读一个字节uchar ReadByte() uchar i=0,dat = 0; for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; DelayXus(4); return dat;/写一个字节void WriteByte(uchar dat) uchar i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; Del

21、ayXus(5); DQ = 1; dat=1; /DelayXus(4);/读取温度uint ReadTemperature() uchar a=0; uchar b=0; uint t=0; float tt=0; InitialDS18B20(); WriteByte(0xCC); / 跳过读序号列号的操作 WriteByte(0x44); / 启动温度转换 InitialDS18B20(); WriteByte(0xCC); /跳过读序号列号的操作 WriteByte(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=ReadByte(); b=ReadByte

22、(); t=b; t=8; t=t|a; tt=t*0.0625;/5/8; /t= tt*10+0.5; /放大10倍输出并四舍五入-此行没用 return t;/*ledplay 数码管显示,chan 0-8,num 数值0-9 、负号*/void ledplay(uchar chan,uchar num)if(chan 8 & num = 10 ) P2 = 0xff; P2= (0x01chan);/选取第N位 P0 = dis_codenum; /显示 DelayXms(100);/ delay(); void InitTimer1(void) TMOD = 0x10; TH1 =

23、0xFC; TL1 = 0x18; EA = 1; ET1 = 1; TR1 = 1;/*tempdisplay 温度显示函数*/void tempdisplay(schar tem) schar tempbit1=0; schar tempbit2=0;/ if(tem= 125)return; if(tem 99) ledplay(5, 1);tem = tem - 100; tempbit1 = tem%10;/个位HexToBcd tempbit2 = tem/10;/十位 ledplay(6,tempbit2); ledplay(7,tempbit1); /*Timer1Interr

24、upt 定时器1000us*1000 = 1s*/void Timer1Interrupt(void) interrupt 3 TH1 = 0xFC; TL1 = 0x18; timecnt+; if (timecnt = 1000)/1s-温度值存放 timecnt = 0; stepcnt +; if (stepcnt = step) stepcnt = 0; if(position10) temptableposition+= temp; else temptableposition= temp;position = 0; uint setStep( ) uchar key,i = 0;

25、 uint step = 0; P2 = 0xff;/清屏 for(;) key = KeyScan(); if (key = KEY_COMFIRM) return step; if(key 10) step = key; for(;) key = KeyScan(); ledplay(7,step); if (key = KEY_COMFIRM) return step; if(key 10) step =step*10 + key; for(;) key = KeyScan(); if (key = KEY_COMFIRM) return step; ledplay(6,step/10)

26、; ledplay(7,step%10); if(key 10) step =step*10 +key; for(;) key = KeyScan(); if (key = KEY_COMFIRM) return step; ledplay(5,step/100); ledplay(6,(step%100)/10); ledplay(7,step%10); if(key 4; tempdisplay(temp);/主循环 显示温度 key = KeyScan(); /检查按键 ledplay( 0, key ); if(key = KEY_SET)/进入设置状态 if(0 != (j = setStep() step =

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1