基于单片机的空调温度控制系统设计毕业设计


    



    毕业设计

    
    题 目
    基单片机空调温度控制系统设计
    学生姓名

    学 号

    学 院
    计算机信息工程系
    专业班级

    指导教师

    职 称

    

    





    容摘
    空调种够改善室温度湿度洁净度空气流速等参数电器装置生产生活中途非常广泛空调仅夏天制冷冬天供暖时具送风功够改善室空气流速提供清新空气空调出现发展满足舒适环境追求生产工艺程求
    文通述前空调发展现状趋势介绍款制基单片机空调温度控制系统该系统AT89C52单片机核心DS18B20温度传感器采样温度LCM1602液晶显示器作机话窗口具检测显示前温度设置温度功处理器根预定较算法采模拟脉宽度调制Pulse Width Modulation(简写PWM)方法控制光耦开关继电器闭合时间完成室温调控客观条件限制次设计发光二极LED(英语:LightEmitting Diode简称LED)亮灭模拟空调置冷置热送风功中红灯表示置热蓝灯表示置冷绿灯表示送风该控制系统具结构简单操作灵活方便等优点
    关键词
    单片机温度传感器液晶显示器矩阵键盘继电器KeilProteus



















    ABSTRACT
    Air conditioning is the electrical device which can improve the indoor temperature humidity cleanliness and air velocity and other parameters Its use in production and life is very extensive Air conditioning can not only be used for cooling in the summer but also can be used for heating in winter Wind supplying it has also can improve indoor air velocity provide people with fresh air The emergence and development of air conditioning to meet the pursuit of a comfortable environment and production process requirements
    This paper discusses the present situation and trend of development of air conditioning Introduced a selfmade air temperature control system based on MCU The system is based on AT89C52 microcontroller as the core the use of DS18B20 temperature sensor sampling temperature And to the LCM1602 LCD monitor as the manmachine dialog window Can detect and display the current temperature and setting temperature function According to the comparison algorithm processor reservation Closing time is simulated by the simulation of pulse width modulation Pulse Width Modulation(referred to as PWM) method to control the optical switch and relay Complete control of the room temperature Because of the limitations of objective conditions The design uses a light emitting diode LED (English LightEmitting Diode referred to as LED) light out to simulate air conditioning coldheatwindThe red light indicates the hot blue lights that chill air a green light means air The control system has the advantages of simple structure flexible operation easy to use
    KEY WORDS
    Single chip microcomputer Temperature sensorLiquid crystal display Matrix keyboar
    Relay Keil Protuess





    目 录
    1 绪 1
    11 空调温度控制系统研究背景意义 1
    12 空调温度控制系统现状足 2
    13 文设计务目 3
    14 文容 3
    2 方案设计 4
    21 总体方案设计选择 4
    211 总体方案设计 4
    212 总体方案证 5
    213 总体方案选择 6
    22 模块方案证选择 6
    221 显示模块 6
    222 键输入模块 8
    223 开关控制模块 9
    224 温度采集模块 10
    23 软件总体框图 10
    24 章结 11
    3 系统硬件电路设计 12
    31 总电路设计 12
    32 单片机系统介绍 12
    321 AT89C52单片机介绍 12
    322 单片机复位电路设计 15
    323 单片机时钟电路设计 16
    33 输入电源电路设 17
    34 矩阵键盘电路设计 17
    35 温度测量电路设计 19
    351 温度传感器DS18B20概述 20
    352 温度采样电路 21
    36 驱动控制电路设计 22
    37 显示电路设计 23
    38 模拟执行电路设计 24
    39 蜂铃器电路模块 25
    310 PWM控制技术 25
    3101 PWM简介 25
    3102 AT89C52单片机生成PWM方法 26
    4 系统软件设计 27
    41 程序设计 27
    42 初始化程序设计 28
    43 DS18B20温度采样程序设计 28
    44 LCD显示程序设计 30
    45 键程序设计 32
    46 章结 33
    5系统调试仿真 34
    51 系统调试 34
    511 编程画原理图 34
    512 进行调试仿真 36
    52 硬件调试 38
    53 实物图 40
    54 章结 40
    结束语 41
    参考文献 42
    致 谢 44
    附录1 系统总电路图1 45
    附录2 系统总电路图2 46
    附录3 元件清单列表 47
    附录4 程序源代码 48
    Mainc文件 48
    Globalc文件 52
    DS18B20c文件 53
    DS18B20h文件 58
    LCDc文件 58
    LCDh文件 61
    KEYc文件 62
    KEYh文件 76










    基单片机空调温度控制系统设计
    1 绪
    着科学技术市场济快速发展生活质量提高空调等家电广泛应工作生活中现代科技飞速发展普促进空调技术断前进空调功通采取特定方法调节控制生活工作科研需空气环境通室空气温度洁净度湿度空气交换速度调控室空气够达日益提高温度需求范围满足生产程温度严格需求体舒适生活求
    11 空调温度控制系统研究背景意义
    空调出现前通手工操作加热通风降温设备控制温度变化烧煤木发电日光等提高环境温度型风轮送风者利水蒸发散热等力操作方法控制效果较差温度精确度较低提高操作员劳动强度会影响某工业生产性着科技断进步工业生产严格环境求生产生活中温度已成种重调控参数温度检测控制广泛应工业农业日常生活诸领域生产生活强烈需求制热者制冷电器系统产生成科研方空调出现空调诞生发展现已简单空调扇传统功单空调天高智化低功耗变频空调时代已世纪空调初机器降温逐渐发展类提供舒适生活工作环境
    科学技术日新月异高精度高稳定速度温度需求实现提供技术支持单片机功断增强先进控制方法提供更处理器单片机作空调温度控制系统核心作代采单片机等微控制器作空调智控制核心已成智控制系统流
    空调采嵌入式技术温控装置广泛应家庭商城影院办公生产车间等公场已成生产生活中缺必需品文设计款模拟空调工作控制系统单片机作空调微处理器通温度传感器采样温度MCU进行数分析处理实现模拟部件控制通次设计解空调温度控制原理微处理器现代工业生产中应
    12 空调温度控制系统现状足
    国外空调温度控制技术研究较早1970年初日开始运变频空调技术变频空调根室温情况动进行极变速室环境提供需冷热量保证室温稳定变频空调具低功耗低噪音温度控制精度高等优点国学发达国家温度控制技术理知识基础通创新吸收掌握单片机控制器室温度控制技术时国外已完全动化智化方长足发展发达国家技术定差距
    市场电气式空调控制器电子式空调控制器电气式空调温度控制系统采双金属片作温度传感器通调节预先设置功钮控制预紧力设定温度类空调温度控制器般存问题温度设定时精确度高时间常数较容易损坏机械开关等 电子式空调温度控制系统采热敏电阻热电阻作温度传感器通触摸键设置温度控制风速开关采液晶显示屏实现机友交互界面动完成冷热切换电子式空调温度控制系统解决电气式空调温控器中出现问题存调节精度高户操作复杂等问题应新型控制模型数控芯片智型室温空调温控器正研究开发中部分已应实际工程
    21世纪物联网技术兴起发展户通传感设备根物联协议求直接空调进行通信控制智化识技术理技术监控技术已开始面市场2010年4月家电巨头海尔集团研发氟变频物联网空调面世根外界温度室环境温度差异室温度调节合适状态物联网空调空调功耗室温度变化等信息报告户物联网技术支持空调实现真正互联化高度智化空调控制原理没变化微型控制器更先进实现网络通信单片机方面8位机流18位32位单片机发挥越越作专型空调单片机应会更广泛满足类需求单片机种类会越越
    设计结合前迅速发展单片机技术设计单片机温度控单元空调温度控制原理进行定研究
    13 文设计务目
    设计AT89C52单片机核心空调温度控制系统功:
    1 具检测温度功
    2 具显示温度功
    3 通设定温度固态继电器采模拟PWM控制方法改变电子开关闭合时间完成空调温度控制
    4 具加热(红灯)制冷(蓝灯)送风(绿灯)功
    5 具采集环境温度功
    6 具警报功
    14 文容
    根设计题目需求分析文结构做安排:
    第章介绍空调温度控制系统背景意义针现状足提出设计务目
    第二章介绍空调温度控制系统种常见设计方案分介绍种方案实现模块根设计方法系统方案功模块方案分进行分析证分选择适合该系统实际设计方案
    第三章硬件电路介绍简单介绍系统采芯片性参数系统中连接方法出完成部分功电路设计图列出次设计需元器件
    第四章软件模块设计根系统功求Keil软件中建立工程分模块编写程序介绍功模块程序流程图设计单片机C语言编写程序程序模块分程序温度采集程序显示程序键盘扫描程序执行程序等独立模块软件开发模块化编程思想独立完成模块程序编写模块整合工程里面运行生成hex文件单片机够执行程序命令集合
    第五章介绍系统调试仿真ProteusKeil软件台进行编程画图然通两软件联合调试仿真模拟实现空调温控系统求功
    2 方案设计
    空调温度控制系统具足够稳定性实时调节性高精确控制特点 设计思想设计方案前提关键环节遵循控制系统济性高效性等原设计空调温度控制系统
    21 总体方案设计选择
    211 总体方案设计
    方案:模糊控制
    模糊控制根工控制验收集外部信息形成概念温度感受:高合适低然根判断决定控制方法根偏差偏差变化率计算出输出模糊控制量进行模糊运算出模糊输出信号实现执行器控制达调节受控变量目该方案结构框图图21示







    制热
    室温差


    ddt
    室热交换
    器壁温度

    ddt
    制冷


    室外热交换
    器壁温度

    ddt
    送风


    图21模糊控制方框图
    方案二:单片机加AD转换
    该方案采AT89C51单片机作空调控制系统核心控制器件首先通温度传感器AD590室温进行采样采样温度信号通模数转换电路模拟信号转换成数字信号然输入单片机进行处理单片机输出信号控制LED显示前温度键盘输入设定温度显示单片机处理器根程序算法较前温度设置温度输出相应控制信号驱动执行单元工作该方案特点模拟信号转换成数字信号单片机处理该方案结构框图图22示
    执行器
    执行器
    继电器
    继电器
    LED显示
    键盘
    AD590
    AD转换


    AT89C52
    单片机







    图22 单片机控制AD结合控制方框图
    方案三:AT89C52作系统控制核心
    该方案AT89C52单片机空调温控系统核心通高精度DS18B20温度传感器采样室温度温度信号直接传递控制器时通矩阵键盘设置温度传递控制器单片机根软件设定定时中断功指定引脚读入信号信号处理定时计数函数输出PWM控制信号驱动电路驱动电路采继电器控制执行器通断电样开关设置具隔离放功单片机通软件控制模块协调工作完成温度动化控制该方案结构框图图23示

    LED显示


    AT89C52
    单片机

    DS18B20
    温度传感器

    蜂铃器

    驱动部分
    制热


    键输入
    部分
    驱动部分
    制冷


    送风
    驱动部分



    图23 AT89C52DS18B20传感器核心结构框图
    212 总体方案证
    方案:该方案采模糊控制技术输入空调温度控制系统做模糊技术处理实现温度变量控制通获取室外温差变化率数单片机处理输出加热制冷送风等功实现智化控制
    优点:设计时需建立温度相准确数学模型需熟悉掌握类控制验适非线性滞性系统控制
    缺点:设计时缺乏系统控制方法验实验操作系统运行模糊控制规总结困难
    方案二:该方案通AD590进行温度采样然通ADC0809进行AD转换转换信号传输AT89C51AT89C51控制液晶显示器显示温度通较前温度设置温度单片机根较结果驱动空调机工作模拟实现空调种功求
    优点:该方案系统原理简单信号采样较精确电路较容易实现空调控制
    缺点:该方案温度采样电路中AD转换芯片译码程复杂容易产生误差
    方案三:该方案采DS18B20作温度采样器件DS18B20独立完成温度采样输出单片机处理数字信号DS18B20需外部元件采样精度高温度采集系统中应广泛该方案控制原理方案二样电路更简单采样数更电路需外接器件节省定成
    优点:该方案控制原理简单模块单元直接连接单片机处理速度快元器件较常见更具易性维护性
    213 总体方案选择
    较述三种设计方案方案模糊控制理较复杂采样数定误差模糊控制属事控制定延时性模糊控制额外计算量利控制系统实时快速反应方案二方案三控制原理相方案二采AD转换技术采样数译码器译码会出现误差采样电路相复杂综述次设计选择方案三实现空调温度动化控制
    22 模块方案证选择
    221 显示模块
    机交互式控制系统说仅需响应输入信息时测量控制信息输出显示屏幕便提供实时数供户观察处理
    方案:采LED数码作显示界面LED发光二级组成显示器件通控制指定字段导通断开数码显示相应字符单片机系统中LED数码常显示器件成低廉简单设计需显示999
    ℃~ 999℃前温度设置温度需8LED数码列4位数码图24示





    A B C D E F G DP 1 2 3 4






    图24 数码
    方案二: LCM1602液晶显示器做显示界面LCD液晶显示液晶显示器显示数图形LCD液晶显示效果良显示数字显示简单图形汉字等电路设计中应广泛该显示屏幕显示行者二行液晶显示器图25示

    图25 液晶显示器
    次设计需显示前温度设置温度需8数码显示温度数码仅占电路板空间占单片机IO接口没提示功LCD显示仅设置提示栏NowSet等标注栏双行显示前温度设置温度LCM1602液晶显示器交流界面美观友LCD占占电路板空间数码显示质量数码高数字式接口电路易操作显示模块选LCD液晶显示器
    222 键输入模块
    键盘机交互温度控制系统中输入功信号设置温度数接口键盘输入操作命令温度数控制单片机运行单片机设置电路中常键盘组成矩阵式键盘独立式键盘
    方案:独立式简单键键盘种键盘单片机接口简单适合少量开关简单控制系统输入键占IO引脚键相互独立互影响适合键交系统独立式键盘图26示

    图26 独立式键盘
    方案二:矩阵式4x4键键盘该键盘键跨接单片机P接口行线列线键时相关行线列线接通发生短路利软件计算出该键键值种键盘占引脚接口较少实现功软件结构较简单适键较设计电路中矩阵式键盘图27示

    图27 矩阵式键盘
    设计系统中需数字钮10输入09十数字功钮6确定设置切换等总需16钮件较独立式键盘接法占单片机宝贵接口第二种方案需单片机8IO口满足设置需求设计采4x4矩阵式键盘

    223 开关控制模块
    控制系统运行温度传感器采样温度处理处理器输出信号控制执行器运行单片机模拟型控制系统中直接驱动压缩机工作设置开关控制压缩机运行两者动控制单片机工作时间
    方案:空调压缩机直接单片机引脚连接种方法软件控制执行器工作状态简单系统中然完成动控制单片机输出电流驱动功率器件工作没隔离放效果容易损害执行器件种设计电路连接图28示

    图28 开关键驱动电路图
    方案二:单片机通控制固态继电器闭合控制执行器工作固态继电器种带光电隔离器触点开关干扰信号隔离开通继电器实现低电压控制高电压器件工作设计继电器实现5V电压工作系统控制220V空调动化工作继电器电路中电路设计图29示

    图29 继电器控制驱动电路图
    继电器高抗干扰转换快等优点广泛应开关量控制中空调控制系统中继电器作执行器通断电控制器系统选择方案二
    224 温度采集模块
    温度重物理参数常见基物理量方需测控温度温度采集需温度传感器熟悉正确测温方法高效采样器件非常重
    方案: 采热敏电阻传感器热敏电阻利半导体材料制成元件热敏电阻传感器显著特点温度非常敏感温度越高时阻值越低优点灵敏度高体积缺点互换性差温度阻值非线性严重关系元件容易老化图210示:

    图210 热敏电阻
    方案二: 采DS18B20温度传感器DS18B201Wire总线接口温度传感器具数保存结构简单方便较高精度测量范围需外接器件直接单片机通信
    基DS18B20温度传感器优点设计选择方案二
    23 软件总体框图
    设计采C语言编写程序程序模块温度采样模块键盘扫描模块液晶驱动程序模块执行程序模块组成软件部分总体结构框图211图:
    函 数






    键 盘
    扫 描
    模 块





    液 晶
    驱 动
    模 块

    温 度
    采 样
    摸 块







    图211 总体结构框图
    24 章结
    章进行总体设计方案证显示模块键模块温度模块开关模块方案进行证根系统设计简单济高效等原选择较实方案该方案利AT89C52作控制系统处理器单片机定时IO口读取DS18B20输入信号分析处理单片机控制信号数传输液晶显示器执行器实现温度显示启动执行电路工作键设置温度单片机根温度较结果控制空调机执行制冷制热送风工作
    3 系统硬件电路设计
    模拟空调温度控制系统中AT89C52单片机作核心处理器DS18B20温度传感器负责室温度采集LCM1602液晶显示器显示温度参数继电器光耦开关控制LED灯亮灭模拟制冷制热等功键盘设置户需求温度编程实现模块功系统原理图见附录1
    31 总电路设计
    空调温控系统体分6模块输入5V直流电压模块DS18B20单片机温度模块LCM1602单片机显示模块驱动执行模块设置模块蜂铃器模块单片机工作电压5V系统电单片机通DS18B20温度传感器获前温度单片机接收DS18B20传回数利行通信原理数发送LCM1602显示器显示单片机键盘获设置温度样原理显示LCM1602面单片机较两温度值输出控制信号驱动执行电路工作总电路图见附录1
    32 单片机系统介绍
    321 AT89C52单片机介绍
    AT89C52ATMEL公司生产8位单片机性C51单片机高该型号单片机采CMOS技术生产兼容标准MSC51指令系统程序通JTAG接口载单片机中需外部资源开发该芯片够实现实时仿真户单片机资源
    功特性:
    ● 32输入输出引脚
    ● 2电源引脚
    ● 6控制引脚
    ● 2XTAL引脚
    ● 21特殊功寄存器
    ● 8KB擦写Flash程序储存器擦千次左右
    ● 128B数储存器128B特殊功寄存器
    ● 时钟频率0~24MHz
    ● 工作电压27V~65V
    ● 兼容标准MCS51指令系统集
    ● 种封装形式
    ● 断电数保护
    ● 定时器外部中断串行中断等
    ● 程序存储器够级加密保护保存年
    AT89C52引脚图图31示


    图31 AT89C52芯片封装引脚图
    1电源外接晶体引脚
    (1) VCC:接+5V电源
    (2) GND:接
    (3) XTAL1XTAL2:晶体振荡电路反输入输出端
    2输入输出引脚
    (1) P0端口双8位三态IO接口IO口独立控制分时复作双数总线做低8址总线控制系统中P0端口作连接显示器数总线
    (2) P1端口8位准双IO端口该端口没高阻态锁存般作数输入者输出控制系统中P1端口连接温度传感器LCD显示器端
    (3) P2端口时般作准双高8位址总线接口控制系统中P2端口连接矩阵键盘
    (4) P3端口准双8位IO接口具做具分时复功P3端口第二功见表31控制系统中P2端口P3^5P3^6P3^7做普通IO接口连接执行器P3^2脚作外部中断功
    表31 P3端口线第二功表
    引脚
    P3端口第二功
    P30
    RXD
    串行输入口
    P31
    TXD
    串行输出口
    P32
    INT0
    外部中断0输入端
    P33
    INT1
    外部中断1输入端
    P34
    T0
    定时器计数器0外部输入端
    P35
    T1
    定时器计数器1外部输入端
    P36
    WR
    外部RAM写脉输出端
    P37
    RD
    外部RAM读脉输出端
    3控制引脚
    (1) ALE:址锁存信号输出端控制系统没该引脚
    (2) :单片机外部程序储存器选端ALE1时先访问部ROM访问外部ROMALE0时访问外部ROM设计没该引脚
    (3) :读选通单片机外部程序储存器信号输出控制端低电效设计没该引脚
    (4) RST:电复位端作掉电保护作该引脚持续10ms高电时复位
    322 单片机复位电路设计
    单片机复位处理器初始状态进行工作单片机键复位电复位两种方式时钟电路工作施加持续10ms高电实现电键复位程两机器周期利电解电容充电够实现电复位复位电路图32示

    (a)电动复位电路

    (b)电键复位电路
    图32 复位电路图
    复位程序0000H址单元开始运行PC0000H单片机复位会改变片RAM存储容设计电路采电复位复位特殊功寄存器初始化状态见表32
    表32 复位特殊功寄存器初始化状态
    特殊功寄存器
    容初始状态
    特殊功寄存器
    容初始状态
    B
    00H
    SCON
    00H
    A
    00H
    PCON
    00H
    PSW
    00H
    TMOD
    00H
    IP
    XXX00000B
    TCON
    00H
    P0P1P2P3
    FFH
    TL0
    00H
    IE
    0XX00000B
    TL1
    00H
    SBUF

    TH0
    00H
    DPL
    00H
    TH1
    00H
    DPH
    00H
    SP
    07H

    P0~P3端口复位输出输入PSW00H表示CPU工作寄存器选0组SP07H表示堆栈指针指片RAM07H单元IE00H表示中断关闭IP00H表示中断源处低优先级PCON00H表示串行通信波特率变
    323 单片机时钟电路设计
    单片机时钟电路产生时钟信号控制单片机时序进行工作单片机部反放器通XTAL1XTAL2引脚外部晶振2电容构成单片机联谐振电路电容取30pF电容功频率起微调作晶振取12MHz该振荡电路振荡频率设置12MHz时钟电路关周期计算表33示
    表33 单片机相关周期

    振荡电路图33示

    图33 AT89C52振荡电路
    33 输入电源电路设
    空调机工作220V交流电压电器设备单片机液晶显示器温度传感器工作电压5V直流电压需设计220V交流电压转换成5V直流电压控制系统提供工作电压原理图34图示

    DC5V









    AC220V



    图34 电源转换图
    首先220V交流电压通变压器降5V交流电压桥式整流变脉直流5V电压滤波消脉输出5V直流电压集成三端稳压输出稳定5V直流电压供控制系统部分工作电源电路设计图35示设计直接采5V直流电压供电实际电路中电源部分做述设计

    图35 电源部分电路图
    34 矩阵键盘电路设计
    键盘钮集合没键时断开键时导通市场键盘般机械键类键机械弹性键闭合断开时会抖动发生键电路产生电压波形图36示该抖动会高速运行CPU产生干扰需消抖动控制系统影响通常硬件消抖法软件消抖法

    图36 键闭合断开时电压波动
    图知键t1+t2阶段中t1键时前抖动时间t2闭合稳定时间阶段读取键值效t3释放键时延抖动时间设计采软件延时10ms避开t1抖动时间段t2时间段读入键信息样够消抖动影响
    键电路加特定电路消抖动方法硬件消抖法简单RS触发器RC积分滤波电路构成抖动键电路图37(a)示键闭合释放时电压波形图37(b)示单稳态电路构成抖动键电路软件消抖法般软件延时完成键时调段延时(>10ms)程序避开抖动时间段然读入键键值

    (a)抖动电路

    (b)键闭合断开时电压波动
    图37 RS触发器消抖电路
    次设计采中断扫描控制方法工作原理:键时产生中断信号(四输入端门0时)时INT00没键INT01CPU响应中断执行中断服务程序求出键码次设计设置16键采4x4矩阵键盘连线中10数字键设置温度5功键控制系统工作预置空闲键键电路图38示

    图38 中断方式矩阵键盘接口电路
    中4x4矩阵键盘列线单片机P2口低四位相连作输入端行线P2口高四位相连做输出线键盘行线分引出接四输入端门门输出端接外部中断INT0采中断法进行键盘设计时响应键输入提高CPU运行效率会产生空扫描
    键功说明:次设计工16键10数字键(0~9)确定键(OK)切换键(Shift)清零键(Clear)加键( Up)减键(Down)预置键扩展功时温度设置两键方法数字键设置温度范围000~999间度数OK键设置成功种办法Up者Down键数字加减次指定位加减’1’Shift键切换设置指定位前种方法适合数点前面数字进行设置种方法适合数点面数字进行调整适合做温度微调两种方法结合键操作简单明设置方法样
    35 温度测量电路设计
    测温方式接触式测温非接触式测温两中方法
    接触式温度传感器需测象进行接触通热量传递达热衡测测象温度类传感器较简单温度值测温精度高需时间达热衡延时程时传感器材料求具耐高温特性类传感器适合高温物体测量
    非接触式温度传感器通采样热辐射测量温度传感器需测象直接接触类传感器测量变化幅度温度检测速度较快类传感器特殊场合应代容易受距离空气等外界
    素影响测温误差较次设计采DS18B20属接触式温度传感器
    351 温度传感器DS18B20概述
    DS18B20种1Wire总线接口温度传感器Dallas Semiconductor公司生产ROM序列号温度传感器报警触发器三部件组成需引脚DQ处理器实现数发送接收引脚少接口简单需外接元件测量温度精度较高基单片机温度监控系统中DS18B20具特点图39示

    图39 DS18B2特点
    DS18B20核心芯片数字式温度传感器该芯片分辨率设置9位10位11位12位传感器电默认设置12位温度变化量00625℃部分分辨率温度变化量表34示
    表34 DS18B20分辨率温度变化量
    分辨率
    9位
    10位
    11位
    12位
    温度变化量
    05℃
    025℃
    0125℃
    00625℃

    DS18B20接温度转换命令开始采样温度温度结果部进行AD转换转换数暂存温度寄存器中DS18B20采TQ92封装体积占空间DS18B20引脚排列图310示
    引脚功:
    VDD:外部电源引脚
    DQ :1Wire总线数输入输出引脚
    GND:接引脚

    图310 DS18B20引脚排列封装
    352 温度采样电路
    设计温度采样电路图311示

    图311 温度采样电路图
    采外部供电方式VCC脚接5V电源DQ数线单片机P1^7脚相连系统工作DS18B20采样温度结果进行AD转换AD转换温度数送入两温度寄存器单元单片机通1Wire总线接收温度数
    36 驱动控制电路设计
    动控制系统设计中常继电器作开关继电器般铁芯簧片线圈等组成继电器两端加电压通电时电磁效应产生磁场力吸引衔铁衔铁克服簧片拉力铁芯闭合线圈电流断开时磁场力消失簧片拉力作衔铁铁芯断开继电器线圈工作电压般直流9V12V24V等输出部分直接接220V交流电典型电流控制电流运作开关电路中隔离机械碰撞保护敏感器件转换电压动开关调节等作
    继电器般采电磁吸合方式开关闭合瞬间会产生火花单片机引起干扰实际应中固态继电器逐渐代电磁式继电器固态继电器控硅晶体代普通继电器开关输入部分实际光电隔离器继电器具体积开关速度快输入控制电流等优点
    空调功率电机产生电磁干扰信号会影响器件正常工作避免单片机误动者损坏空调单片机执行器接口电路中需继电器隔离保护系统正常工作
    次设计采簧片继电器作驱动控制电路开关三极放控制电流电路图图312示

    图312 驱动控制电路图
    37 显示电路设计
    系统显示模块采LCM1602液晶显示器LCM1602种专门显示数字字母常
    符号点阵型显示器显示16*2字符数字 LCM1602显示器采作HD44780控制器指令集较简单切指令集功齐全字符够设置移动者闪烁状态LCM1602单片机采8位连接者四位行连接方式LCM160216引脚实物图图313示

    图313 LM018L实物图
    引脚功表35示
    表35 LCM1602接口部分引脚功
    引脚号
    符号
    状态

    1
    VSS


    2
    VDD

    接+5V电源
    3
    VEE

    驱动电源
    4
    RE
    输入
    寄存器功选择(1:数0:指令)
    5
    RW
    输入
    选择读写操作(1:读0:写)
    6
    E
    输入
    信号
    7~17
    DX
    三态
    数总线

    系统中LCM1602引脚单片机连接:RS连接P12RW连接P11E连接P10VDD接+5V电源VSSVEE接8位数线通10K排阻单片机P0端口行连接中排阻分压节省电路空间保证焊接质量电路图图314示

    图314 LCM1602液晶模块连接电路图
    38 模拟执行电路设计
    空调电工作通控制制冷剂汽化液化吸收室热量压缩机首先制冷剂压缩汽态剂然送入冷凝器中散热汽态制冷剂液化成液态剂液态剂进入蒸发器次变汽态程吸收室量热空调置风扇室空气蒸发器中吹出空调吹出冷风空调机制热原理制冷原理恰相反制冷程倒制热空调送风程室室外空气互相交换形成定气流设计方案通颜色LED灯亮灭模拟实现系统工作程
    该部分根单片机发出指令执行相应操作空调控制系统具室空气制冷送风加热等功前温度低设置温度时够驱动加热器件工作设置温度低前温度时驱动制冷系统工作两者温度相等时驱动送风系统工作执行电路红色LED灯模拟加热程蓝色LED灯模拟制冷程绿色LED灯模拟送风程通点亮三颜色灯模拟实现空调温度控制程执行电路图315示

    图315 执行电路
    39 蜂铃器电路模块
    设计加蜂铃器警报功蜂铃器系统中作发出警报声音提示户程序设定空调正常工作范围(50℃~5℃)室温度升50℃时制冷系统暂时法降低温度蜂铃器会直铃响直温度降低50℃者关闭蜂铃器电源造成温度突然升高原室起火者制冷系统出现障等原铃响蜂铃器提醒户注意温度降低5℃时蜂铃器样发出提醒声音
    户操作失误设置温度高者低时蜂铃器会发出蜂铃声提醒户新设置设计正常设置温度范围:40℃~10℃设置温度超40℃者低10℃时蜂铃器发出提示声音蜂铃器工作否通开关键控制户关闭蜂铃器提示功
    蜂铃器模块电路电路图图316示

    图316 蜂铃器电路原理图
    310 PWM控制技术
    3101 PWM简介
    PWM脉宽度调制简称执行电路控制利单片机数字输出实现PWM模拟量变数字量形式改变信号始终保持数字形式需进行数模转换PWM广泛应工程测量等领域
    脉宽度调制控制方式控制电路开关器件闭合输出端幅值相等脉信号
    3102 AT89C52单片机生成PWM方法
    AT89系列单片机没置PWM控制器需通软件方法IO端口模拟PWM输出软件设计般软件延时定时计数器产生时钟信号
    软件延时方法通反复调延时子函数单片机某引脚输出PWM信号反复执行:置高输出位延时置低输出位延时产生控制PWM信号
    利定时器方法获PWM信号分定时时间固定定时时间固定两种定时时间法延时法相似次设计采定时时间固定定时方式获取执行电路作PWM信号定时时间10ms
    312 章总结
    章硬件设计角度介绍单片机电源电路显示电路键盘电路驱动执行电路执行电路温度采集电路蜂铃器电路等模块设计简单介绍设计芯片核心设计相应扩展电路概介绍AT89C52单片机PWM信号产生办法出总电路设计图设计需元件清单
    4 系统软件设计
    41 程序设计
    系统电单片机开始运行首先进行系统复位系统复位初始状态开始运行然执行系统初始化操作DS18B20初始温度200℃设置温度初始化200℃接着读取前室温度显示较前室温设置温度初始状态两者温度相等送风系统开始工作绿灯亮外界温度变化时单片机通定时计数器功定时采样温度变化定时较温度定时器产生PWM信号驱动相关电路工作户时通键盘设置需求温度前温度设置温度制冷系统开始工作蓝灯亮前温度设置温度制热系统工作红灯亮整程基单片机实时动控制系统流程图图41示
    开始main


    系统初始化



    T>50℃者T<5℃

    DS18B20采样前温度


    T>40℃者T<10℃

    设置温度




    否高前温度

    蜂铃器响






    制热
    否低设置温度



    制冷

    送风



    图41 程序流程图
    42 初始化程序设计
    初始化程序设置P30x0fP20xf0设置外部中断0选择定时计数器0外部中断服务子程序功:键时通门触发中断获取键键值处理该键应功函数定时中断服务子程序功:产生PWM控制信号定时获取前温度显示出外部中断函数定时计数函数名称功表41示
    表41 中断定时函数表
    序号
    函数名

    1
    void time0(void) interrupt 1
    定时器函数计数
    2
    void Compare_S_N_Temper(void)
    外部中断0中断函数
    初始化流程图图42示
    开始

    返回
    开总中断
    开外部中断0
    开定时计数器0
    设置P2P3端口


















    图42 初始化程序流程图
    43 DS18B20温度采样程序设计
    首先初始化DS18B20传感器进行读写命令操作显示数操作DS18B20部分操作指令表42示
    表42 DS18B20部分操作指令
    序号
    指令
    说明
    2
    0x44H
    温度转换指令
    3
    0xCCH
    跳ROM序列号指令
    4
    0xBEH
    读数指令
    5
    Ox4EH
    写数
    DS18B20工作流程图图43示
    开始



    否初始化成功



    发跳ROM命令


    发温度转换命令(0x44H)



    否转换完成



    初始化DS18B20


    读暂存器命令(0xBEH)


    读转换数

    送单片机


    返回


    图43 DS18B20工作流程图

    设计DS18B20模块函数表43示
    表43 传感器模块函数列表
    序号
    函数名

    1
    void delay_ds18b20(uint useconds)
    延时函数
    2
    void Write_One_Bit(uchar value)
    写入位值
    3
    void Write_One_Byte(uchar value)
    写入字节数
    4
    uchar Read_One_Bit(void)
    读取位值
    5
    uchar Read_One_Byte(void)
    读取字节数
    6
    uchar DS18B20_Init(void)
    初始化传感器
    7
    void TransAndDisplayTemp(void)
    转换显示温度
    8
    void Get_Temperature(void)
    传感器获取外界温度

    44 LCD显示程序设计
    首先初始化LCM1602液晶模块然写命令显示器发送显示温度显示器LCM1602液晶模块部已存储阿拉伯数字英文字母写常符号等点阵字符图形够满足空调温度控制系统需机交互界面显示工作程序中LCM1602表44中命令:
    表44 LCM1602常命令
    序号
    命令

    1
    0x01
    显示清屏数指针0
    2
    0x02
    显示回车数指针0
    3
    0x0C
    显示开关光标设置
    4
    0x06
    移动光标设置
    5
    0x38
    设置两行十六位显示5*7点阵八数接口引脚

    LCM1602显示2*16字符系统中显示字符0x03H开始0x08H开始显示温度显示址表45示

    表45 LCM1602显示址
    1
    2
    3
    4
    5
    6
    7
    8
    00H
    01H
    02H
    03H
    04H
    05H
    06H
    07H
    40H
    41H
    42H
    43H
    44H
    45H
    46H
    47H
    9
    10
    11
    12
    13
    14
    15
    16
    08H
    09H
    0AH
    0BH
    0CH
    0DH
    0EH
    0FH
    48H
    49H
    4AH
    4BH
    4CH
    4DH
    4EH
    4FH
    LCM1602工作显示流程图图44示
    开始


    初始化LCM1602


    写命令LCM1602




    发送显示数



    显示


    图44 显示程序流程图
    设计LCM1602模块函数表46示
    表46 显示模块函数列表
    序号
    函数名

    1
    void delay_lcd(uint temp)
    延时函数
    2
    void Write_Cmd_LCD(uchar cmd)
    写指令LCD
    3
    void Write_Date_LCD(uchar date)
    写显示数LCD
    4
    void Init_LCD(void)
    初始化LCD
    5
    void DisplayToLCD(void)
    液晶屏显示温度

    45 键程序设计
    矩阵非编码键盘处理流程:首先单片机键盘接口输出0xF0然读取列检测信号列信号1表示键反没键然判断键行列计算该键键码中行扫描码HM:0xFE0xFD0xFB0xF7列扫描码LM:0xE00xD00xB00x70键值计算公式:KEY(HM)(取反)+(LM | 0x0f)(取反)根公式计算键键值表47示
    表47 4x4矩阵键盘键值表
    0x11
    0x12
    0x14
    0x18
    0x21
    0x22
    0x24
    0x28
    0x41
    0x42
    0x44
    0x48
    0x81
    0x82
    0x84
    0x88

    设计中键处理函数作外部中断服务子程序放置外部中断函数中运行键扫描流程图图45示
    开始



    键号转操作
    查表确定键号
    查列号
    逐行扫描


















    图45 键扫描流程图
    设计键处理模块函数表48示
    表48 键处理模块函数列表
    序号
    函数名

    1
    void Delay_Key(void)
    延时函数
    2
    uchar Key_Scan(void)
    写指令LCD
    3
    void Key_Functional_treatment(void)
    键实现该键功
    46 章结
    章详细介绍设计中系统流程图概介绍显示部分键部分温度传感器部分等重点模块设计流程工作步骤列出实现部分功函数清单通应流程图较快速解程序执行程明白模块系统中负责执行功

    5系统调试仿真
    51 系统调试
    调试分硬件调试软件调试两部分次软件编程Keil uVision4中编写电路原理图Proteus ISIS环境中画
    511 编程画原理图
    1 建立程序文件
    (1)开Keil uVision4新建Graduation项目选择AT89C52单片机作CPU
    (2)新建C源文件保存导入Source Group1中
    (3)设置生成hex文件输出成功程序运行生成导入单片机hex文件
    (4)编写功程序次重复运行——调试——运行——调试步奏直程序运行正确
    Keil uVision4编写程序(C语言)图51示

    图51 Keil uVision4编程界面
    2 画原理图
    (1)开Proteus ISIS新建Graduation文件Keil程序工程保存文件中
    (2)设置原理图界面图纸查找选择设计图需元件
    (3)放置连接编辑元器件
    (4)完成原理图综合检测
    Proteus ISIS画原理图图52示

    图52 Proteus ISIS画原理图界面
    3 加载目标代码文件:
    (1)原理图中双击AT89C52开话框Edit Component中设置单片机频率12MHz
    (2)Project File栏中选择前Keil中生成HEX文件点击OK
    (3)点击Debug拉菜单中选择Use Remote Debug Monitor选项
    Keil程序Proteus软件联调
    512 进行调试仿真
    导入目标文件开始调试执行程序Proteus中单击钮开始仿真程序中默认设置温度280℃DS18B20传感器温度样设置280℃仿真开始显示屏显示前温度设置温度200℃时绿灯亮表示空调系统开始送风仿真效果图图53示

    图53 前温度等设置温度时电路仿真效果图






    通键盘设置温度值设置温度300℃前温度(2800℃)时红灯亮空调系统开始制热仿真效果图见图54示

    图54 前温度设置温度时电路仿真效果图











    设置温度(280℃)前温度(300℃)时蓝灯亮空调系统开始制冷仿真效果图见图55示

    图55 前温度设置温度时电路仿真效果图
    特殊原室温突然升高着火制冷系统坏掉等室温度高500℃时蜂铃器会发出警报声提醒户注意安全室温突然降低50℃时蜂铃器样发出警报声
    家空调般需设置高者低温度设置温度高40℃低10℃时蜂铃器会发出警报声提醒户设置合适温度户通蜂铃器开关键关闭蜂铃器
    单击 结束仿真
    52 硬件调试
    硬件调试首先检测元器件否合格电阻电容选择否适合电路正常工作焊接电路前先万表检测电阻电容值否符合标值检测开关键否短路晶振三极二极继电器等需事前检测遍电路焊接仔细观察漏贴器件没虚焊情况电容二极NPN芯片否接反焊接否会造成短路等然原理图步步检测电路连线否正确
    电前确定外接电源否满足系统工作需电压正负极否正确确定短路现象开始电调试系统运行时仔细观察异常现象烟元器件异常发热等果述现象应该马关掉电源查找障反复检测直电路系统明显障程序烧写进单片机
    然静态调试先输入信号检测系统初始化状态运行结果否预期样检测级电流电压否正常接着输入信号进行动态调试输入种温度前温度较查电路系统否正常执行果硬件测试正常表明次空调温度控制系统设计基成功
    53 实物图

    图56 实物图
    54 章结
    章介绍Proteus ISISKeil uVision4两种软件设计中方法分两款软件完成编程画原理图Keil中生成hex文件导入Proteus原理图中进行仿真简介绍硬件测试办法注意事项做实物时认真仿真图连线做虚焊接错
    结束语
    现代科学技术飞速发展智设备动控制技术功性精度越越高空调系统动控制技术迅速发展初工操作单片机空调控制中应初设备服务扩天家生产生活提供舒适环境空调简单制冷者制热功发展成现制冷制热送风等种功集身智设备
    设计AT89C52单片机作系统处理器综合利DS18B201602字符型LCM等芯片基实现温度控制功通仿真调试运行结果较稳定单片机做中枢控制系统DS18B20采集温度传输单片机单片机智分析发出显示信号执行信号完成室温实时调节
    次设计首先进步熟悉单片机应系统功效结合次设计前没理解知识原理新梳理次加深专业知识解时学理知识应次实践中通完成应控制系统设计增加专业知识学兴趣然设计中许足处方改进空间工作中会更加努力嵌入式设计方面发展
    设计存完善处:
    1没零温度设置功设置000℃~999℃间温度
    2编写程序够简洁bug
    3系统仅实现空调温度控制送风功没实际空调中模式选择功













    参考文献
    [1] 唐颖 单片机原理应[M] 北京:北京学出版社2008
    [2] 赵建领崔昭霞 精通51单片机开发技术应实例[M] 北京:电子工业出版社2012
    [3] 谭浩强 C语言程序设计(第三版)[M]北京:清华学出版社2005
    [4] 求科技 单片机典型模块设计实例导航[M] 北京:民邮电出版社2006
    [5] 谢维成杨加国 单片机原理应C51程序设计[M] 北京:清华学出版社2006
    [6] 楼然苗李飞光 51系列单片机设计实例[M] 北京:北京航空航天学出版社2003
    [7] 毛谦敏 单片机原理应系统设计[M] 国防工业出版社 2008
    [8] 李金川郑智慧 空调制冷控系统运行理[M] 北京:中国建材工业出版社2002
    [9] 潘新民王燕芳 微型计算机控制技术实教程[M] 北京:电子工业出版社2005
    [10] 郁文常键程继红 传感器原理工程应(第三版)[M] 西安:西安电子科技学出版社2008
    [11] 朱清慧张凤蕊霍天嵩 Proteus教程[M] 北京:清华学出版社2008
    [12] 康华光 电子技术基础 模拟部分(第五版)[M] 北京:高等教育出版社2007
    [12] 阎石 数字电子技术基础(第五版)[M] 北京:高等教育出版社2006
    [13] 刘茂 单片机应系统监控程序设计方法[J]海:海民出版社2000
    [14] 珍珠赵娜赵刚 基51单片机温度测量系统[J] 2007 23(12):146148
    [15] 齐建家胡天明 基DS18B20数字温度设计应 黑龙江工程学院学报 2008 22(2):5962
    [16] 宋亚伟 基DS18B29温度控制采集系统[M] 机电工程技术 2008 37(09):8991
    [17] 赵佩华 单片机接口技术应[M] 北京:机械工业出版社2003
    [18] 雷伏容张林 51单片机常模块设计查询手册[M] 北京:清华学出版社2010
    [19] 沈红卫 基单片机智系统设计实现[M] 北京:电子工业出版社2005
    [20] 张庆双 常元器件选检测[M] 北京:机械工业出版社2004
    [21] 周丽娜 Protel 99 SE电路设计技术(基础案例篇)[M] 北京:中国铁道出版社2009
    [22] 王 单片机应设计制作——基KeilProteus开发仿真台[M] 北京:清华学出版社2012
    [23] Paul Horowitz Winfield Hill The Art of Electronics[M] Cambridge University Press: University of Cambridge Cambridge CB2 1TN UK2006
    [24] Donald A Neamen Electronic Circuit Analysis and Design 2nd Ed[M](电子电路分析设计(第2版) 北京:清华学出版社 2008
    [25] Guo Tianxiang The 51 singlechip C language tutorial Beijing: Publishing House of electronics industry 2009
    [26] 51单片机学网 http:www51bs51com
    [27] 电子元器件查询 http:wwwchinadzcom
    [28] 中国电子网 http:www21iccom




















    致 谢
    六月时间设计选题查找资料方案预备方案证器件选择整系统硬件软件系统已初步成型原单片机应项目熟悉现项目基框架某细节较清楚认识间少许私帮助真诚说声谢谢
    衷心感谢指导老师XXX教授感谢刘老师认真倾听问题感谢老师耐心指导真诚鼓励刘老师渊博知识丰富科研验兢兢业业治学精神受益非浅文完成际谨老师表示衷感谢
    感谢XXX等学予帮助遇懂方细心讲解协助完成部分工作
    谨文献挚爱父母关心帮助亲朋友





    作者:

    年 月 日

    附录1 系统总电路图1

    附录1 系统总电路图1
    附录2 系统总电路图2

    附录2 系统总电路图2











    附录3 元件清单列表
    系统元器件清单表附件61示
    附件61 元件清单
    序号
    元件名称
    数量
    1
    AT89C52单片机
    1
    2
    LCM1602显示器
    1
    3
    DS18B20温度传感器
    1
    4
    点触式键
    16
    5
    开关
    3
    6
    74LS21门
    1
    8
    30pF瓷片电容
    2
    9
    10uF电解电容
    1
    10
    12MHz晶振
    1
    11
    10K排阻
    1
    12
    10K电阻
    10
    16
    NPN三极
    4
    17
    二极
    3
    18
    继电器
    3
    19
    红色LED
    1
    20
    蓝色LED
    1
    21
    绿色LED
    1
    22
    220欧姆电阻
    3
    23
    蜂铃器
    1
    附录4 程序源代码
    Mainc文件
    **************************************************************
    * 文件名称: 源程序文件()
    * 作者: LLQ
    * 日期: 2013429
    *功简介:该项目具采样温度显示设置温度通温
    * 度较控制LED灯亮灭灯模拟含义:
    * 红灯制热蓝灯制冷绿灯吹风
    * 键盘扫描中断扫描方式
    **************************************************************
    #include
    #include
    #include globalh
    #include lcdh
    #include ds18b20h
    #include keyh
    float Current_Temp0 定义前温度变量赋初值0度
    float Set_Temp200 定义设置温度变量初值0度
    温度传感器采样温度寄存器数组
    uchar Current_Disp_Temp_Buf[]{ Now: 200 }
    户设置温度寄存器数组
    uchar Set_Critical_Temp_Buf[]{ Set: 200 }
    uint Cnt_T0 温度采样间隔计时变量
    uint Cnt_P0 较计时变量
    uint flag_11 较标志位1
    uint flag_20 较标志位2
    uint bits0 显示位设置标示01234

    void delay(uint cnt) 延时函数
    {
    for(cntcnt>0cnt)
    }
    *****************************************************************
    * 函数名称:Beep()
    * 功:警报功温度超出低定
    * 范围时发出警报声
    * 参数:
    * 返回值:
    *****************************************************************
    void Beep()
    {
    uint i0
    if(Current_Temp>50||Current_Temp<5||Set_Temp>40||Set_Temp<10)
    {
    beep1
    delay(40)
    beep0
    delay(25)
    }
    }
    void Compare_S_N_Temper(void) 函数
    *********************************************************
    * 函数名称:Init_timer0()
    * 功:开启外部中断0定时器中断0
    * 参数:
    * 返回值:
    *********************************************************
    void Init_timer0(void)
    {
    TMOD 0x01 设置定时器0工作方式1 10ms定时求
    TH0 0xD8 X65536100000XD8F0H
    TL0 0xF0
    IE0x82
    ET0 1 允许定时器中断
    TR0 1 启动定时器计数器
    IT0 1 设置边触发方式外部中断0
    EX0 1 开外部中断
    EA 1 开总中断
    }
    **********************************************************
    * 函数名称:time0()
    * 功:定时器函数计数
    * 参数:
    * 返回值:
    * 利定时计数器方式获PWM信号
    **********************************************************
    void time0(void) interrupt 1
    {
    TH0 0xD8
    TL0 0xF0
    Compare_S_N_Temper() 温度较长生PWM信号控制灯亮灭
    Beep() 警报函数
    if(++Cnt_T200) 02s温度采样次
    {
    TR00
    Get_Temperature()
    TransAndDisplayTemp()
    Cnt_T0
    if(++Cnt_P5)
    {
    flag_21
    }
    TR01
    }
    }
    void time1(void) interrupt 0 外部中断0中断函数
    {
    Key_Functional_treatment() 键功实现函数
    }
    **********************************************************
    * 函数名称:Compare_S_N_Temper()
    * 功:较前温度设置温度
    * 根较结果制冷制热吹风
    * 参数:
    * 返回值:
    **********************************************************
    void Compare_S_N_Temper(void)
    {
    if(flag_1&&flag_2)
    {
    前温度设置温度制热红灯亮
    if(Current_Temp {
    warm_gas1
    cold_gas0
    wind0
    }
    前温度设置温度制冷蓝灯亮
    if(Current_Temp>Set_Temp)
    {
    warm_gas0
    cold_gas1
    wind0
    }
    前温度等设置温度吹风绿灯亮
    if(Current_TempSet_Temp)
    {
    warm_gas0
    cold_gas0
    wind1
    }
    }
    }
    int main(void)
    {
    Init_timer0() 初始化计数器外部中断
    Init_LCD() 初始化LCD显示器
    Init_DS18B20() 初始化温传感器
    P30x0f
    while(1)
    {
    P20xf0
    DisplayToLCD() 显示
    }
    }

    Globalc文件
    #ifndef _GLOBAL_H_
    #define _GLOBAL_H_
    #include
    #include
    #define uchar unsigned char
    #define uint unsigned int
    extern float Current_Temp
    extern float Set_Temp
    extern uint flag_1
    extern uint flag_2
    extern uchar Current_Disp_Temp_Buf[]
    extern uchar Set_Critical_Temp_Buf[]
    extern uint bits
    sbit LCD_RS P1^2
    sbit LCD_EN P1^0
    sbit LCD_RW P1^1
    sbit DS18B20_DQ P1^7
    sbit warm_gas P3^5 接暖气引脚
    sbit cold_gas P3^6 接冷气引脚
    sbit wind P3^7 扫风引脚
    sbit beep P1^5 蜂铃器引脚
    #endif

    DS18B20c文件
    **************************************************************
    * 函数名称: DS18B20源程序文件
    * 功: 处理温度传感器温度获取数传递
    * 作者: LLQ
    * 日期: 2013428
    **************************************************************
    #include globalh
    定义数组存放获取温度
    uchar temp_value[]{0x000x00}
    定义数组存放温度转换数字显示
    uchar Disp_Digit[]{0000}
    数字表
    uchar code Digit_table[]{0112334456678899}
    uchar tempT 0 中间变量
    void delay_ds18b20(uint useconds) 延时函数 微秒
    {
    while(useconds)
    }
    **************************************************************
    * 函数名称: WriteOneBit()
    * 功: 1Wire 总线DS18B20写入位值
    * 参数: val写入位
    * 返回值:
    **************************************************************
    void Write_One_Bit(uchar value)
    {
    DS18B20_DQ 0 拉低数线DQ开始写时间间隙
    if(value1)
    DS18B20_DQ 1 数线DQ置1写1
    else
    DS18B20_DQ 0 数线DQ置0写0
    delay_ds18b20(5) 延时时间间隙保持电值
    DS18B20_DQ 1 拉高数线DQ
    }
    **************************************************************
    * 函数名称: Write_One_Byte()
    * 功: 1Wire 总线DS18B20写入字节数
    采循环移位方式写入
    * 参数: byte写入数
    * 返回值:
    **************************************************************
    void Write_One_Byte(uchar value)
    {
    uchar i
    uchar temp
    for(i0i<8i++) 循环写入字节次写入位
    {
    temp value>>i 移位
    temp &0x01
    Write_One_Bit(temp)
    }
    delay_ds18b20(5)
    }
    **************************************************************
    * 函数名称: ReadOneBit()
    * 功: 1Wire 总线DS18B20读取位值
    * 参数: 返回值: DS18B20_DQ位数
    **************************************************************
    uchar Read_One_Bit(void)
    {
    uint i0
    DS18B20_DQ 0 拉低数总线DQ开始读时间间隙
    DS18B20_DQ 1 DQ置1
    for(i0i<5i++) 延时
    return DS18B20_DQ 返回数总线位数
    }
    **************************************************************
    * 函数名称: ReadOneByte()
    * 功: 1Wire 总线DS18B20读取字节数
    * 采循环移位方式读取
    * 参数:
    * 返回值: value读取字节
    **************************************************************
    uchar Read_One_Byte(void)
    {
    uint i0
    uchar value0
    for(i0i<8i++) 循环读取字节次读取位
    {
    if(Read_One_Bit())
    value |0x01< delay_ds18b20(5)
    }
    return value 返回字节数
    }
    **************************************************************
    * 函数名称: Init_DS18B20()
    * 功: 初始化传感器 参数:
    * 返回值: PresenceSignal 0 表示初始化成功
    * 1 表示初始化失败
    **************************************************************
    uchar DS18B20_Init(void)
    {
    uchar PresenceSignal 定义DS18B20信号变量
    DS18B20_DQ 1 DS18B20_DQ复位置高
    delay_ds18b20(8) 延时
    DS18B20_DQ 0 拉低数线发送复位脉
    delay_ds18b20(80)
    DS18B20_DQ 1 拉高数线置DS18B20_DQ高电
    delay_ds18b20(8)
    PresenceSignalDS18B20_DQ 读取存信号判断初始化否成功
    delay_ds18b20(100)
    DS18B20_DQ 1
    return PresenceSignal 返回存信号
    }
    **************************************************************
    * 函数名称: Get_Temperature(void)
    * 功: 传感器获取外界温度
    * 参数:
    * 返回值:
    **************************************************************
    void Get_Temperature(void)
    {
    if(Init_DS18B20())
    {
    Write_One_Byte(0xCC) 跳ROM序列号命令(代码CCH)
    Write_One_Byte(0x44) 启动温度转换命令
    delay_ds18b20(2)
    Init_DS18B20()
    Write_One_Byte(0xCC) 跳ROM序列号命令
    Write_One_Byte(0xBE) 读暂存器命令

    temp_value[0] Read_One_Byte() 读取温度低八位
    temp_value[1] Read_One_Byte() 读取温度高八位
    }
    }
    **************************************************************
    * 函数名称: TransAndDisplayTemp()
    * 功: 转换显示温度
    * 参数:
    * 返回值:
    *************************************************************
    void TransAndDisplayTemp(void)
    {
    uchar flag0
    if((temp_value[1]&0xf8)0xf8)
    {
    temp_value[1] ~temp_value[1]
    temp_value[0] ~temp_value[0]+1
    if(temp_value[0] 0x00)
    temp_value[1]++
    flag1
    }
    Disp_Digit[0] Digit_table[temp_value[0]&0x0f] 数位
    tempT ((temp_value[0]&0xf0)>>4)|((temp_value[1]&0x07)<<4)
    Disp_Digit[3] tempT100 符号位
    Disp_Digit[2] tempT10010 十分位
    Disp_Digit[1] tempT10 位
    Current_Disp_Temp_Buf[11]Disp_Digit[0]+'0' 数位
    Current_Disp_Temp_Buf[10]'' 数点
    Current_Disp_Temp_Buf[9]Disp_Digit[1]+'0' 位
    Current_Disp_Temp_Buf[8]Disp_Digit[2]+'0' 十分位
    Current_Disp_Temp_Buf[7]Disp_Digit[3]+'0' 符号位显示

    Current_Temp Disp_Digit[2]*10 +Disp_Digit[1] +Disp_Digit[0]*01
    if(Disp_Digit[3] 0) 温度显示十分位
    Current_Disp_Temp_Buf[7] ' '
    if((Disp_Digit[2] 0&&Disp_Digit[3] 0)) 温度显示位
    Current_Disp_Temp_Buf[8] ' '
    if(flag)
    {
    Current_Temp (Disp_Digit[2]*10+Disp_Digit[1]+Disp_Digit[0]*01)
    if(Current_Disp_Temp_Buf[8] ' ')
    Current_Disp_Temp_Buf[8] ''
    else if(Current_Disp_Temp_Buf[7] ' ')
    Current_Disp_Temp_Buf[7] ''
    else
    Current_Disp_Temp_Buf[6] ''
    }
    }

    DS18B20h文件
    #ifndef _DS18B20_H_
    #define _DS18B20_H_
    extern uchar DS18B20_Init(void)
    extern void Get_Temperature(void)
    extern void TransAndDisplayTemp(void)
    #endif

    LCDc文件
    **************************************************************
    * 函数名称: LCD源程序文件(LM0162)
    * 功: 显示屏处理
    * 作者: LLQ
    * 日期: 2013427
    **************************************************************
    #include globalh
    #include
    void delay_lcd(uint temp) 延时函数 N延时毫秒
    {
    uint xy
    for(xusecondsx>0x)
    for(y50y>0y)
    }
    **************************************************************
    * 函数名称: Write_Cmd_LCD()
    * 功: 写指令LCD
    * 参数: cmd指令
    * 返回值:
    **************************************************************
    void Write_Cmd_LCD(uchar cmd)
    {
    LCD_RS0 选择指令寄存器写命令模式
    LCD_RW0
    LCD_EN0
    _nop_() 执行空操作 占1us
    _nop_()
    P0cmd 写命令字送数总线
    delay_lcd(3) 稍作延时数稳定
    LCD_EN1 端高脉初始化函数中已LCD_EN置零
    delay_lcd(3) 稍作延时
    LCD_EN0 端置0完成高脉
    }
    **************************************************************
    * 函数名称: Write_Date_LCD()
    * 功: 写显示数LCD
    * 参数: data显示数
    * 返回值:
    **************************************************************
    void Write_Date_LCD(uchar date)
    {
    LCD_RS1 选择数寄存器写数模式
    LCD_EN0
    LCD_RW0
    P0date
    delay_lcd(3)
    LCD_EN1
    delay_lcd(3)
    LCD_EN0
    }

    **************************************************************
    * 函数名称: Init_LCD()
    * 功: 初始化LCD
    * 参数: cmd指令
    * 返回值:
    **************************************************************
    void Init_LCD(void)
    {
    LCD_EN0
    LCD_RW0
    delay_lcd(5) 延时15ms
    Write_Cmd_LCD(0x01) 清LCD显示容
    Write_Cmd_LCD(0x38) 设置16*2显示5*7点阵8位数接口
    delay_lcd(3)
    Write_Cmd_LCD(0x0c) 设置开显示关光标
    delay_lcd(3)
    Write_Cmd_LCD(0x06) 移动光标设置
    delay_lcd(3)
    Write_Cmd_LCD(0x01) 清LCD显示容
    delay_lcd(3)
    }


    **************************************************************
    * 函数名称: DisplayToLCD()
    * 功: 显示温度
    * 参数:
    * 返回值:
    **************************************************************
    void DisplayToLCD(void)
    {
    uchar num
    Write_Cmd_LCD(0x80) 排显示前温度
    for(num0num<15num++)
    {
    Write_Date_LCD(Current_Disp_Temp_Buf[num])
    }
    Write_Cmd_LCD(0x80+0x40) 排显示设置温度
    for(num0num<13num++)
    {
    Write_Date_LCD(Set_Critical_Temp_Buf[num])
    }
    }


    LCDh文件
    #ifndef _LCD_LCM1602_H_
    #define _LCD_LCM1602_H_
    extern void Init_LCD(void)
    extern void DisplayToLCD(void)
    #endif



    KEYc文件
    *********************************************************************
    * 文件名称: 矩阵键盘源程序文件
    * 功: 显示前温度设置温度
    * 开发者: LLQ
    * 日期: 2013429
    ********************************************************************
    #include
    #include
    #include Keyh
    #include globalh

    void Delay_Key(void) 键盘文件中延时函数 延时10ms
    {
    uchar i
    for(i200i>0i)
    }
    **************************************************************
    * 函数名称: Scan_Key()
    * 功: 键盘扫描
    * 参数:
    * 返回值: 扫描获键值
    * 键值表:
    *{0x110x120x140x180x210x220x240x280x410x42
    * 0x440x480x810x820x840x88}
    **************************************************************
    uchar Key_Scan(void)
    {
    uchar codes 定义扫描码变量
    uchar keyvalue 定义键值变量
    uchar i
    if((P2&0xf0)0xf0) 判断否键
    {
    Delay_Key() 延时抖动
    if((P2&0xf0)0xf0) 次判断否键
    {
    codes 0xfe 行扫描码0xfe0xfd0xfb0xf7
    for(i0i<4i++)
    {
    P2 codes
    if((P2&0xf0)0xf0)
    {
    keyvalue ~P2 键码
    switch(keyvalue)
    {
    case 0x11: return K_ONE break 1
    case 0x12: return K_TWO break 2
    case 0x14: return K_THREE break 3
    case 0x18: return K_FOUR break 4
    case 0x21: return K_FIVE break 5
    case 0x22: return K_SIX break 6
    case 0x24: return K_SEVEN break 7
    case 0x28: return K_EIGHT break 8
    case 0x41: return K_NINE break 9
    case 0x42: return K_ZERO break 0
    case 0x44: return K_EMPTY break EMPTY
    case 0x48: return K_ADD break UP
    case 0x81: return K_OK break 0K
    case 0x82: return K_SHIFT break SET
    case 0x84: return K_CLEAR break CLEAR
    case 0x88: return K_MINUS break DOWN
    default:
    break
    }
    }
    else
    codes _crol_(codes1) 换行扫描
    }
    }
    }
    return 1
    }
    **************************************************************
    * 函数名称: Key_Functional_treatment()
    * 功: 键实现该键功
    * 参数:
    * 返回值:
    *备注:数字01 2 3 4 5 6 7 8 9 ASCII码值分:
    * 48495051525354555657
    **************************************************************
    void Key_Functional_treatment(void)
    {
    uchar key
    if(bits0)
    {
    key Scan_Key()
    if(K_ONE key)
    {
    while(Scan_Key() K_ONE) 次判断否键值相等
    Set_Critical_Temp_Buf[8]'1'
    bits++
    }
    if(K_TWO key)
    {
    while(Scan_Key() K_TWO)
    Set_Critical_Temp_Buf[8]'2'
    bits++
    }
    if(K_THREE key)
    {
    while(Scan_Key() K_THREE)
    Set_Critical_Temp_Buf[8]'3'
    bits++
    }
    if(K_FOUR key)
    {
    while(Scan_Key() K_FOUR)
    Set_Critical_Temp_Buf[8]'4'
    bits++
    }
    if(K_FIVE key)
    {
    while(Scan_Key() K_FIVE)
    Set_Critical_Temp_Buf[8]'5'
    bits++
    }
    if(K_SIX key)
    {
    while(Scan_Key() K_SIX)
    Set_Critical_Temp_Buf[8]'6'
    bits++
    }
    if(K_SEVEN key)
    {
    while(Scan_Key() K_SEVEN)
    Set_Critical_Temp_Buf[8]'7'
    bits++
    }
    if(K_EIGHT key)
    {
    while(Scan_Key() K_EIGHT)
    Set_Critical_Temp_Buf[8]'8'
    bits++
    }
    if(K_NINE key)
    {
    while(Scan_Key() K_NINE)
    Set_Critical_Temp_Buf[8]'9'
    }
    if(K_ZERO key)
    {
    while(Scan_Key() K_ZERO)
    Set_Critical_Temp_Buf[8]'0'
    bits++
    }
    if(K_CLEAR key)
    {
    while(Scan_Key() K_CLEAR)
    Set_Critical_Temp_Buf[11]'0'
    Set_Critical_Temp_Buf[10]''
    Set_Critical_Temp_Buf[9]'0'
    Set_Critical_Temp_Buf[8]'0'
    flag_10 较标志位
    cold_gas0
    warm_gas0
    wind0
    }
    if(K_ADD key)
    {
    while(Scan_Key() K_ADD)
    if((Set_Critical_Temp_Buf[11]>47)&&(Set_Critical_Temp_Buf[11]<57))
    {
    Set_Critical_Temp_Buf[11]+1
    }
    else if(Set_Critical_Temp_Buf[11]57)
    {
    Set_Critical_Temp_Buf[11]48
    if((Set_Critical_Temp_Buf[9]>47)&&(Set_Critical_Temp_Buf[9]<57))
    {
    Set_Critical_Temp_Buf[9]+1
    }
    else if(Set_Critical_Temp_Buf[9]57)
    {
    Set_Critical_Temp_Buf[9]48
    if((Set_Critical_Temp_Buf[8]>47)&&(Set_Critical_Temp_Buf[8]<57))
    {
    Set_Critical_Temp_Buf[8]+1
    }
    else if(Set_Critical_Temp_Buf[8]57)
    {
    Set_Critical_Temp_Buf[8]48
    }
    }
    }
    }
    if(K_MINUS key)
    {
    while(Scan_Key() K_MINUS)
    if((Set_Critical_Temp_Buf[11]>48)&&(Set_Critical_Temp_Buf[11]<58))
    {
    Set_Critical_Temp_Buf[11]1
    }
    else if(Set_Critical_Temp_Buf[11]48)
    {
    Set_Critical_Temp_Buf[11]57
    if((Set_Critical_Temp_Buf[9]>48)&&(Set_Critical_Temp_Buf[9]<58))
    {
    Set_Critical_Temp_Buf[9]1
    }
    else if(Set_Critical_Temp_Buf[9]48)
    {
    Set_Critical_Temp_Buf[9]57
    if((Set_Critical_Temp_Buf[8]>48)&&(Set_Critical_Temp_Buf[8]<58))
    {
    Set_Critical_Temp_Buf[8]1
    }
    else if(Set_Critical_Temp_Buf[8]48)
    {
    Set_Critical_Temp_Buf[8]57
    }
    }
    }
    }
    if(K_SHIFT key)
    {
    while(Scan_Key() K_SHIFT)
    bits++
    }
    if(K_OK key)
    {
    while(Scan_Key() K_OK)
    Set_Critical_Temp_Buf[10]''
    Set_Temp(Set_Critical_Temp_Buf[8]48)*10
    +(Set_Critical_Temp_Buf[9]48)
    +(Set_Critical_Temp_Buf[11]48)*01
    bits0
    flag_11
    }
    }
    if(bits1)
    {
    key Scan_Key()
    if(K_ONE key)
    {
    while(Scan_Key() K_ONE)
    Set_Critical_Temp_Buf[9]'1'
    bits++
    }
    if(K_TWO key)
    {
    while(Scan_Key() K_TWO)
    Set_Critical_Temp_Buf[9]'2'
    bits++
    }
    if(K_THREE key)
    {
    while(Scan_Key() K_THREE)
    Set_Critical_Temp_Buf[9]'3'
    bits++
    }
    if(K_FOUR key)
    {
    while(Scan_Key() K_FOUR)
    Set_Critical_Temp_Buf[9]'4'
    bits++
    }
    if(K_FIVE key)
    {
    while(Scan_Key() K_FIVE)
    Set_Critical_Temp_Buf[9]'5'
    bits++
    }
    if(K_SIX key)
    {
    while(Scan_Key() K_SIX)
    Set_Critical_Temp_Buf[9]'6'
    bits++
    }
    if(K_SEVEN key)
    {
    while(Scan_Key() K_SEVEN)
    Set_Critical_Temp_Buf[9]'7'
    bits++
    }
    if(K_EIGHT key)
    {
    while(Scan_Key() K_EIGHT)
    Set_Critical_Temp_Buf[9]'8'
    bits++
    }
    if(K_NINE key)
    {
    while(Scan_Key() K_NINE)
    Set_Critical_Temp_Buf[9]'9'
    bits++
    }
    if(K_ZERO key)
    {
    while(Scan_Key() K_ZERO)
    Set_Critical_Temp_Buf[9]'0'
    bits++
    }
    if(K_CLEAR key)
    {
    while(Scan_Key() K_CLEAR)
    Set_Critical_Temp_Buf[8] '0'
    Set_Critical_Temp_Buf[9] '0'
    Set_Critical_Temp_Buf[10]''
    Set_Critical_Temp_Buf[11]'0'
    flag_10
    cold_gas0
    warm_gas0
    bits0
    }
    if(K_ADD key)
    {
    while(Scan_Key() K_ADD)
    if((Set_Critical_Temp_Buf[9]>47)&&(Set_Critical_Temp_Buf[9]<57))
    {
    Set_Critical_Temp_Buf[9]+1
    }
    else if(Set_Critical_Temp_Buf[9]57) 9
    {
    Set_Critical_Temp_Buf[9]48 0
    if((Set_Critical_Temp_Buf[8]>47)&&(Set_Critical_Temp_Buf[8]<57))
    {
    Set_Critical_Temp_Buf[8]+1
    }
    else if(Set_Critical_Temp_Buf[8]57)
    {
    Set_Critical_Temp_Buf[8]48
    }
    }
    }
    if(K_MINUS key)
    {
    while(Scan_Key() K_MINUS)
    if((Set_Critical_Temp_Buf[9]>48)&&(Set_Critical_Temp_Buf[9]<58))
    {
    Set_Critical_Temp_Buf[9]1
    }
    else if(Set_Critical_Temp_Buf[9]48)
    {
    Set_Critical_Temp_Buf[9]57
    if((Set_Critical_Temp_Buf[8]>48)&&(Set_Critical_Temp_Buf[8]<58))
    {
    Set_Critical_Temp_Buf[8]1
    }
    else if(Set_Critical_Temp_Buf[8]48)
    {
    Set_Critical_Temp_Buf[8]57
    }
    }
    }
    if(K_SHIFT key)
    {
    while(Scan_Key() K_SHIFT)
    bits++
    }
    if(K_OK key)
    {
    while(Scan_Key() K_OK)
    Set_Critical_Temp_Buf[10]''
    Set_Temp(Set_Critical_Temp_Buf[8]48)*10
    +(Set_Critical_Temp_Buf[9]48)
    +(Set_Critical_Temp_Buf[11]48)*01
    bits0
    flag_11
    }
    }
    if(bits2)
    {
    key Scan_Key()
    if(K_ONE key)
    {
    while(Scan_Key() K_ONE)
    Set_Critical_Temp_Buf[11]'1'
    }
    if(K_TWO key)
    {
    while(Scan_Key() K_TWO)
    Set_Critical_Temp_Buf[11]'2'
    }
    if(K_THREE key)
    {
    while(Scan_Key() K_THREE)
    Set_Critical_Temp_Buf[11]'3'
    }
    if(K_FOUR key)
    {
    while(Scan_Key() K_FOUR)
    Set_Critical_Temp_Buf[11]'4'
    }
    if(K_FIVE key)
    {
    while(Scan_Key() K_FIVE)
    Set_Critical_Temp_Buf[11]'5'
    }
    if(K_SIX key)
    {
    while(Scan_Key() K_SIX)
    Set_Critical_Temp_Buf[11]'6'
    }
    if(K_SEVEN key)
    {
    while(Scan_Key() K_SEVEN)
    Set_Critical_Temp_Buf[11]'7'
    }
    if(K_EIGHT key)
    {
    while(Scan_Key() K_EIGHT)
    Set_Critical_Temp_Buf[11]'8'
    }
    if(K_NINE key)
    {
    while(Scan_Key() K_NINE)
    Set_Critical_Temp_Buf[11]'9'
    }
    if(K_ZERO key)
    {
    while(Scan_Key() K_ZERO)
    Set_Critical_Temp_Buf[11]'0'
    }
    if(K_ADD key)
    {
    while(Scan_Key() K_ADD)
    if((Set_Critical_Temp_Buf[8]>47)&&(Set_Critical_Temp_Buf[8]<57))
    {
    Set_Critical_Temp_Buf[8]+1
    }
    else if(Set_Critical_Temp_Buf[8]57) 9
    {
    Set_Critical_Temp_Buf[8]48 0
    }
    }
    if(K_MINUS key)
    {
    while(Scan_Key() K_MINUS)
    if((Set_Critical_Temp_Buf[8]>48)&&(Set_Critical_Temp_Buf[8]<58))
    {
    Set_Critical_Temp_Buf[8]1
    }
    else if(Set_Critical_Temp_Buf[8]48)
    {
    Set_Critical_Temp_Buf[8]57
    }
    }
    if(K_CLEAR key)
    {
    while(Scan_Key() K_CLEAR)
    Set_Critical_Temp_Buf[8] '0'
    Set_Critical_Temp_Buf[9] '0'
    Set_Critical_Temp_Buf[10]''
    Set_Critical_Temp_Buf[11]'0'
    flag_10
    cold_gas0
    warm_gas0
    bits0
    }
    if(K_OK key)
    {
    while(Scan_Key() K_OK)
    Set_Critical_Temp_Buf[10]''
    Set_Temp(Set_Critical_Temp_Buf[8]48)*10
    +(Set_Critical_Temp_Buf[9]48)
    +(Set_Critical_Temp_Buf[11]48)*01
    bits0
    flag_11
    }
    if(K_SHIFT key)
    {
    while(Scan_Key() K_SHIFT)
    bits
    }
    }
    }

    KEYh文件
    #ifndef _KEY_H_
    #define _KEY_H_
    #include globalh
    定义键值
    #define K_ONE 0x31 1
    #define K_TWO 0x32 2
    #define K_THREE 0x33 3
    #define K_FOUR 0x34 4
    #define K_FIVE 0x35 5
    #define K_SIX 0x36 6
    #define K_SEVEN 0x37 7
    #define K_EIGHT 0x38 8
    #define K_NINE 0x39 9
    #define K_ZERO 0x30 0
    #define K_ADD 0x2B +
    #define K_MINUS 0x2D
    #define K_OK 0x50 确定
    #define K_SHIFT 0x51 切换
    #define K_CLEAR 0x52 清
    #define K_EMPTY 0x2E 空操作

    extern void Key_Functional_treatment(void)
    #endif






    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 10 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    基于单片机的温度控制系统设计毕业论文

    职业学院毕业论文 题目:单片机温度控制系统研制 系 院:工程技术学院 学生姓名: 学 号: 专 业:机电一体化 ...

    5年前   
    5823    0

    基于51单片机的数字温度计毕业设计

    数字测温计设计摘要:随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制...

    3年前   
    1186    0

    基于PID的温度控制系统设计论文

     (20XX届) 毕业设计 题  目:   基于PID的温度控制系统设计  学  院:             专  业:     电气工程及其自动...

    5年前   
    1964    0

    论文:基于单片机的温度控制系统

    本设计以AT89C51单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。文中介绍了该控制系统的硬件部分,包括:温度检测电路、...

    5年前   
    1839    0

    基于单片机的高精度温度检测与控制系统

    温度的检测与控制的系统渐渐在我们的日常生活中愈发重要,在我们的日常生活的领域还有各个国家和地方的都大量涉及单片机对温度的检测与其控制,比如温度计,酒店的紧急火灾报警温度感应器等等。

    2年前   
    837    0

    论文:基于单片机的温度控制系统

    本设计以AT89C51单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。

    5年前   
    2364    0

    基于单片机智能小车毕业设计

    毕 业 设 计(论 文)设计(论文)题目: 基于单片机的智能小车 ...

    5个月前   
    185    0

    基于单片机的数字温度计设计课程设计

    基于单片机的数字温度计设计引言随着现代信息技术的飞速发展和传统工业改造的逐步实现.能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需...

    3年前   
    919    0

    基于51单片机数字温度计设计课程设计

    课 题: 基于51单片机数字温度计设计专 业: 电子信息工程班 级: 班学 号: 姓 名: ...

    3年前   
    960    0

    基于AT89C51单片机的鸡舍温度控制系统

    基于AT89C51单片机制作一个温度控制器,用于自动接通电加热或制冷设备,从而使鸡舍内温度达到设想温度的要求,并能实时显示室内温度。当室内温度低于设定下限温度时,控制器连通电加热设备,当室内温度...

    6年前   
    14632    0

    基于ARM的嵌入式温度控制系统设计

     毕业设计说明书(论文)作 者: 学 号: 系 部: 通信工程学院 专 业: 通信工程(计算机通信)...

    2年前   
    350    0

    毕业设计(论文)基于PLC的停车场车位控制系统设计

    基于PLC的停车场车位控制 系统设计 系 别:机电与自动化学院 专 业 班:电气工程及其自动化xx班 姓 名: 学 号:20xx113xx 指导教师: 201x年6月 基于...

    5年前   
    3057    0

    基于PLC的造纸机控制系统设计毕业设计

    X职业技术学院毕 业 设 计 (论 文) 题目名称: 姓 名: ...

    4年前   
    1061    0

    基于PLC的组合机床电气控制系统设计毕业设计

    基于PLC的组合机床电气控制系统设计摘 要应用组合机床加工大批量零件,快捷高效,生产效率高是机械加工的发展方向。本次设计任务是制定三面铣组合机床用来对Z512W型台式钻床主轴箱的Ф80、Ф90...

    3个月前   
    136    0

    基于FPGA的电梯控制系统设计毕业设计论文

    毕 业 设 计 [论 文]题 目: 基于FPGA的电梯控制系统设计 学 院: 电气与信息工程学院 ...

    3年前   
    1253    0

    毕业设计论文基于PLC的停车场车位控制系统设计

    基于PLC的停车场车位控制系统设计系 别:机电与自动化学院专 业 班:电气工程及其自动化班姓 名: 学 号:指导教师: 2011年X月基于PLC的停车场车位控制系统设计Des...

    5个月前   
    268    0

    基于单片机的数字温度计课程设计

    摘要 本文提出了关于MCS-51系列单片机的数字温度计的制作电路方法和编程思想。设计一直灌输着电子电路制作软硬结合,以硬件为主的理念。采用模块化的设计思想。硬件模块分为温度的感应模块、时钟...

    3年前   
    771    0

    基于单片机淬火炉温温度控制课程设计

    基于PID控制的淬火炉炉温控制系统设计1总体方案设计 这次课程设计针对PID控制的淬火炉进行温度控制,设计步骤分为以下几步。 首先进行控制系统的建模和数字控制器设计,设计方案为:选...

    1年前   
    320    0

    基于51单片机的智能窗户设计毕业设计

    基于51单片机的智能窗户设计【摘 要】 随着电子技术的发展和人民生活水平的不断提高,智能窗已经越来越多地被用到了现代智能化建筑中,提供住户一个安全、方便的环境。据统计,在未来的几年内,安装智...

    4个月前   
    105    0

    基于AT89S51单片机无线传输系统设计毕业设计

    毕业论文(设计) 题 目: 单片机无线传输系统设计 完 成 人: ...

    3年前   
    866    0

    文档贡献者

    z***u

    贡献于2019-04-15

    下载需要 10 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!