东华多路温度巡回检测仪的设计报告.
- 格式:doc
- 大小:374.50 KB
- 文档页数:14
单片机课程设计——多路温度巡回检测仪的设计及单片机实验姓名:东京的樱花学号:10090####设计题目:7、多路温度巡回检测仪指导老师:潘#楼主造福东华学子啦,后面程序可以直接运行哦目录1、项目设计要求 (3)2、方案可行性分析........................................................ ........................................................ (3)3、硬件电路设计........................................................ ........................................................ (4)(1)、铂电阻测量单元........................................................ (4)(2)、按键控制单元........................................................ (5)(3)、AD转换单元........................................................ (6)(4)、LED数码管显示单元........................................................ (7)(5)、数据传输上位机单元........................................................ (8)4、整体硬件设计连接图........................................................ (9)5、软件设计........................................................ ........................................................ (10)(1)、软件设计思想........................................................ (10)(2)、程序流程图........................................................ (11)(3)、程序清单........................................................ (12)5、电路pcb原理图及pcb图设计........................................................ (13)6、系统protues仿真及调试........................................................ (15)7、结果与展望........................................................ ........................................................ (16)9、参考文献........................................................ ........................................................ (16)10、附录:程序源代码+ pcb 3d模拟图 (16)1、项目设计要求题7 多路温度巡回检测仪的设计设计一个多路温度检测仪,共有8个测温点,每个点连续检测8次,以平均值代表该点温度,并轮流在LED显示器上显示。
多路智能化温度巡检仪设计研究摘要:随着工业自动化程度的不断提高,温度监测在工业生产中的重要性日益突显。
为了实现对多个位置的温度监测和数据采集,本文设计了一种多路智能化温度巡检仪。
该设备采用了先进的传感技术和嵌入式系统,具有高精度、高稳定性和高自动化程度。
通过对温度监测仪的设计和实验验证,证明了其在工业生产环境中具有良好的应用前景。
关键词:温度监测;温度巡检仪;传感技术;嵌入式系统;自动化一、引言温度是工业生产过程中一项重要的参数,在许多工业领域都有着重要的应用。
化工行业需要对反应釜、管道等设备的温度进行监测;机械加工行业需要对机械设备的温度进行监测;电子行业需要对电子元器件的温度进行监测。
而在这些行业中,通常需要对多个位置的温度进行监测,并及时采集数据进行分析和处理。
传统的温度监测设备通常只能对单一位置的温度进行监测,无法实现对多个位置的温度同时监测。
为了解决这一问题,本文设计了一种多路智能化温度巡检仪,可以实现对多个位置的温度进行监测和数据采集。
1. 系统结构设计多路智能化温度巡检仪由传感器模块、数据采集模块、数据处理模块和显示模块组成。
传感器模块用于采集各个位置的温度数据,数据采集模块用于接收传感器模块采集的数据,数据处理模块用于对采集的数据进行处理和分析,显示模块用于显示监测结果。
2. 传感技术的选择为了实现对多个位置的温度进行监测,本文选用了数字温度传感器作为传感器模块的核心部件。
数字温度传感器具有精度高、抗干扰能力强、体积小等优点,非常适合工业生产中的温度监测应用。
3. 嵌入式系统的应用为了实现对采集的数据进行处理和分析,本文采用了嵌入式系统作为数据处理模块的核心部件。
嵌入式系统具有运算速度快、体积小、功耗低等优点,非常适合在工业生产环境中使用。
嵌入式系统还可以实现与上位机的通信,方便对监测结果进行远程监控和管理。
三、多路智能化温度巡检仪的实验验证为了验证多路智能化温度巡检仪的性能,本文进行了一系列的实验。
1 绪论温度是一个很重要的物理参数,自然界中任何物理、化学过程都紧密地与温度相联系。
在工业生产过程中,温度检测和控制都直接和安全生产、产品质最、生产效率、节约能源等重大技术经济指标相联系,因此在国民经济的各个领域中都受到普遍重视。
温度检测类仪表作为温度计量工具,也因此得到广泛应用。
随着科学技术的发展,这类仪表的发展也日新月异。
特别是随着计算机技术的迅猛发展,以单片机为主的嵌入式系统已广泛应用于工业控制领域,形成了智能化的测量控制仪器,从而引起了仪器仪表结构的根本性变革。
1.1 温度检测类仪表的现状传统的机械式温度检测仪表在工矿企业中己经有上百年的历史了。
一般均具有指示温度的功能,由于测温原理的不同,不同的仪表在报警、记录、控制变送、远传等方面的性能差别很大。
例如热电阻温度计,它的测温范围是-200℃~650℃,测量准确,可用于低温或温差测量,能够指示报警、远传、控制变送,但维护工作量大并且不能记录;光学温度计测温范围是300℃~3200℃,携带使用方便,价格便宜,但是它只能目测,也就是说必须熟练才能测准,而且不能报警、远传、控制变送。
近年来由于微电子学的进步以及计算机应用的日益广泛,智能化测量控制仪表己经取得了巨大的进展。
我国的单片机开发应用始于80 年代。
在这20 年中单片机应用向纵深发展,技术日趋成熟。
智能仪表在测量过程自动化,测量结果的数据处理以及功能的多样化方面。
都取得了巨大的进展。
目前在研制高精度、高性能、多功能的测量控制仪表时,几乎没有不考虑采用单片机使之成为智能仪表的。
从技术背景来说,硬件集成电路的不断发展和创新也是一个重要因素。
各种集成电路芯片都在朝超大规模、全CMOS 化的方向发展,从而使用户具有了更大选择范围。
这类仪器能够解决许多传统仪器不能或不易解决的问题,同时还能简化仪表电路,提高仪表的可靠性,降低仪表的成本以及加快新产品的开发速度。
智能化控制仪表的整个工作过程都是在软件程序的控制下自动完成的。
《电子课程》课程设计总结报告题目:多路温度巡检仪指导教师:设计人员:学号:班级:日期:目录一.设计任务书 (3)1.设计要求 (3)2.小组分工 (3)二.设计框图和整机概述 (3)三.各单元电路的设计方案及原理说明 (4)1.温度检测及放大电路设计 (4)2.A/D转换及数字显示电路的设计 (6)3.数字控制电路设计 (8)四.调试过程及结果分析 (9)1.首先进行温度检测放大电路调试 (9)2.逻辑控制电路调试 (10)3.数字电压表电路调试 (10)五.设计、安装及调试中的体会 (10)六.对本次课程实际的意见及建议 (11)七.附录 (11)一.设计任务书1.设计要求设计一个多路巡检仪,要求如下:能对三路温度巡检可对任意一路进行定点显示对测量温度进行数字显示测量温度范围0~150︒C测量精度+1︒C2.小组分工总体方案设计:电路板焊接:调试:报告撰写:二.设计框图和整机概述随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立进行温度检测和显示的系统已经应用于各个领域。
而最初的温度检测是需要人工目测温度计进行的,这样不仅浪费人工,而且存在很大的误差,因此能够随时进行温度巡检的温度巡检仪的设计就是非常必要的。
该巡检仪主要采用模拟电子电路实现。
系统采用线性度较好的温度传感器AD590进行多路温度检测,不仅能将所测的环境温度进行定时巡回检测,而且保证了检测的精度。
多路巡检仪主要包括四个部分,温度信号检测及放大部分、数字控制部分、A/D转换部分及数字显示部分。
系统的工作原理是:温度将首先经过温度传感器和放大电路变成与温度成线性关系的电压信号,然后经数字控制电路送到A/D转换器,最后通过数字显示器显示出测量的温度。
三.各单元电路的设计方案及原理说明1.温度检测及放大电路设计用于温度检测的常见温度传感器有热电阻、热电偶和半导体集成温度传感器.传统的温度检测用热电阻为温度敏感元件,虽然具有成本低的优点,但需要进行后续信号处理电路,且热电阻的可靠性相对较差,测量温度的准确度低,检测系统的精度差;热电偶传感器的价格低,但需冷端补偿,电路设计复杂,因此本次的课程实际我们选用了半导体集成温度传感器AD590。
一、实验目的1. 掌握多路温度监测系统的基本原理和设计方法。
2. 熟悉温度传感器的应用和特性。
3. 学会使用相关电子元件和仪器进行系统搭建。
4. 提高动手能力和实践操作技能。
二、实验原理多路温度监测系统主要利用温度传感器对多个测温点进行实时监测,并将采集到的温度数据传输到上位机进行处理和分析。
本实验采用DS18B20温度传感器和AT89C51单片机为核心控制器,通过单总线接口实现多路温度数据的采集。
三、实验仪器与设备1. 单片机开发板:AT89C512. DS18B20温度传感器:3个3. LCD1602显示屏:1个4. 按键模块:1个5. 电源模块:1个6. 蜂鸣器:1个7. 连接线:若干四、实验步骤1. 系统搭建:(1)将AT89C51单片机插入开发板,连接电源模块;(2)将3个DS18B20温度传感器通过单总线接口连接到AT89C51单片机的P3.7端口;(3)将LCD1602显示屏、按键模块、蜂鸣器等外围设备连接到相应的端口;(4)连接电源,确保系统正常工作。
2. 程序编写:(1)编写AT89C51单片机程序,实现温度采集、显示、报警等功能;(2)编写LCD1602显示屏显示程序,显示当前温度、温度状态、温度阈值等信息;(3)编写按键模块控制程序,实现温度阈值设置、模式切换等功能;(4)编写蜂鸣器报警程序,当温度超过阈值时,蜂鸣器发出报警声。
3. 系统测试:(1)启动系统,观察LCD1602显示屏是否正常显示温度信息;(2)调整按键模块,设置温度阈值,观察系统是否能够正确判断温度是否超过阈值;(3)将温度传感器放置在不同温度环境下,观察系统是否能够准确采集温度数据。
五、实验结果与分析1. 系统搭建成功,LCD1602显示屏正常显示温度信息;2. 通过按键模块设置温度阈值,系统能够正确判断温度是否超过阈值;3. 将温度传感器放置在0℃、25℃、50℃等不同温度环境下,系统能够准确采集温度数据。
《微机应用设计与实践》课程设计说明书一、 设计任务:设计一个以单片机为核心的多路温度巡回检测显示仪表系统。
通过多选一电子模拟开关及A/D转换器巡回采集各路温度传感及变送器的数据,进行信号处理及标度变换,以一定的节拍时间依序显示各检测回路的序号及温度值,并可通过按钮开关操控作冻结或切换显示,在单片机实验板台上模拟调试实现。
基本思想:本次的设计课题是:多路温度巡检仪。
课题的基本思想是以简单的微控制器为核心,以温度传感器(测温范围为:-50℃-+50℃)为基础,通过信号-电压变化器,将温度传感器采集到的温度信号转换成可供A/D转换器转换的0~5V模拟电压,而且可以实现多路温度的采集和变换。
经过信号-电压变换器输出的0~5 V电压再经过A/D转换器转换成一个八位的数字量(采集多路温度时,某一时刻只能有一路被进行转换),然后利用微控制器将这八位数字量进行读取,再经过一定的数字滤波和软件算法,最终以一定的显示格式在八位数码管上显示出来,在此基础上再添加其他功能,以提高系统的实际应用水平。
详细解释:多路温度巡检仪,顾名思义,首先要进行数据采集,何谓数据采集?就是将一般的物理量通过传感器转换模拟量,再经过变换电路转换为数字量供给CPU进行处理。
详细说来就是能检测并采集多路的温度信号,通过信号-电压变化器变换成一定的输出电压,供给A/D转换芯片进行模拟量和数字量的转换,从而得到一个与温度信号具有一定关系的数字量,而微控制器就采集这一数字量信号,进行一定的数字滤波和软件算法以及标度变换,从而得到一个数字量的温度值,再将这一温度值通过一定的显示手段显示出来的一个系统。
温度是一个信号,我们要知道这一信号的大小就需要对它进行一定的检测,这就需要传感器来实现,而一般的传感器检测输出的量都是不方便直接测量的电压或电流信号,因此需要对它进行放大和变换,使之有一定的带载能力,对它进行放大和变换这一过程就需要信号-电压变换器来完成,它能将微弱的信号进行放大并转换成具有一定带载能力的模拟电压输出。
多路温度检测系统的设计_毕业设计(论⽂)多路温度检测系统的设计摘要随着现代信息技术的飞速发展,温度测量控制系统在⼯业、农业及⼈们的⽇常⽣活中扮演着⼀个越来越重要的⾓⾊,它对⼈们的⽣活具有很⼤的影响,所以温度采集控制系统的设计与研究有⼗分重要的意义。
本次设计的⽬的在于学习基于51单⽚机的多路温度采集控制系统设计的基本流程。
本设计采⽤STC89C52单⽚机作为数据处理与控制单元,采⽤温度传感器PT100进⾏温度的采集把温度的物理量转化为电阻值。
然后通过PT100温度变送器把PT100温度传感器的电阻值转化为0-5V的电压值。
然后通过PCF8591AD转化模块把变换后的电压值转化为数字量。
最终传给单⽚机系统。
此设计有两个按键控制两路温度的显⽰切换。
从⽽达到多路监测的⽬的。
⽽且本次设计设有两个LED显⽰等分别表⽰正常温度和⾮正常温度两种形式。
正常温度转化为⾮正常温度的临界值可由键盘设定来达到实际⼯作的要求。
关键词:单⽚机,温度传感器,温度变送器,AD转化模块,I2C总线ABSTRACTWith the rapid development of modern information technology, temperature measurement and control system in industry, agriculture and people's daily life plays an increasingly important role in people's daily life, it has a great impact, so the temperature of the control system design and research are very important. This design aims to study based on 51 single-chip temperature acquisition and control system design of the basic flow. This design adopts STC89C52 chip as the data processing and control unit, with the temperature sensor PT100 gathering the temperature physical quantity into a resistance value. Then through the PT100 temperature transmitter PT100 temperature sensor resistance value into a 0-5V voltage value. Then through PCF8591 AD conversion module to transform the voltage value is converted into digital quantity. Finally to the microcontroller system. This design has two buttons control the two temperature display toggle to achieve the purpose of multi-channel monitoring. And the design of a two LED display respectively expressed in normal temperature and normal temperature two forms. Normal temperature into a normal temperature threshold may by the keyboard set up to achieve the demand of practical work.Key words: single chip, temperature sensor, temperature transmitter, AD conversion module, Inter-Integrated Circuit⽬录1引⾔ (1)1.1 课题研究的背景 (1)1.2 课题研究的⽬的和意义 (1)1.3 本⽂主要研究内容 (2)2硬件电路的设计 (3)2.1 系统设计的框架 (3)2.2 单⽚机的选型 (4)2.2.1STC89C52单⽚机的简介 (4)2.2.2STC89C52单⽚机时序 (4)2.2.3STC89C52单⽚机引脚介绍 (5)2.3 PCF8591AD转化模块 (7)2.4 PT100温度变送器 (9)2.5 PT100温度传感器 (11)2.5.1 设计原理 (11)2.5.2 应⽤范围 (11)2.5.3 分度表 (11)2.5.4 PT100温度传感器三根芯线的接法: (13)2.6 LCD1602显⽰器 (15)2.7 LED指⽰灯电路 (23)2.8 按键电路 (23)2.9 晶振电路 (24)3 系统软件设计 (25)3.1 I2C总线设计 (25)3.1.1 I2C总线特征 (25)3.1.2 I2C总线术语 (25)3.1.3 I2C总线位传输 (25)3.1.4数据的有效性 (26)3.1.5 起始和停⽌条件 (26)3.1.6 I2C总线数据传输 (27)3.2总流程图 (28)结论 (29)参考⽂献 (30)致谢 (31)附录A:系统原理图 (32)附录B:系统相关程序 (33)1引⾔1.1 课题研究的背景⼯业控制是计算机的⼀个重要应⽤领域,计算机控制系统正是为了适应这⼀领域的需要⽽发展起来的⼀门专业技术,它主要研究如何将计算机技术、通过信息技术和⾃动控制理论应⽤于⼯业⽣产过程,并设计出所需要的计算机控制系统。
多路温度巡回检测电路设计多路温度巡回检测电路是一种广泛应用于各种工业自动化控制系统中的电路。
它通过多个传感器同时检测不同位置或设备的温度,能够实时监测温度变化,并将数据反馈给控制系统,以实现温度的自动调节和保护。
下文将详细介绍多路温度巡回检测电路的设计思路和实现方法。
首先,传感器选择是电路设计过程中的第一步。
合适的温度传感器能够准确测量温度,并且适应不同环境和工作条件。
常见的温度传感器有热电偶、热敏电阻和温度传感器模块等。
根据具体需求选择合适的传感器,考虑到测量范围、响应时间和精确度等因素。
其次,信号放大与处理模块是实现传感器信号放大和滤波的重要部分。
通过运放等放大器将传感器信号放大到适合控制系统处理的范围,并进行滤波处理,提高信号质量。
滤波可以使用RC滤波器或数字滤波器等方法,根据实际情况选择合适的滤波器类型。
接下来,数据传输与显示模块将处理后的温度信号传输给控制系统,并在显示设备上显示。
可以通过模拟信号传输或数字通信方式将温度数据传输给控制系统,比如使用4-20mA电流信号传输或RS485通信协议。
为了方便操作和监控,可以在电路中增加LED显示模块或LCD显示屏,实时显示温度数据。
此外,还需要考虑电路供电问题。
多路温度巡回检测电路通常需要稳定的供电,可以使用稳压电源或电池供电,在供电线路中加入稳压电路、滤波电路和过压保护电路,以确保电路的稳定工作。
在具体设计多路温度巡回检测电路时,还需要根据具体应用需求灵活选择和组合各个模块,并综合考虑精度、稳定性、成本和可靠性等因素。
可以在实际布线过程中避免干扰和串扰,使用屏蔽线和地线连接传感器和信号处理模块,降低噪声干扰。
总之,多路温度巡回检测电路设计需要综合考虑传感器选择、信号放大与处理、数据传输与显示以及电源供电等因素。
通过合理选择和组合各个模块,能够实现多路温度的准确测量和有效监控,提高工业自动化控制系统的效率和可靠性。
多路智能化温度巡检仪设计研究随着技术的进步,工业生产的自动化程度越来越高。
在工业自动化过程中,温度测量是非常重要的一个参数。
多路智能化温度巡检仪的设计是针对工业生产环境下,实时测量各种物体的温度变化,及时预警异常状态,保证工业生产的正常运行,提高生产效率和质量。
多路智能化温度巡检仪是一种专门为工业自动化生产环境设计的智能温度测量仪器。
该仪器的主要功能特点如下:1、多路温度测量:具有多路温度模拟量输入,能够同时实时测量多个位置的温度变化。
2、溢出报警功能:当温度值超过设定值时,巡检仪会自动报警,及时预警异常状态。
3、数据存储功能:支持数据存储,可自动存储温度变化曲线和最近一次巡检数据,方便工程师进行数据分析和故障排查。
4、温度数据采集:支持温度数据采集,可将实时数据通过网络上传至计算机,方便远程监控。
5、可编程空间:具有可编程空间,可针对不同的生产环境进行自定义调整参数和报警阈值。
多路智能化温度巡检仪的硬件设计主要包括传感器、MCU主板、显示屏、光电隔离模块、温度校准和校验模块、网络模块和电源模块。
1、传感器:传感器是多路智能化温度巡检仪的核心组成部分,传感器通过检测不同物体的温度变化,将检测到的模拟信号转换为电信号,发送给MCU主板进行处理。
2、MCU主板:MCU主板是温度巡检仪的处理核心,主要由电源模块、片上存储器、数字信号处理器、通信界面和控制路线组成。
3、显示屏:工程师可以通过显示屏查看实时的温度变化曲线和参数设置,方便快捷。
4、光电隔离模块:温度巡检仪中的光电隔离模块采用AC/DC光耦隔离模块,可将输入的信号与输出的信号进行隔离,有效隔离潜在的电气噪声干扰和变化。
5、温度校准和校验模块:多路智能化温度巡检仪的传感器需要进行温度校准和校验,这样才能保证其稳定性和精度。
6、网络模块:多路智能化温度巡检仪的网络模块可以将实时数据通过网络上传至计算机进行监控和远程管理。
7、电源模块:多路智能化温度巡检仪的电源模块采用直流供电方式。
温度巡检仪器设计报告摘要:以DS18B20为传感器,介绍如何利用DS18B20和单片机组成一个温度测量系统,主要部分包括DS18B20的基本功能和和测量原理,DS18B20和单片机的接口电路以及单片机编程控制温度测量的C51程序。
器件和原理:1 DS18B20的基本特性● 采用1-Wire总线接口,可以方便实现多点测温。
● 与主机连接方便,除5kΩ的总线上拉电阻外无须其他额外器件。
● 电源电压范围为3.0~5.5V,与3.3V和5V数字系统均可很好地兼容。
● 测量范围为-55~+125℃,分辨率为9~12位可编程。
● 通过编程可设置温度报警上下限,设置值掉电不丢失。
● 内部集成了用于器件寻址的64bit光刻ROM编码。
2 DS18B20中的存储器在DS18B20中共有三种存储器,分别是ROM、RAM、EEPROM,每种存储器都有其特定的功能。
3 1-Wire总线ROM功能命令在DS18B20内部光刻了一个长度为64bit的ROM编码,这个编码是器件的身份识别标志。
当总线上需要挂接着多个DS18B20时,可以预先逐一读出ROM编码,需要注意的是在读编码的时候,只能是有且仅有一个DS18B20在总线上。
当总线上有多个DS18B20时,可以通过ROM编码对特定器件进行操作。
ROM功能命令是针对器件的ROM编码进行操作的命令,共有5个,长度均为8bit(1Byte)。
①读ROM(33H):当挂接在总线上的1-Wire总线器件接收到此命令时,会在主机读操作的配合下将自身的ROM编码按由低位到高位的顺序依次发送给主机。
总线上挂接有多个DS18B20时,此命令会使所有器件同时向主机传送自身的ROM编码,这将导致数据的冲突。
②匹配ROM(55H):主机在发送完此命令后,必须紧接着发送一个64bit的ROM 编码,与此ROM编码匹配的从器件会响应主机的后续命令,而其他从器件则处于等待状态。
该命令主要用于选择总线上的特定器件进行访问。
多路温度巡回检测仪的设计一设计任务及要求:设计一个多路温度检测仪,共有8个测温点,每个点连续检测8次,以平均值代表该点温度,并轮流在LED显示器上显示。
测试检测元件为铂热电阻Pt1000, 温度测量范围为100℃——+500℃,测量精度为±1℃。
系统每隔10秒完成一个点的测量,测量值除在LED显示器上显示外,还必须通过串行口(RS485)发送到上位机。
任何时刻,可以通过按键切换显示通道。
二设计框图三实验原理以AT89C51单片机为核心的多路温度巡回检测控制系统,主要用来对多路温度测量结果进行选择性监控;该系统主要由单片机、传感器、多路转换开关、A/D转换器和驱动显示电路等组成。
其中温度传感器将温度信号转化成电压的信号,为了提高设计的精度,用具有低零点漂移繁荣放大器OP193将采集来的微弱的电压信号放大。
由于单片机处理的是数字信号,所以用模数转换电路将放大的模拟电信号转换成数字量输入到单片机,通过AT89C51的软件控制对输入的数字信号进行处理后输出,通过八位共阴极LED数码管动态扫描驱动电路MAX7219对测量结果进行显示。
四实验电路设计(1)温度传感器——18B20DS18B20 的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。
其一个工作周期可分为两个部分,即温度检测和数据处理。
DS18B20 数字温度传感器具有超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强。
DS18B20 的主要特征:全数字温度转换及输出。
先进的单总线数据通信。
最高 12 位分辨率,精度可达土 0.5摄氏度。
12 位分辨率时的最大工作周期为 750 毫秒。
可选择寄生工作方式。
检测温度范围为100°C ~+500°C内置 EEPROM,限温报警功能。
64 位光刻 ROM,内置产品序列号,方便多机挂接。
(2)CPU主控模块——AT89C51At89C51是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。
使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8 位微控制器8K 字节在系统可编程 Flash。
五实验调试及运行结果六设计体会通过这次对多路温度巡回检测系统的设计,让我了解了利用所学单片机知识设计电路的程序与方法,也让我了解了关于多路温度巡回检测系统的基本原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。
通过这次学习,让我对各种电路都有了大概的了解,对proteus软件的使用也更为熟练。
对于这些电路还是应该自己动手实际操作才会有深刻理解。
七试验程序源代码#include <reg52.h>#include<I2C.H>#include<LCD1602.H>#include<UART.h>#define PCF8591 0x90 //PCF8591的地址选择第零号通道#define NOKEY 0xff //OXff代表没有按键按下#define START 0x00 // 0x00 代表PCF8591开始转化的命令sbit cd4051A= P2^4; //CD4051 的通道值用于选择输入的通道号sbit cd4051B= P2^3;sbit cd4051C= P2^2;unsigned char OPEN=1; //总开关标志unsigned char keynumber; //按键值unsigned char volatile send; //串口发送标志unsigned char volatile channel=0; // 当前通道unsigned char volatile tick=0;code unsigned char disc1[]={"Temp of No. :"};unsigned int temperature[8]={250,250,250,250,250,250,250,250}; //设置温度初始值/**************************************函数声明部分**************************************************************/unsigned char Keyscan(void); //键盘扫描void AD_Convert(unsigned char); //AD转换程序void Display(unsigned char k); // 显示程序void TargetInit(void);void Delay(unsigned char delay);void Lcddisplay(unsigned char number);void Delay(unsigned char);/************************************************************************** ***************************************************/void Delay(unsigned char timedelay) //延时函数{unsigned char i;for(;timedelay<0;timedelay--){for(i=0;i<110;i++);}}// 硬件的初始化//void TargetInit(void){TMOD=0x21;TR1=0;TH1=0xfd;TL1=0xfd;TR0=0;TH0=(65536-46080)/256; //11.0592Mhz下的50ms 定时TL0=(65536-46080)%256;ET0=1;SM0=0;SM1=1;REN=1;ES=1;EA=1;TR0=1;TR1=1;}/*****************************************************************中断处理函数******************************************************/void Timer_ISR(void) interrupt 1{ TR0=0;TH0=(65536-46080)/256; //重载计数器初值TL0=(65536-46080)%256;tick++;if((tick % 20)==0) //发送标志每隔1秒置位一次即每隔一秒使用串口发送一次数据{send=1; //发送标志置位}if(tick==100){ tick=0;channel++;if(channel>7){channel=0;} //隔10秒切换到下一个通道}TR0=1;}/*******************************AD转换函数******************************************************************************* **************************/void AD_Convert(unsigned char number){ float AD_data;float sum=0;unsigned char ch;switch(number){case 0: cd4051C=0; //选择转换通道cd4051B=0;cd4051A=0;break;case 1: cd4051C=0;cd4051B=0;cd4051A=1;break;case 2: cd4051C=0;cd4051B=1;cd4051A=0;break;case 3: cd4051C=0;cd4051B=1;cd4051A=1;break;case 4: cd4051C=1;cd4051B=0;cd4051A=0;break;case 5: cd4051C=1;cd4051B=0;cd4051A=1;break;case 6: cd4051C=1;cd4051B=1;cd4051A=0;break;case 7: cd4051C=1;cd4051B=1;cd4051A=1;break;}//Delay(5);for(ch=0; ch<8; ch++){ISendByte(PCF8591,START); //开始转换选择通道0AD_data=(float)IRcvByte(PCF8591); //读取转换结果²AD_data=(AD_data/256)*5.0; // 转换结果/256 *5VAD_data=AD_data*100; //if(AD_data<100){AD_data=100;}sum=sum+AD_data;}sum=sum/8; //取连续转换八次的的平均值temperature[number]=(unsigned int)sum;}/************************************************显示函数******************************************************************************* ***********/void Lcddisplay(unsigned char number){ unsigned int dis[3];dis[0]=temperature[number]/100+'0'; //百位dis[1]=(temperature[number]%100)/10+'0'; //十位dis[2]=(temperature[number])%10+'0'; //各位lcd_pos(0,0);prints(disc1);lcd_pos(11,0);lcd_wdat(number+'0');lcd_pos(5,1);lcd_wdat(dis[0]);lcd_wdat(dis[1]);lcd_wdat(dis[2]);lcd_wdat(' ');lcd_wdat('C');}/***************************************************************按键扫描函数*************************************************************************/ unsigned char Keyscan(void){ unsigned char number;number=0xff; //如果无按键按下则返回0xffif(P1!=0xff){Delay(10);if(P1!=0xff){ switch(P1){case 0xfe:number=0; break; //如果有按键按下则返回按下的按键号case 0xfd:number=1; break;case 0xfb:number=2; break;case 0xf7:number=3; break;case 0xef:number=4; break;case 0xdf:number=5; break;case 0xbf:number=6; break;case 0x7f:number=7; break;}}}return(number);}void main(){ TargetInit();lcd_init();while(1){ if(~OPEN) //如果上位机发送OFF命令则停止显示{lcd_wcmd(0x01);}while(OPEN){while(Keyscan()!=NOKEY){ keynumber=Keyscan();AD_Convert(keynumber); //有按键按下时转换和显示按键对应的通道Lcddisplay(keynumber);if(send){ send=0;Uartsend("the temp of No.",keynumber, temperature[keynumber] );}}AD_Convert(channel);Lcddisplay(channel); // 无按键按下时转换当前的通道if(send){send=0;Uartsend("the temp of No.",channel, temperature[channel] );}}}}。