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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机MAX7219驱动显示的温度控制报警系统设计.docx

1、单片机MAX7219驱动显示的温度控制报警系统设计摘要本系统为基于单片机芯AT89C51的温度控制报警系统,能够测量0100的温度值,采用四位液晶显示测量数值。系统主要由51单片机最小系统、A/D转换电路、模拟量输入电路、数码管驱动电路、数码管显示电路以及温度报警电路这几部分组成。单片机最小系统设计采用AT89C51单片机作为主控芯片,配以RC上电复位电路和12MHz震荡电路;本次设计功能简单,利用可调电阻RV1代替温度传感器AD590,利用ADC0808模数转换芯片转换温度测量值;为使系统更加稳定、简洁,采用MAX7219驱动数码管LED显示。本文对测控系统的硬件、软件的组成进行了分项、模块

2、化逐步分析设计,通过硬件与软件的相结合,完成了本次系统设计的功能与参数。关键字:单片机、MAX7219、温度控制、ADC0808目录摘要 - 2 -关键字: - 2 -目录 - 3 -1 系统方案 - 4 -1.1设计目的 - 4 -1.2设计任务与要求 - 4 -1.3设计原理与分析 - 4 -2系统理论分析与计算 - 5 -2.1 设计芯片选择及功能简介 - 5 -2.1.1AT89C51简介 - 5 -2.1.2AT89C51的主要特性 - 6 -2.1.3AT89C51引脚功能 - 6 -2.2.1 ADC0808功能介绍 - 8 -2.2.2 ADC0808的内部逻辑结构 - 8 -

3、2.2.3ADC0808引脚结构 - 9 -2.3.1 MAX7219功能介绍 - 10 -2.3.2 MAX7219各引脚的功能 - 12 -2.3.3 MAX7219内部的寄存器 - 12 -2.3.4 MAX7219读写时序说明 - 14 -3电路与程序设计 - 15 -3.1电路的设计 - 15 -3.1.1系统总体框图 - 15 -3.1.2单片机最小系统电路原理图 - 16 -3.1.3ADC0808模数转换系统电路原理图 - 17 -3.1.3MAX7219显示系统电路原理图 - 17 -3.1.4报警系统电路原理图 - 18 -3.2程序的设计 - 18 -3.2.1程序功能描

4、述与设计思路 - 18 -3.2.2程序流程图 - 18 -4测试方案与测试结果 - 20 -4.1测试方案 - 20 -4.2 测试条件与仪器 - 20 -4.3 测试结果及分析 - 20 -4.3.1测试结果(数据) - 20 -4.3.2测试分析与结论 - 20 -参考文献 - 21 -附录1:电路原理图 - 22 -附录2:电路源程序 - 23 -1 系统方案本统主要由51单片机最小系统模块、A/D转换模块、数码管驱动模块、数码管显示模块以及温度报警模块这几部分组成。1.1设计目的1、利用51单片机实现家庭温度控制与报警系统的仿真与设计,加深对单片机的理性认识,通过实践操作提高我们的动

5、手能力以及理论联系实际的能力。2、熟悉ADC0808模/数转换器的工作原理,及其与单片机的接口方法和驱动程序设计。3、熟悉MAX7219的工作原理,与单片机的接口设计,以及驱动数码管的程序设计方法。4、熟悉AD590的工作原理以及ADC0808的接口与驱动程序的设计。掌握温度控制报警系统的设计方法,提高单片机应用系统的设计和调试能力。1.2设计任务与要求利用AD590温度传感器的功能,将测得的数值通过ADC0808模/数转换器完成模/数转换;采用MAX7219完成数码管的驱动;用51单片机进行数据处理最终将所测电压值通过数码管完成显示;当温度低于30、高于60时,发出报警信号,温度测量范围在0

6、100。1.3设计原理与分析1、当ADC0808完成数/模转换完由AD590发出的模拟信号后发出EOC信号通知单片机接收转换后的数字信号,并且进行数据处理和驱动MAX7219去驱动数码管完成显示功能。2、ADC080用到模拟通道1,启动START信息号线与P33连接,OE线与P31连接,EOC与P32连接, CLOCK时钟输入端与P34连接。3、通过单片机的控制,对AD590进行实时监控,当超出设定的温度值后,发出报警信号。2系统理论分析与计算2.1 设计芯片选择及功能简介2.1.1AT89C51简介AT89C51是一种带4K字节Fammable and Erasable Read Only

