基于51单片机系统设计
- 格式:doc
- 大小:613.10 KB
- 文档页数:17
基于51单片机的毕业设计一、选题背景二、设计目标三、硬件设计1.系统框图设计2.电路原理图设计3.电路元器件选择与参数计算四、软件设计1.程序流程设计2.程序模块设计与编写五、测试与调试六、总结与展望一、选题背景毕业设计是大学生在校期间的一项重要任务,是对所学知识的综合运用和实践能力的考验。
本文将以基于51单片机的毕业设计为例,介绍其选题背景、设计目标、硬件设计、软件设计及测试与调试等方面。
51单片机是一种广泛应用于嵌入式系统中的微控制器,其具有性价比高、易于编程等特点,因此被广泛应用于各种嵌入式系统中。
在毕业设计中使用51单片机进行开发,既可以锻炼学生的嵌入式系统开发能力,又可以提高学生对单片机原理和应用的理解。
二、设计目标本次毕业设计旨在开发一款基于51单片机的智能家居控制系统。
该系统能够通过手机APP或者语音识别等方式控制家居设备的开关,实现智能化控制。
具体的设计目标如下:1.设计一款基于51单片机的硬件系统,包括电路原理图、电路元器件选择与参数计算等。
2.设计一款基于51单片机的软件系统,包括程序流程设计、程序模块设计与编写等。
3.实现手机APP或者语音识别等方式控制家居设备的开关。
4.保证系统的可靠性和稳定性,确保系统能够长时间稳定运行。
三、硬件设计1.系统框图设计本次毕业设计中,我们需要开发一款智能家居控制系统。
该系统主要由以下几个部分组成:51单片机、无线通信模块、继电器模块、传感器模块以及电源模块。
其中,51单片机作为整个系统的核心控制器,负责接收外部信号并进行处理;无线通信模块用于实现与手机APP或者语音识别设备之间的通信;继电器模块用于控制家居设备的开关;传感器模块用于采集环境数据,并将数据传输给51单片机;电源模块则提供稳定可靠的供电支持。
2.电路原理图设计根据上述系统框图,我们可以设计出相应的电路原理图。
具体而言,我们需要设计51单片机的电路、无线通信模块的电路、继电器模块的电路、传感器模块的电路以及电源模块的电路。
题目门禁控制系统设计【摘要】本设计是利用T7122M-I工业级ID读卡模块实现的门禁控制器,具有存储一张管理卡和多张用户卡的功能,同时管理人员还可以通过按键更改管理卡,增加、删除用户卡等操作,门禁刷卡控制刷卡距离约为5—12CM。
关键词:门禁系统、T7122M-I工业级读卡模块。
目录摘要 (2)第1章门禁系统的概述 (4)1.1 门禁系统概念 (4)1.2 门禁系统的特点 (4)第2章门禁系统的设计要求 (4)2.1 设计要求 (4)第3章门禁系统的方案论证 (4)3.1门禁系统的总体方案 (4)3.2门禁系统的各个方案论证 (5)3.2.1.单片机控制芯片模块 (5)3.2.1.键盘控制块 (5)第4章门禁系统的硬件部分 (6)4.1主控芯片部分 (6)4.2键盘控制部分 (7)4.3蜂鸣器控制部分 (8)4.4T7122M-I工业读卡模块 (8)第5章门禁系统的软件部分 (9)第6章门禁系统的软、硬件调试 (12)6.1硬件调试 (12)6.2软件调试 (12)6.3软、硬件设计注意事项 (12)结论 (13)致谢 (13)参考文献 (14)附录1:系统程序。
(15)第1章门禁系统的概述1.1 门禁系统概念出入口门禁控制系统采取以感应卡来取代用钥匙开门的方式。
使用者用一张卡可以打开多把门锁, 对门锁的开启也可以有一定的时间限制。
如果卡丢失了,不必更换门锁,只需将其从控制主机中注销。
出入口门禁控制系统是通过对出入口的准入情况进行控制、管理和记录的设备,对何人何时在何地进行详细跟踪,以实现中心对出入口的24小时控制、监视及管理。
1.2 门禁系统的特点系统将ID卡技术、计算机控制技术与电子门锁有机结合,用ID卡替代钥匙,配合计算机实现智能化门禁控制和管理,有效的解决了传统门锁的使用繁琐和无法信息记录等不足,利用数据控制器采集的数据实现数字化管理可为内部人力资源的有效管理等带来意想不到的效果。
电子钥匙:授权后的ID卡即可当作电子钥匙,将此电子钥匙感应器前一晃, 控制器对该卡进行身份验证,验证合法后即控制电子门锁自动打开。
基于51单片机的太阳能热水器控制系统设计一、本文概述随着全球对可再生能源需求的日益增加,太阳能作为一种清洁、可持续的能源形式,已经引起了广泛的关注和应用。
太阳能热水器作为一种常见的太阳能应用产品,其在节能减排、提高生活质量等方面具有显著的优势。
然而,太阳能热水器在实际使用过程中,仍存在一些问题,如水温控制不稳定、能效利用率不高等。
为了解决这些问题,本文提出了一种基于51单片机的太阳能热水器控制系统设计方案。
该系统以51单片机为核心控制器,结合温度传感器、水位传感器、执行机构等硬件设备,实现了对太阳能热水器水温和水位的精确控制。
通过实时监测水温和水位信息,系统能够自动调整加热功率和补水流量,确保水温稳定在用户设定的范围内,同时避免了水资源的浪费。
系统还具有故障诊断功能,能够及时发现并处理潜在的故障问题,提高了系统的可靠性和稳定性。
本文首先介绍了太阳能热水器的工作原理和现状,分析了传统控制系统存在的问题和不足。
然后,详细阐述了基于51单片机的太阳能热水器控制系统的硬件组成和软件设计。
在硬件设计方面,本文介绍了各个硬件模块的功能和选型原则,包括温度传感器、水位传感器、执行机构等。
在软件设计方面,本文详细说明了系统的控制算法和程序流程,包括温度控制算法、水位控制算法、故障诊断算法等。
本文通过实验验证了系统的可行性和有效性,为太阳能热水器的智能化、高效化提供了有益的探索和实践。
本文的研究不仅有助于提升太阳能热水器的能效利用率和用户体验,还为其他可再生能源应用产品的智能化控制提供了有益的参考和借鉴。
本文的研究成果对于推动太阳能热水器行业的技术进步和产业发展具有重要的现实意义和应用价值。
二、太阳能热水器控制系统总体设计太阳能热水器控制系统的总体设计是确保整个系统高效、稳定运行的关键。
在设计过程中,我们充分考虑了太阳能热水器的实际应用场景和用户需求,以及51单片机的性能特点,从而构建了一个既实用又可靠的控制系统。
《基于51单片机的温度控制系统设计与实现》篇一一、引言在现代工业控制领域,温度控制系统的设计与实现至关重要。
为了满足不同场景下对温度精确控制的需求,本文提出了一种基于51单片机的温度控制系统设计与实现方案。
该系统通过51单片机作为核心控制器,结合温度传感器与执行机构,实现了对环境温度的实时监测与精确控制。
二、系统设计1. 硬件设计本系统以51单片机为核心控制器,其具备成本低、开发简单、性能稳定等优点。
硬件部分主要包括51单片机、温度传感器、执行机构(如加热器、制冷器等)、电源模块等。
其中,温度传感器负责实时监测环境温度,将温度信号转换为电信号;执行机构根据控制器的指令进行工作,以实现对环境温度的调节;电源模块为整个系统提供稳定的供电。
2. 软件设计软件部分主要包括单片机程序与上位机监控软件。
单片机程序负责实时采集温度传感器的数据,根据设定的温度阈值,输出控制信号给执行机构,以实现对环境温度的精确控制。
上位机监控软件则负责与单片机进行通信,实时显示环境温度及控制状态,方便用户进行监控与操作。
三、系统实现1. 硬件连接将温度传感器、执行机构等硬件设备与51单片机进行连接。
具体连接方式根据硬件设备的接口类型而定,一般采用串口、并口或GPIO口进行连接。
连接完成后,需进行硬件设备的调试与测试,确保各部分正常工作。
2. 软件编程编写51单片机的程序,实现温度的实时采集、数据处理、控制输出等功能。
程序采用C语言编写,易于阅读与维护。
同时,需编写上位机监控软件,实现与单片机的通信、数据展示、控制指令发送等功能。
3. 系统调试在完成硬件连接与软件编程后,需对整个系统进行调试。
首先,对单片机程序进行调试,确保其能够正确采集温度数据、输出控制信号。
其次,对上位机监控软件进行调试,确保其能够与单片机正常通信、实时显示环境温度及控制状态。
最后,对整个系统进行联调,测试其在实际应用中的性能表现。
四、实验结果与分析通过实验测试,本系统能够实现对环境温度的实时监测与精确控制。
基于51单片机的毕业设计Introduction51单片机是一种广泛应用于嵌入式系统开发的芯片,其低功耗、稳定性和易用性使其成为许多设计师的首选。
在毕业设计中,基于51单片机的项目可以涉及各种领域,如智能家居、智能交通系统、工业自动化等。
本文将探讨基于51单片机的毕业设计的一些重要方面和技术要点。
Challenges in Designing with 51 Microcontroller在基于51单片机的毕业设计中,可能会面临一些挑战。
以下是一些可能的挑战和解决方案:1.有限的存储空间:51单片机通常具有有限的内存和存储空间,这可能限制了项目的功能和复杂度。
在设计中,需要仔细考虑如何有效地利用存储空间,可以使用压缩算法或使用外部存储器扩展存储空间。
2.低性能:与一些现代微控制器相比,51单片机的性能较低,可能无法满足某些要求。
在设计中,应合理评估项目的性能需求,并根据需求选择合适的单片机型号。
3.缺乏先进的功能和接口:与一些先进的微控制器相比,51单片机可能缺少某些先进的功能和接口,如Wi-Fi、蓝牙和USB。
在设计中,如果需要这些功能和接口,可以考虑使用外部设备或其他芯片来扩展功能。
Design Considerations在进行基于51单片机的毕业设计时,有几个设计方面需要考虑:1. 功能需求首先要明确设计的功能需求。
这包括项目的目标、功能和性能要求。
有了清晰的功能需求,才能更好地定义系统的硬件和软件架构。
2. 硬件设计硬件设计涉及选择合适的单片机型号、外围设备和传感器,并设计电路原理图和PCB布局。
在设计硬件时,需要考虑到电源管理、信号音频处理、输入输出接口等方面。
3. 软件开发软件开发是基于51单片机的毕业设计中的关键部分。
软件开发涉及编写嵌入式C 语言程序、配置和使用开发工具、进行调试和测试等。
在软件开发期间,需要遵循良好的编码规范,并进行充分的测试和验证。
4. 系统集成与调试系统集成是将硬件和软件组合在一起,并进行调试和验证的过程。
基于51单片机毕业设计基于51单片机的毕业设计在计算机科学与技术领域,毕业设计是学生完成学业的重要一环。
对于电子信息工程专业的学生而言,基于51单片机的毕业设计是一种常见的选择。
51单片机是一种经典的单片机芯片,广泛应用于各种嵌入式系统中。
本文将探讨基于51单片机的毕业设计的一些可能方向和实现方法。
一、智能家居控制系统设计智能家居是当今社会的热门话题,通过将各种家电设备连接到互联网,实现远程控制和自动化管理。
基于51单片机的毕业设计可以设计一个简单的智能家居控制系统。
系统可以通过手机APP或者网页界面控制家中的灯光、电视、空调等设备。
通过学习和研究相关的通信协议和电路设计,学生可以实现这个功能。
二、智能车设计智能车是一个非常有趣和实用的项目。
基于51单片机的毕业设计可以设计一个能够自主避障、跟随线路行驶的智能车。
学生可以通过学习红外传感器、超声波传感器等硬件知识,实现智能车的避障功能。
同时,学生还可以学习线路规划算法,使得智能车能够按照预定的路径行驶。
三、温湿度监测系统设计在许多实际应用中,温湿度的监测是非常重要的。
基于51单片机的毕业设计可以设计一个温湿度监测系统。
学生可以通过学习温湿度传感器的原理和使用方法,实现对环境温湿度的实时监测。
同时,学生还可以设计一个简单的数据存储和显示系统,将温湿度数据保存到存储器中,并通过LCD屏幕显示出来。
四、无人机控制系统设计无人机是近年来非常热门的领域之一。
基于51单片机的毕业设计可以设计一个简单的无人机控制系统。
学生可以通过学习无人机的控制原理和飞行动力学知识,实现对无人机的遥控和自主飞行功能。
同时,学生还可以学习无线通信协议,将无人机与遥控器进行通信。
五、智能医疗设备设计智能医疗设备是医疗行业的一个新兴领域。
基于51单片机的毕业设计可以设计一个简单的智能医疗设备。
学生可以通过学习心电图传感器、血压传感器等硬件知识,实现对患者的生理参数监测。
同时,学生还可以设计一个简单的报警系统,当患者的生理参数异常时,及时发出警报。
基于51单片机的多机通信系统设计多机通信系统是指通过一台主机与多台从机之间进行数据交互和通信的系统。
在本设计中,我们将使用51单片机实现一个基于串行通信的多机通信系统。
系统硬件设计如下:1.主机:使用一个51单片机作为主机,负责发送数据和接收数据。
2.从机:使用多个51单片机作为从机,每个从机负责接收数据和发送数据给主机。
3.串口:主机和从机之间通过串口进行通信。
我们可以使用RS232标准通信协议。
系统软件设计如下:1.主机设计:a.初始化串口:设置串口参数,如波特率、数据位、停止位等。
b.发送数据:将需要发送的数据存储在发送缓冲区中,通过串口发送给从机。
c.接收数据:接收从机发送的数据,并存储在接收缓冲区中。
2.从机设计:a.初始化串口:设置串口参数,如波特率、数据位、停止位等。
b.接收数据:接收主机发送的数据,并存储在接收缓冲区中。
c.发送数据:将需要发送的数据存储在发送缓冲区中,通过串口发送给主机。
系统工作流程如下:1.主机启动,执行初始化操作,包括初始化串口。
2.从机启动,执行初始化操作,包括初始化串口。
3.主机发送数据给从机:主机将需要发送的数据存储在发送缓冲区中,通过串口发送给从机。
4.从机接收并处理数据:从机接收主机发送的数据,并存储在接收缓冲区中,对接收到的数据进行处理。
5.从机发送数据给主机:从机将需要发送的数据存储在发送缓冲区中,通过串口发送给主机。
6.主机接收并处理数据:主机接收从机发送的数据,并存储在接收缓冲区中,对接收到的数据进行处理。
7.主机和从机循环执行步骤3-6,实现多机之间的数据交互和通信。
多机通信系统的设计考虑到以下几个方面:1.硬件设计:需要合理选择单片机和串口的类型和参数,确保系统的稳定性和可靠性。
2.软件设计:需要设计适应系统需求的通信协议和数据处理提取方法,保证数据的准确性和完整性。
3.通信协议:需要定义主机和从机之间的通信协议,包括数据的格式、传输方式等,以便实现正确的数据交互。
基于51单片机的粮食烘干炉温度控制系统设计摘要:粮食烘干是农业生产中非常重要的一环,对于保证粮食质量和储存寿命具有重要意义。
本文基于51单片机设计了一种粮食烘干炉温度控制系统,通过对温度的实时监测和控制,实现了对粮食烘干过程中温度的自动调节。
实验结果表明,该系统能够有效地控制粮食烘干过程中的温度,提高了烘干效果。
关键词:51单片机;粮食烘干;温度控制;自动调节第一章绪论1.1 研究背景随着农业生产水平的提高和人们对粮食质量要求的不断提高,传统的太阳能和人工晾晒等方法已经无法满足现代农业生产中对于高质量、高效率、低成本、低能耗等方面需求。
因此,采用科学合理的方法进行粮食烘干成为了现代农业生产中不可或缺的环节。
1.2 研究目的和意义本文旨在设计一种基于51单片机的粮食烘干炉温度控制系统,通过对温度的实时监测和控制,实现对粮食烘干过程中温度的自动调节。
通过该系统,可以提高粮食烘干过程中的温度控制精度和稳定性,提高烘干效果,保证粮食质量。
第二章系统设计2.1 系统框架本系统主要由传感器、51单片机、执行器和人机交互界面等组成。
传感器用于实时监测炉内温度情况,将数据传输给51单片机进行处理;51单片机根据监测到的数据进行分析处理,并根据设定值控制执行器调节加热功率;人机交互界面用于设定目标温度、显示当前温度等。
2.2 传感器选择与接口设计在本系统中,选择了一种高精度、稳定性好的温度传感器作为监测元件。
该传感器通过模拟量信号输出当前温度值,并与51单片机进行连接。
2.3 信号采集与处理51单片机通过模拟输入接口采集传感器输出的模拟量信号,并通过模数转换将其转换为数字量信号。
然后,通过软件算法对数字信号进行处理,得到当前温度值。
2.4 控制算法设计本系统采用PID控制算法进行温度控制。
PID控制算法是一种经典的控制算法,具有调节快、稳定性好、适应性强等特点。
通过对PID参数的调整,可以实现对温度的精确控制。
2.5 执行器设计本系统采用电热丝作为执行器。
基于51单片机的GPS定位系统设计
GPS定位系统是一种高精度、高可靠性的定位技术,基于51单
片机的GPS定位系统可以用于车辆、船只、无人机等物体的追踪和
导航。
以下是基于51单片机的GPS定位系统设计的步骤:
1. 硬件设计:
GPS模块:选择一款支持串口通信,输出NMEA协议的GPS模块。
51单片机:选择适当的型号,具备较好的计算和通信能力。
显示模块:可以选择LCD显示屏或OLED显示屏来显示当前的定
位信息。
电源模块:GPS模块和51单片机都需要可靠的电源供应,可以
选择锂电池或干电池。
外部存储模块:为了存储历史定位数据,可以选择SD卡存储模块。
2. 软件设计:
a.串口通信程序:通过串口通信程序从GPS模块接收NMEA协议
的数据。
b.解析程序:解析NMEA协议的数据,并提取相关的定位信息
(经度、纬度、速度、时间等)。
c.定位算法:采用常见的定位算法(如卡尔曼滤波、迭代解算等)来计算当前位置。
d.存储程序:将计算出的位置信息存储到SD卡中。
e.显示程序:利用LCD或OLED显示屏显示当前的定位信息。
3. 系统测试
将系统部署到实际场景中进行测试,记录数据并进行分析。
根据测试结果对系统进行改进和优化,以提高其可靠性和精度。
总之,基于51单片机的GPS定位系统设计需要较高的硬件和软件开发能力,需要深入了解GPS原理、51单片机编程以及相关算法的实现方式。
基于51单片机的步进电机控制系统设计步进电机是一种特殊的直流电动机,具有定角度、定位置、高精度等特点,在许多领域得到广泛应用,如机械装置、仪器设备、医疗设备等。
本文将基于51单片机设计一个步进电机控制系统,主要包括硬件设计和软件设计两部分。
一、硬件设计步进电机控制系统的硬件设计主要包括51单片机、外部电源、步进电机驱动模块、以及其他辅助电路。
1.51单片机选择由于步进电机控制需要执行复杂的算法和时序控制,所以需要一个性能较高的单片机。
本设计选择51单片机作为主控芯片,因为51单片机具有丰富的外设接口、强大的计算能力和丰富的资源。
2.外部电源步进电机需要较高的电流供给,因此外部电源选择稳定的直流电源,能够提供足够的电流供电。
电源电压和电流的大小需要根据具体的步进电机来确定。
3.步进电机驱动模块步进电机驱动模块是连接步进电机和51单片机的关键部分,它负责将51单片机输出的脉冲信号转化为对步进电机的驱动信号,控制步进电机准确转动。
常用的步进电机驱动芯片有L297、ULN2003等。
4.其他辅助电路为了保证步进电机控制系统的稳定运行,还需要一些辅助电路,如限流电路、电源滤波电路、保护电路等。
这些电路的设计需要根据具体的应用来确定。
二、软件设计1.系统初始化系统初始化主要包括对51单片机进行外部中断、定时器、串口和IO 口等初始化设置。
根据实际需求还可以进行其他模块的初始化设置。
2.步进电机驱动程序步进电机的驱动程序主要通过脉冲信号来控制电机的转动。
脉冲信号的频率和脉冲宽度决定了电机的转速和运行方向。
脉冲信号可以通过定时器产生,也可以通过外部中断产生。
3.运动控制算法步进电机的运动控制可以采用开环控制或闭环控制。
开环控制简单,但无法保证运动的准确性和稳定性;闭环控制通过对电机转动的反馈信号进行处理来调整脉冲信号的生成,从而实现精确的运动控制。
4.其他功能设计根据具体的应用需求,可以加入其他功能设计,如速度控制、位置控制、加速度控制等。
基于51单片机的多路温度采集控制系统设计言:随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系统的设计与研究有十分重要的意义。
本次设计的目的在于学习基于51单片机的多路温度采集控制系统设计的基本流程。
本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。
单片机数据处理之后,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到LED进行显示。
本系统可以实现多路温度信号采集与显示,可以使用按键来设置温度限定值,通过进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和继电器的目的。
我所采用的控制芯片为AT89c51,此芯片功能较为强大,能够满足设计要求。
通过对电路的设计,对芯片的外围扩展,来达到对某一车间温度的控制和调节功能。
关键词:温度多路温度采集驱动电路正文:1、温度控制器电路设计本电路由89C51单片机温度传感器、模数转换器ADC0809、窜入并出移位寄存器74LS164、数码管、和LED显示电路等组成。
由热敏电阻温度传感器测量环境温度,将其电压值送入ADC0809的IN0通道进行模数转换,转换所得的数字量由数据端D7-D0输出到89C51的P0口,经软件处理后将测量的温度值经单片机的RXD端窜行输出到74LS164,经74LS164 窜并转换后,输出到数码管的7个显示段,用数字形式显示出当前的温度值。
89C51的P2.0、P2.1、P2.2分别接入ADC0809通道地址选择端A、B、C,因此ADC0809的IN0通道的地址为F0FFH。
输出驱动控制信号由p1.0输出,4个LED为状态指示,其中,LED1为输出驱动指示,LED2为温度正常指示,LED3为高于上限温度指示,LED4为低于下限温度指示。
当温度高于上限温度值时,有p1.0输出驱动信号,驱动外设电路工作,同时LED1亮、LED2灭、LED3亮、LED4灭。
外设电路工作后,温度下降,当温度降到正常温度后,LED1亮、LED2亮、LED3灭、LED4灭。
温度继续下降,当温度降到下限温度值时,p1.0信号停止输出,外设电路停止工作,同时LED1灭、LED2灭、LED3灭、LED4亮。
当外设电路停止工作后,温度开始上升,接着进行下一工作周期。
2、温度控制器程序设计本软件系统有1个主程序,6个子程序组成。
6个子程序为定时/计数器0中断服务程序、温度采集及模数转换子程序ADCON、温度计算子程序CALCU、驱动控制子程序DRVCON、十进制转换子程序METRICCON 及数码管显示子程序DISP。
(1)主程序主程序进行系统初始化操作,主要是进行定时/计数器的初始化。
(2)定时/计数器0中断服务程序应用定时计数器0中断的目的是进行定时采样,消除数码管温度显示的闪烁现象,用户可以根据实际环境温度变化率进行采样时间调整。
每当定时时间到,调用温度采集机模数转换子程序ADCON,得到一个温度样本,并将其转换为数字量,传送给89C51单片机,然后在调用温度计算子程序CALCU,驱动控制子程序DRVCON,十进制转换子程序MERTRICCON,温度数码显示子程序DISP。
(3)温度采集及模数转换子程序ADCON该子程序进行温度采样并将其转换为8位数字量传送给89C51的P0口。
采样得到的温度数据存放在片内RAM的20H单元中。
(4)温度计算子程序CALCU根据热敏电阻的分度值和电路参数计算出出一张温度表,存放在DATATAB数据表中,由于篇幅关系,本程序只给出0-49℃的温度数据。
一个温度有两个字节组成,前一字节为温度值,后一字节为该温度所对应的热敏电阻上的电压的数字量。
根据采样值,通过查表及比较的方法计算出当前的温度值,并将其存入片内RAM的21H单元。
采用查表法计算温度值时为了克服热敏电阻的阻值——温度特性曲线的非线性,提高测量精度。
(5)驱动控制子程序DRVCON该子程序调节温度,当温度高于上限温度时(本程序设为30℃),P1.0输出驱动控制信号,驱动外设工作降温;当温度下降到下限温度时(本程序设为25℃),P1.0停止输出,温度上升,周而复始;工作状态有LED1-LED4指示。
(6)十进制转换子程序METRICCON将存放于内部RAM21H单元的当前温度值得二进制数形式转换为十进制数(BCD码)形式,以便输出显示,转换结果存放在片内RAM的32H单元(百位)、31H(十位)、30H单元(个位)。
(7)数码显示子程序DISP该子程序利用89C51串口的方式0串行移位寄存器工作方式,将片内RAM的30H、31H、32H单元的BCD码查表转换为七段码后由RXD端串行发出去,然后经74LS164串并转换,将七段值传送给数码管,以十进制形式显示出当前温度值。
根据以上分析画出的部分程序设计流程图如图1-0至图1-4所示。
图1-0 部分程序设计流程图的设计框架图1-1 主程序流程图图1-2 T0中断服务程序流程图图1-3 温度采样及模数转换子程序流程图图1-4 温度计算子程序流程图3、具体内容(1)温度控制器电器原理图设计按以上分析及相关知识设计出的温度控制器电路原理图如图1-5所示。
图1-5 温度控制电路原理图(2)温度数据表在图1-5所示的电路中,热敏电阻的连接如图1-6所示。
图1-6 热敏电阻的连接本设计所使用的热敏电阻的分度表及ADC0809转换后的电压数字量见附表1-1所示转换后的电压数字量的计算方法为:热敏电阻与R8并并联后的总电阻:R=(Rt*R8)/(Rt+R8)R与R7串联电路中R的分压值(即输入ADC0809的模拟量):V=5R/(R+R7)5V被分成256等分(8位量化),则每份的电压值:△=5/256输入的模拟量电压经8位量化后的数字量:D=V/△例如,热敏电阻在温度为20℃时的阻值为62.254千欧,则根据上述方法计算出的电压数字量为169,注意在计算中R7用实测值19.6千欧代入进入计算。
在实际做该电路时,可根据自己所选择的热敏电阻的分度表计相关电路参数,按上述方法计算出ADC0809转换后的各温度对应的电压数字量。
程序中的温度数据表构成:1个温度数据占2个字节,前一字为温度值,后一个字节为该温度下热敏电阻上的模拟电压转换成德8位数字量。
如在20℃时,热敏电阻对应的电压数字量为169,则20,169组成一个温度为20℃的温度数据。
按这样方法组成的0-49℃的温度数据表如下:DATA TAB:DB 0,194,1 ,193 ,2 ,192,3,191,4,190DB 5,189,6,188,7 ,187,8,186,9,185DB10,184,11,182,12,181,13,180,14,178DB 15,177,16,175,17,174,18,173,19,171DB 20,169,21,168,22,166,23,165,24,163DB 25,161,26,159,27,158,28,,156,29,154DB 30,152,31,150,32,149,33,147,34,145DB 35,143,36,141,37,139,38,147,39,135DB 40,133,41,131,42,129,43,127,44,125DB 45,123,46,121,47,118,48,116,49,114在温度采样机模数转换子程序中,采样得到的当前温度下热敏电阻上的数字电压存于20H单元,在温度计算子程序中通过查表的方法从表中的第一个温度(0℃)下热敏电阻上的数字电压开始,依次取出各温度下热敏电阻上的十字电压,与与存于20H单元的当前温度下热敏电阻上的的数字电压比较,如小于当前温度的数字电压,则在取出下一温度的数字电压与当前温度的数字电压比较;直到大于或等于当前的温度数字电压,比较结束。
如大于则取出前一温度作为当前温度存于21H单元,如等于则将该温度作为但前温度存于20H单元。
这种温度计算方法,避免了温度特性曲线的非线性对温度计算精确性的影响,计算出的温度非常精确。
(3)温度控制程序设计在本设计中,晶体振荡器频率为6MHz,T0定时时间为100ms,T0工作于方式1,则T0的初值为:X=(最大计数值M―定时时间t/及其周期Tm)=216 -100ms/2us=15536=3CB0H按以上任务分析设计出的源程序如下:ORG 0000H;跳转到主程序LJMP MAIN;ORG 000BH;LJMP T0INT;跳转到T0中断服务程序;主程序ORG 0100H;MAIN:MOV R1,#10; T0 100马上定时溢出计数寄存器R1赋初值10MOV P1,#0FFH; 所有指示灯灭MOV SP,#60H; 堆栈指针赋初值60HMOV TMOD,#01H; T0定时、方式1、软启动MOV TL0,#0B0H; T0赋初值MOV TH0,#3CH;MOV IE,#82H; 开放T0中断SETB TR0; 启动T0SJMP $;定时/计数器0中断服务程序ORG 0200H;T0INT:DJNZ R1,NEXT; T0溢出10次,即1s进一次采样处理LCALL ADCON; 调用温度采样及模数转换子程序LCALL CALCU; 调用温度计算子程序LCALL DRVCON; 调用驱动控制子程序LCALL METRICCON; 调用十进制转换子程序LCALL DISP; 调用数码管显示子程序MOV R1,#10; R1重赋值10NEXT:MOV TL0,#0B0H; T0重装初值MOV TH0,#3CH;RETI;温度采样及模数转换子程序ORG 0300H;ADCON:MOV DPTR,#0F0FFH; 选通ADC0809通道0MOV A,#00H;MOVX @DPTR,A; 启动A/D转换HERE:JNB P3.3,HERE; 判断数据转换是否结束,没结束则等待MOVX A,@DPTR; 读取转换后的数据MOV 20H,A; 将从ADC0809中读取的当前温度下热敏电阻上的电压值存于20H单元RET ;温度计算子程序ORG 0400H;CALCU:MOV R2,#01H; R2为数据表的索引值寄存器MOV DPTR,#DA TATAB; 温度数据表首地址送DPTRNEXT1:MOV A,R2; 索引值送AMOVC A,@A+DPTR; 查表取出某一温度的数字电压值CJNE A,20H,K1; 与当前温度的数字电压值比较DEC R2; 等于当前温度的数字电压值,则查表取出该温度值作为当前温度值MOV A,R2;MOVC A,@A+DPTR;LJMP K3;K1:JNC K2; 大于当前温度的数字电压值,则继续取出下一温度的数字电压进行比较DEC R2; 小于当前温度的数字电压值,则查表取出前一个温度值作为当前温度值DEC R2DEC R2MOV A,R2;MOVC A,@A+DPTR;LJMP K3;K2:INC R2;INC R2;LJMP NEXT1;K3:MOV 21H,A; 将当前温度值存于21H单元RET;DATA TAB;DB 0,194,1,193,2,192,3,191,4,190;温度数据表DB 5,189,6,188,7,187,8,186,9,185DB 10,184,11,182,12,181,13,180,14,178DB 15,177,16,175,17,174,18,173,19,171DB 20,169,21,168,22,166,23,165,24,163DB 25,161,26,159,27,158,28,156,29,154DB 30,152,31,150,32,149,33,147,34,145DB 35,143,36,141,37,139,38,137,39,135DB 40,133,41,131,42,129,43,127,44,125DB 45,123,46,121,47,118,48,116,49,114驱动控制子程序ORG 0500H;DRVCON:MOV A,21H; 取出当前温度值CJNE A,#30,J1; 与上限温度值(30℃)比较LJMP GO;J1:JNC DRV1; 若高于上限温度,则输出驱动信号,同时高于上限温度指示灯点亮CJNE A,#25,J2; 与显现温度(25℃)比较LJMP GO;J2:JC DRV2; 弱低于下限温度,则驱动信号停止输出,同时点亮低于下限温度的指示灯LJMP GO;DRV1:CLR P1.0;SETB P1.1;CLR P1.2;SETB P1.3;LJMP OVER;DRV2:SETB P1.0SETB P1.1;CLR P1.2;SETB P1.3;LJMP OVER;DRV2:SETB P1.0;SETB P1.1;SETB P1.1;SETB P1.2;CLR P1.3;LJMP OVER;GO:CLR P1.1; 在下线温度(25℃)至上限温度(30℃)之间,则驱动信号保持前面状态,同时温度正常指示灯点亮SETB P1.2;SETB P1.3;OVER:RET;;十进制转换子程序ORG 0600H;METRICCON:MOV R3,#00H; 将存于21H单元中的当前温度转换为BCD码MOV R4,#00H; 百位存于32H单元,十位存于31H单元,个位存于30H单元MOV A,21H;CLR C;W1:SUBB A,#100;JC W2;INC R4;AJMP W1;W2:ADD A,#100;CLR C;W3:SUBB A,#10;JC W4;INC R3;AJMP W3;W4:ADD A,#10;MOV 30H,A;MOV 31H,R3;MOV 32H,R4;RET;;数码管显示子程序ORG 0700H;DISP:MOV R5,#03H; 将存于32H单元、31H单元、30H单元中的温度BCD码查表转换为七段码MOV R0,#30H; 通过串行ORG 0100H;MAIN:MOV R1,#10; T0 100马上定时溢出计数寄存器R1赋初值10MOV P1,#0FFH; 所有指示灯灭MOV SP,#60H; 堆栈指针赋初值60HMOV TMOD,#01H; T0定时、方式1、软启动MOV TL0,#0B0H; T0赋初值MOV TH0,#3CH;MOV IE,#82H; 开放T0中断SETB TR0; 启动T0SJMP $;定时/计数器0中断服务程序ORG 0200H;T0INT:DJNZ R1,NEXT; T0溢出10次,即1s进一次采样处理LCALL ADCON; 调用温度采样及模数转换子程序LCALL CALCU; 调用温度计算子程序LCALL DRVCON; 调用驱动控制子程序LCALL METRICCON; 调用十进制转换子程序LCALL DISP; 调用数码管显示子程序MOV R1,#10; R1重赋值10NEXT:MOV TL0,#0B0H; T0重装初值MOV TH0,#3CH;RETI;温度采样及模数转换子程序ORG 0300H;ADCON:MOV DPTR,#0F0FFH; 选通ADC0809通道0MOV A,#00H;MOVX @DPTR,A; 启动A/D转换HERE:JNB P3.3,HERE; 判断数据转换是否结束,没结束则等待MOVX A,@DPTR; 读取转换后的数据MOV 20H,A; 将从ADC0809中读取的当前温度下热敏电阻上的电压值存于20H单元RET ;温度计算子程序ORG 0400H;CALCU:MOV R2,#01H; R2为数据表的索引值寄存器MOV DPTR,#DA TATAB; 温度数据表首地址送DPTRNEXT1:MOV A,R2; 索引值送AMOVC A,@A+DPTR; 查表取出某一温度的数字电压值CJNE A,20H,K1; 与当前温度的数字电压值比较DEC R2; 等于当前温度的数字电压值,则查表取出该温度值作为当前温度值MOV A,R2;MOVC A,@A+DPTR;LJMP K3;K1:JNC K2; 大于当前温度的数字电压值,则继续取出下一温度的数字电压进行比较DEC R2; 小于当前温度的数字电压值,则查表取出前一个温度值作为当前温度值DEC R2DEC R2MOV A,R2;MOVC A,@A+DPTR;LJMP K3;K2:INC R2;INC R2;LJMP NEXT1;K3:MOV 21H,A; 将当前温度值存于21H单元RET;DATA TAB;DB 0,194,1,193,2,192,3,191,4,190;温度数据表DB 5,189,6,188,7,187,8,186,9,185DB 10,184,11,182,12,181,13,180,14,178DB 15,177,16,175,17,174,18,173,19,171DB 20,169,21,168,22,166,23,165,24,163DB 25,161,26,159,27,158,28,156,29,154DB 30,152,31,150,32,149,33,147,34,145DB 35,143,36,141,37,139,38,137,39,135DB 40,133,41,131,42,129,43,127,44,125DB 45,123,46,121,47,118,48,116,49,114驱动控制子程序ORG 0500H;DRVCON:MOV A,21H; 取出当前温度值CJNE A,#30,J1; 与上限温度值(30℃)比较LJMP GO;J1:JNC DRV1; 若高于上限温度,则输出驱动信号,同时高于上限温度指示灯点亮CJNE A,#25,J2; 与显现温度(25℃)比较J2:JC DRV2; 弱低于下限温度,则驱动信号停止输出,同时点亮低于下限温度的指示灯LJMP GO;DRV1:CLR P1.0;SETB P1.1;CLR P1.2;SETB P1.3;LJMP OVER;DRV2:SETB P1.0SETB P1.1;CLR P1.2;SETB P1.3;LJMP OVER;DRV2:SETB P1.0;SETB P1.1;SETB P1.1;SETB P1.2;CLR P1.3;LJMP OVER;GO:CLR P1.1; 在下线温度(25℃)至上限温度(30℃)之间,则驱动信号保持前面状态,同时温度正常指示灯点亮SETB P1.2;SETB P1.3;OVER:RET;;十进制转换子程序ORG 0600H;METRICCON:MOV R3,#00H; 将存于21H单元中的当前温度转换为BCD码MOV R4,#00H; 百位存于32H单元,十位存于31H单元,个位存于30H单元MOV A,21H;CLR C;W1:SUBB A,#100;JC W2;INC R4;AJMP W1;W2:ADD A,#100;CLR C;W3:SUBB A,#10;JC W4;INC R3;AJMP W3;W4:ADD A,#10;MOV 30H,A;MOV 31H,R3;RET;;数码管显示子程序ORG 0700H;DISP:MOV R5,#03H; 将存于32H单元、31H单元、30H单元中的温度BCD码查表转换为七段码MOV R0,#30H; 通过串行通信方式0输出驱动3个数码管,显示当前温度MOV DPTR,#TAB;LOOP:MOV A,@R0;MOVC A,@A+DPTR;MOV SBUF,A;WAIT:JNB T1,WAIT;CLR T1;INC R0;DJNZ R5,LOOP;RET;TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;通信方式0输出驱动3个数码管,显示当前温度MOV DPTR,#TAB;LOOP:MOV A,@R0;MOVC A,@A+DPTR;MOV SBUF,A;WAIT:JNB T1,WAIT;CLR T1;INC R0;DJNZ R5,LOOP;RET;TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;七段码数据表附表:1-1热敏电阻分度表及经ADC0809转换后的电压数字量9 103.5243 18510 98.6833 18411 94.1006 18212 89.7613 18113 85.6511 18014 81.7564 17815 78.0646 17716 74.5637 17517 71.2425 17418 68.0903 17319 65.0972 17120 62.254 16921 59.5519 16822 56.9829 16623 54.5392 16524 52.2138 1625 50 16126 47.8916 15927 45.8829 15828 43.9683 15629 42.1428 15430 40.4017 15231 38.7405 15032 37.1552 14933 35.6418 14734 34.1967 14535 32.8164 14336 31.4979 14137 30.238 13938 29.0339 13739 27.883 13540 26.7828 13341 25.7308 13142 24.725 12943 23.763 12744 22.843 12545 21.9629 12346 21.1211 12147 20.3158 11848 19.5453 11649 18.8082 11450 18.1028 11251 17.4241 11052 16.7787 108。