7、Memory)的低电压、高性LASH存储器(FPEROMFlash Progr能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器, AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示AT89C51外形及引脚排列。图2.1AT89C51的引脚结构2.1.2AT

8、89C51的主要特性 1、与MCS-51兼容。2、4K字节可编程FLASH存储器。3、寿命:1000写/擦循环。4、数据保留时间:10年。5、全静态工作:0Hz-24MHz。6、三级程序存储器锁定。7、1288位内部RAM。 8、2可编程I/O线。9、两个16位定时器/计数器。10、5个中断源。11、可编程串行通道。12、低功耗的闲置和掉电模式。13、片内振荡器和时钟电路。2.1.3AT89C51引脚功能VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以

9、被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输

10、出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0

11、 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为

12、振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密

13、方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信

14、号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。2.2.1 ADC0808功能介绍ADC0808是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。2.2.2 A

15、DC0808的内部逻辑结构 图2.2ADC0808的内部逻辑结构上图可知,ADC0808由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。2.2.3ADC0808引脚结构 图2.3 ADC0808引脚结构图IN0IN7:8条模拟量输入通道 ADC0808对输入模拟量要求:信号单极性,电压范围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,

16、则需在输入前增加采样保持电路。 地址输入和控制线:4条 。ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0IN7上的一路模拟量输入。通道选择表如下表所示。表2.1 地址输入线的通道选择CBA选择的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7表2.1 地址输入线的通道选择数字量输出及控制线:11条 。ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在

17、转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE1,输出转换得到的数据;OE0,输出数据线呈高阻状态。D7D0为数字量输出线。 CLK为时钟输入信号线。因ADC0808的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ, VREF(),VREF()为参考电压输入。 ADC0808应用说明:(1)ADC0808内部带有输出锁存器,可以与AT89S51单片机直接相连。 (2)初始化时,使ST和OE信号全为低电平。 (3)送要转换的哪一通

18、道的地址到A,B,C端口上。 (4)在ST端给出一个至少有100ns宽的正脉冲信号。 (5)是否转换完毕,我们根据EOC信号来判断。 (6)当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机。2.3.1 MAX7219功能介绍MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。该芯片具有10MHz传输率的三线串行接口可与任何微处理器相连,只需一个外接电阻即可设置所有LED的段电流。它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相

19、关的指令写入MAX7219的内部指令和数据寄存器,同时它还允许用户选择多种译码方式和译码位。此外它还支持多片7219串联方式,这样MCU就可以通过3根线(即串行数据线、串行时钟线和芯片选通线)控制更多的数码管显示。MAX7219的外部引脚分配如图2.4所示及内部结构如图2.5所示。图2.4 MAX7219的外部引脚分配图2.5 MAX7219的内部引脚分配2.3.2 MAX7219各引脚的功能DIN:串行数据输入端;DOUT:串行数据输出端,用于级连扩展;LOAD:装载数据输入;CLK:串行时钟输入;DIG0DIG7:8位LED位选线,从共阴极LED中吸入电流;SEG ASEG G 、DP7段

20、驱动和小数点驱动;ISET:通过一个10k电阻和Vcc相连,设置段电流。2.3.3 MAX7219内部的寄存器如图2.6:主要有译码控制寄存器、亮度控制寄存器、扫描界限寄存器、关断模式寄存器、测试控制寄存器。编程时只有正确操作这些寄存器,MAX7219才能工作。图 2.6 MAX7219内部的相关寄存器分别介绍如下:(1)译码控制寄存器(X9H) 如图2.7所示,MAX7219有两种译码方式:B译码方式和不译码方式。当选择不译码时,8个数据为分别一一对应7个段和小数点位;B译码方式是BCD译码,直接送数据就可以显示。实际应用中可以按位设置选择B译码或是不译码方式。图2.7 MAX7219的译码

21、控制寄存器(2)扫描界限寄存器(XBH)如图2.8所示,此寄存器用于设置显示的LED的个数(18),比如当设置为0xX4时,LED 05显示。图2.8 MAX7219的扫描界限控制寄存器(3)亮度控制寄存器(XAH)共有16级可选择,用于设置LED的显示亮度,从0xX00xXF(4)关断模式寄存器(XCH)共有两种模式选择:关断状态(最低位 D0=0)、正常工作状态(D0=1)。(5)显示测试寄存器(XFH)用于设置LED是测试状态还是正常工作状态,当测试状态时(最低位 D0=1)各位显示全亮,正常工作状态(D0=0)。各寄存器具体操作见驱动程序详解。2.3.4 MAX7219读写时序说明MA

22、X7129是SPI总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。要想与MAX7129通信,首先要先了解MAX7129的控制字。MAX7129的控制字格式如图2.9图2.9 控制字(即地址及命令字节)如图,工作时,MAX7219规定一次接收16位数据,在接收的16位数据中:D15D12可以与操作无关,可以任意写入,D11D8决定所选通的内部寄存器地址,D7D0为待显示数据或是初始化控制字。在CLK脉冲作用下,DIN的数据以串行方式依次移入内部16位寄存器,然后在一个LOAD上升沿作用下,锁存到内部的寄存器中。注意在接收时,先接收最高位D16,最后是D0,因此,在程序发送时

23、必须先送高位数据,在循环移位。工作时序图见图2.10。由于51是8位单片机故需要分两次来送数据。具体操作见驱动程序详解。图2.10 数据读写时序3电路与程序设计3.1电路的设计3.1.1系统总体框图本统主要由51单片机最小系统模块、A/D转换模块、数码管驱动模块、数码管显示模块以及温度报警模块这几部分组成,系统框图所示如下:图3.1 系统总体方框图3.1.2单片机最小系统电路原理图图3.2单片机最小系统电路原理图3.1.3ADC0808模数转换系统电路原理图图3.3ADC0808模数转换系统电路原理图3.1.3MAX7219显示系统电路原理图图3.4MAX7219显示系统电路原理图3.1.4报

24、警系统电路原理图图3.5报警系统电路原理图3.2程序的设计3.2.1程序功能描述与设计思路1、程序功能描述根据题目要求软件部分主要实现ADC数据转换、与显示。1)ADC数据转换功能:8位数据的采集。2)显示:通过MAX7219驱动程序驱动数码管显示。2、程序设计思路首先初始化MAX7219,然后初始化定时器,并打开定时器,为ADC0808提供时钟。最后开始ADC的转换,通过转换的值,检测是否报警,并送到MAX7219驱动LED显示。 3.2.2程序流程图1、主程序流程图图3.6主程序流程图2、MAX7219驱动LED显示子程序流程图图3.7 MAX7219驱动LED显示子程序流程图4测试方案与

25、测试结果4.1测试方案1、硬件测试 经过电路硬件测试,电路工作正常。2、软件仿真测试经过Protuse软件仿真,电路工作正常。3、硬件软件联调 经过软件与硬件共同调试,电路工作正常,满足给定任务的数据。4.2 测试条件与仪器测试条件:检查多次,仿真电路结构正确,工作正常,检查无误。测试仪器:proteus虚拟毫伏表。4.3 测试结果及分析4.3.1测试结果(数据)电压值00.511.522.533.544.55温度显示091930405059708090100表4.14.3.2测试分析与结论根据上述测试数据,由此可以得出以下结论:1、ADC0808的线性度的较好,不存在非线性转换。2、ADC0

26、808精度较大,仅8位,只能适用于一般精度不高的场合。综上所述,本设计达到设计要求。参考文献1 张毅刚 单片机原理及接口技术 人民邮电出版社 2008年10月 2 谭浩强 C程序设计(第三版) 清华大学出版社 2005年 7月3 华成英 模拟电子技术基本教程 清华大学出版社 2006年 2月 5 张永瑞 电子测量技术基础(第三版) 西安电子科技大学出版社 2004年 4月附录1:电路原理图附录2:电路源程序/*程序功能:1、实现MAX7219驱动2、实现ADC0808驱动3、温度控制及报警*/#include /* 定义MAX7219 内部寄存器 */#define DECODE_MODE 0

27、x09 /译码控制寄存器#define INTENSITY 0x0A /亮度控制寄存器#define SCAN_LIMIT 0x0B /扫描界限寄存器#define SHUT_DOWN 0x0C /关断模式寄存器#define DISPLAY_TEST 0x0F /测试控制寄存器/* 定义端口信号 */sbit DIN = P05; /串行数据输入sbit CS = P06; /片选信号sbit CLK = P07; /串行时钟sbit ADC_CLK = P34; /ADC时钟sbit START = P33; /ADC开始转化sbit OE = P31; /ADC数据输出允许sbit EO

28、C = P32; /转换结束信号sbit LED1=P36; /控制灯1sbit LED2=P37; /控制灯2sbit SPK=P35; /报警开关/* 函数原型说明 */void Init_Time();void Init_max7219(void); void Write7219(unsigned char address,unsigned char dat);void Display_Num( unsigned char s);void delay(unsigned long val);unsigned char Read_Adc(void);void alarm(temp);/* 主

29、函数 */void main(void)unsigned char temp; Init_max7219(); /初始化MAX7219 Init_Time(); /初始化定时器,为ADC0808提供工作时钟 while(1) Read_Adc(); /开始通道1转换 while(EOC); /转换完成 temp=(float)(float)(Read_Adc()/255)*100; alarm(temp); Display_Num(temp);/显示电压 /* 函数原型:void Write7219(unsigned char address,unsigned char dat)* 功 能:向指定的MAX7219内部寄存器写入数据* 参 数: address = MAX7219内部寄存器地址 dat = 待写入的数据*

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

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