基于单片机的智能遥控感应风扇设计


    基单片机智遥控感应风扇设计

    设计种智温控湿控风扇系统具灵敏温度感测湿度感测显示功系统STC89C52单片机作控制台风扇转速进行控制户设置高低温度值测温度值高低温度间时开风扇弱风档温度升高超设定温度时动切换风档温度设定温度时动关闭风扇控制状态外界温度定设高低温值保存温度传感器DS18B20部E2ROM中掉电然保存次设定值性稳定控制准确通温湿度传感器DHT11监测温度湿度超设定高湿度值时动开加热片湿湿度设定低湿度值时动开水泵加湿
    关键词:STC89C51单片机STC89C52单片机温湿度传感器智控制








    Abstract
    This design is an intelligent temperature control and humidity control fan system with sensitive temperature sensing humidity sensing and display functions the system STC89C52 microcontroller as a control platform to control the fan speed High and low temperature values can be set by the user When the measured temperature value is between high and low temperature the weak wind shield of the fan will be opened When the temperature rises beyond the set temperature the fan will be automatically switched to the high wind shield The set high and low temperature value is saved in the internal E2ROM of the temperature sensor DS18B20
    After power off the last set value can still be saved with stable performance and accurate control The temperature is monitored through the temperature and humidity sensor DHT11 When the humidity exceeds the set high humidity value the heating element is automatically opened to dehumidify when the humidity is less than the set low humidity value the water pump is automatically opened to humidify
    Key words STC89C51 singlechip microcomputer STC89C52 single chip microcomputer Temperature and humidity sensor Intelligent control



    目 录
    摘 I
    Abstract II
    第1章 绪 1
    第1节 智遥控感应风扇背景 1
    第2节 智遥控感应风扇容 1
    第3节 智遥控感应风扇创新点 2
    第2章 智遥控感应风扇设计程 3
    第1节 风扇硬件设计 5
    第2节 风扇软件设计 9
    第3章 智遥控感应风扇功测试结果 14
    第1节 智遥控感应风扇功 14
    第2节 智遥控感应风扇功测试结果 15
    结 18
    参考文献 19
    致 谢 20
    附 录 21









    第章 绪
    第1节 智遥控感应风扇背景

       年然空调强制冷效果赶超电风扇着绿色生活低碳生活意识普空调高耗电量加剧温室效应破坏臭氧层等弊端低功耗低污染电风扇市场需求传统电风扇采机械方式进行控制部分手动调速功单存隐患足电风扇作降温防暑设备春夏(夏秋)交时节白天温度旧高电风扇应高转速风量感清凉晚气温降低入睡应该逐步减转速免感然风扇调节档位功必须手动换档睡着力普遍采定时器关闭做法方面定时时间长短限制般两时方面两时气温旧没降低风扇关闭睡梦中热醒起床重新开风扇增加定时器时间非常麻烦次定时次定时时间太长温度降低风扇旧继续吹风感第三方面简单定时时间关闭风扇电源单功满足气温变化风扇风速求较功率电子产品散热方面现绝数采风冷系统利风扇引起空气流动带走热量电子产品发热烧坏电子产品保持较低温度必须功率高转速风量风扇风扇噪音功率成正果低噪音减风扇转速会引起电子设备温度升两全美解决述问题设计套温控动风扇系统
    系统采高精度集成温湿度传感器单片机控制显示实时温度根者设定温度动相应温度时作出风风停机动作精确度高动作准确广泛应普日常生活带极方便发展趋势根性质进行相应改进运场合温度监测控制带量济效益
    第2节 智遥控感应风扇完成容
    文STC89C52单片机核心通数字温度传感器外界环境温度进行数采集建立控制系统电风扇温度变化动调节档位实现温度高风力温度低风力弱性外通红外发射接收装置键实现种功启动关闭种功实现遥控户定范围设置电风扇低工作温度温度低设置温度时电风扇动关闭高温度时电风扇重新启动通DHT11温湿度传感器检测湿度湿度超设定湿度值时动开水泵(加湿)温度设定湿度值时动开加热片(湿)控制状态外界湿度定
    设计容:
    (1)风速设低高2档位户通键盘设定
    (2)温度低限值时电风扇风速关闭
    (3)温度限限间时电风扇转速缓慢
    (4)温度高限值时电风扇风速全速运转
    (5)室湿度高限值时电风扇运转湿
    (6)室湿度低限值时电风扇运转加湿
    第3节 智遥控感应风扇创新点
    次智遥控感应风扇设计优点18B20温度传感器红外接收LCD1602显示系统STC89C52单片机独立式键等组成创新点示:
    1 风扇监测室湿度具湿加湿功
    2 者通红外遥控设置温度限
    3 采PWM调速原理实现风扇速度控制
    4 温度精确数点显示通LCD1602显示出





    第2章 智遥控感应风扇设计程
    第节 风扇硬件设计
    11 STC89C52单片机简介
    STC89C52美国ATMEL公司生产低电压高性CMOS8位单片机片4bytes反复擦写读程序存储器(PEROM)128 bytes机存取数存储器(RAM)器件采ATMEL公司高密度非易失性存储技术生产兼容标准MCS51指令系统片置8位中央处理器(CPU)Flash存储单元功强STC89C52单片机灵活应种控制领域
    STC89C52单片机提供标准功:4K字节Flash闪速存储器128字节部RAM32IO口线两16位定时计数器5量两级中断结构全双工串行通信口片振荡器时钟电路时STC89C52单片机降0Hz静态逻辑操作支持两种软件选节电工作模式空闲方式停止CPU工作允许RAM定时计数器串行通行口中断系统继续工作掉电方式保存RAM中容振荡器停止工作禁止部件工作直硬件复位
    12 DS18B20温度传感器简介
    DS18B20常数字温度传感器输出数字信号具体积硬件开销低抗干扰力强精度高特点
    (1)独特单线接口方式:DS18B20微处理器连接时仅需条口线实现微处理器DS18B20双通讯
    (2)中需外围元件
    (3)数线供电电压范围:+30~ +55 V
    (4)测温范围:55 ~+125 ℃固测温分辨率05 ℃
    (5)通编程实现9~12位数字读数方式
    (6)户设定非易失性报警限值
    (7)支持点组网功DS18B20联惟三线实现点测温
    (8)负压特性电源极性接反时温度计会发热烧毁正常工作
    单线(1—wire)技术:
    该技术采单根信号线传输时钟传输数双传输适单机系统机够控制机设备通漏极开路三态端口连该数线允许设备发送数时释放该线设备单线通常求外接5K拉电阻样该线空闲时状态高电
    机机间通讯分成三步骤:初始化单线器件识单线器件单线数传输
    单线1—wire协议复位脉应答脉写0写1读0读1种信号类型实现信号中应答脉机发起指令数字节低位前
    温度值℃ 数字输出(二进制) 数字输出(十六进制)
    +125 0000 0111 1101 0000 07D0H
    +85 0000 0101 0101 0000 0550H
    +25625 0000 0001 1001 0001 0191H
    +10125 0000 0000 1010 0010 00A2H
    +05 0000 0000 0000 1000 0008H
    0 0000 0000 0000 0000 0000H
    05 1111 1111 1111 1000 FFF8H
    10125 1111 1111 0110 1110 FF5EH
    25625 1111 1111 0110 1111 FF6FH
    55 1111 1100 1001 0000 FC90H

    DS18B20直接测量温度值转化数字量提交单片机工作时必须严格遵守单总线器件工作时序
    表21 部分温度值DS18B20输出数字量表

    13 DHT11数字温湿度传感器介绍
    DHT11数字温湿度传感器款含已校准数字信号输出温湿度复合传感器应专数字模块采集技术温湿度传感技术确保产品具极高性卓越长期稳定性传感器包括电阻式感湿元件NTC测温元件高性8位单片机相连接该产品具
    品质卓越超快响应抗干扰力强性价极高等优点DHT11传感器极精确湿度校验室中进行校准校准系数程序形式存OTP存中传感器部检测信号处理程中调校准系数单线制串行接口系统集成变简易快捷超体积极低功耗成该类应中苛刻应场合佳选择产品4针单排引脚封装连接方便
    14 系统总体设计
    键盘输入

    温湿度显示
    单片机系统
    电机控制模块
    温湿度传感模块






    图21 系统总体结构框图
    15 控制装置设计原理
    传统电风扇供电采220V交流电电机转速分档位通工手动调整电机转速达改变风速目改变次风力必然参操作功单样会带诸便
    设计种基单片机智电风扇调速器设计该设计巧妙利红外线遥控技术单片机控制技术级调速技术温度传感技术智控制技术应家电器控制中电风扇电机转速作控制量单片机分析采集数字温度信号通控硅风扇电机进行调速达须控制便动调整风扇速度控制温湿度效果
    16 温湿度传感器显示电路组成
    模块更优秀DS18B20温度传感器DHT11温湿度传感器STC89C52单片机作处理器配温度显示作温度控制输出单元整系统力求结构简单功完善电路图图12示
    系统工作原理:
    DS18B20数字温度传感器采集现场温度测量数送入STC89C52单片机P24口单片机处理显示前温度值设定温度值限值作较高设定限值低设定限值控制电机转速进行动调整
    DHT11温湿度传感器检测湿度湿度超设定湿度值时动开水泵(加湿)温度设定湿度值时动开加热片(湿)控制状态外界湿度定





    图22 DS18B20温湿度原理图


    图23 LCD1602原理图

    17 电机调速电路
    电机调速整控制装置中相重方面通控制改变三极翻出导输出端电压发生改变施加电风扇输入电压发生改变调节风扇转速实现档位风速级调速
    双控硅导通条件:
    (1)阳阴极间加正电压
    (2)控制极阴极间加正触发电压
    (3)阳极电流IA 控硅维持电流IH
    电风扇风速高低设54321档档风速限定值额定电压额定功率高转速运转时求风叶圆周线速度2150mmin线速度列公式求
    VπDn×103 (1)
    式(1)中V扇叶圆周线速度(mmin)D扇中顶端扫出圆直径(mm)n电风扇高转速(rmin)
    代入数求n5≤1555rmin取n51250 rmin:

    取n1875rmin出五档位转速值:
    n1875rminn2980rminn31063rminn41150 rminn51250rmin
    负载电压效值
    u0u1 (2)
    式(2)中u1输入交流电压效值α控制角解:
    (1) α50°时t0ms
    (2) α4235°时t170ms
    (3) α3465°时t258ms
    (4) α2615°时t343ms
    (5) α1765°时t430ms
    述计算出控制角触发时间检测零点时求触发时间延时发脉便实现预期转速
    模块电路中采零双控硅型光耦MOC3041M 集光电隔离零检测零触发等功身避免输入输出通道时控制双控硅触发缺陷 简化输出通道隔离2驱动电路结构设计控硅触发电路原理图见图13中RL电机负载工作原理单片机响应户参数设置 I O 口输出高电 反器反 送出低电光电耦合器导通 时触发双控硅 工作电路导通工作定时间负载功率
    (3)
    式中 P 负载功率( kW) n 定时间控硅导通正弦波数 N 定时间交流正弦波总数 U控硅电源周期全导通时应电压效值(V) I 控硅电源周期全导通时应电流效值(A)式(3) 知U I N 定值时 改变n 值控制功率输出达调节电机目

    图24 电机控制原理图
    18 红外遥控
    红外遥控单工红外通信方式设计红外遥控采通信方式基础红外遥控设计红外通信技术着重分析红外通信基原理
    红外通信利红外技术实现两点间距离保密通信信息转发般红外发射接收系统两部分组成发射系统红外辐射源进行调制发射红外信号接收系统光学装置红外探测器进行接收构成红外通信系统
    红外线波长750nm1mm间电磁波频率高微波低见光种眼光线红外通信般采红外波段红外线波长075um25um间红外数协会(IRDA)成立保证厂商红外产品够获佳通信效果红外通信协议红外数通信采光波波长范围限定850900nm
    红外通信基原理发送端基带二进制信号调制系列脉串信号(载
    波信号)通红外发射发射红外信号常通脉宽度实现信号调制脉宽调制(PWM)通脉串间时间间隔实现信号调制脉时调制(PPM)两种方法脉时调制(PPM)红外数协会(IRDA)国际电子电工委员会(IEEE)推荐调制方式设计采脉时调制方法两脉串间时间间隔表示二进制信息数特传送仿带奇偶校验RS232通信首先产生步头然接着8位数特图14示

    图25 PPM调制波形图



    t1
    t1
    t2

    t3
    二进制0
    二进制1

    载波信号频率ƒ38kHz载波周期T2632us












    载波信号频率ƒ38kHz载波周期T2632us设计单片机软件产生载波取T26us脉宽度t110T260us二进制数0脉串周期t2500us二进制数1脉串周期t31000us
    普通红外遥控采面指令帧结构数帧步码址码指令码组成指令码长度8~16特传送字节遥控协议时效率偏低增加指令码长度利接收器步设计选种面字节帧结构采类似异步串行通信帧结构帧起始位(二进制数0)8数位2停止位(二进制数1)构成图15示帧传送1字节数帧帧间隔2ms帧结构含图26 数帧结构示意图

    ……
    数帖
    停止位
    数位(8位)
    帖间隔
    起始位
    停止位
    址信息寻址问题高层协议解决








    红外光存反射红外通信应采异步半双全双工方式发送信号会身接收工方式通信某方发送接收交进行

    第二节 风扇软件设计
    21 控制器软件控制
    系统运行程序采C语言编写采模块化设计整体程序程序显示键盘扫描红外线接收电机控制等子程序模块组成
    22 程序
    程序进行初始化开始反复检测模块相关部分缓区标志果缓区置位说明相应数需处理然程序调相应处理子模块图27示
    系统初始化
    温湿度变化?
    温湿度控制子模块
    键盘输入?
    键盘处理子模块
    开始
    红外信号?
    红外接收处理模块
    Y
    N
    Y
    N
    Y
    N
    显示子模块
    图27 程序模块流程图






    23 数字温度传感器模块显示子模块
    开始
    DS18B20初始化
    启动DS18B20测温
    部判断
    调读子程序
    显示子程序
    结束
    调相应控制程序
    调相应键值处理程序
    调写子程序
    异常
    正常
    图28示机控制DS18B20数字温度传感器完成温度转换工作必须三步骤:初始化ROM操作指令存储器操作指令单片机系统频率12MHz
    根DS18B20数字温度传感器进行初始化时序读时序写时序分编写3子程序:初始化子程序写子程序读子程序
    图28 数字温度传感器模块程序流程图

    DS18B20芯片功命令表:
    命令 说明 协议
    READ ROM 读取激光ROM64位 33H
    MATCH ROM 匹配ROM 55H
    SKIP ROM 跳ROM CCH
    SEARCH ROM 搜索ROM F0H
    ALARM SEARCH 告警搜索 ECH
    WRITE SCRATCHPAD 字节写入暂存器址23 4EH
    READ SCRATCHPAD 读取暂存器CRC字节 BEH
    COPY SCRATCHPAD 暂存器容拷贝非易失性存储器中 48H
    CONVERT T 开始温度转换 44H
    RECALL E2 非易失性存储器中值召回暂存器 B8H
    READ POWER SUPPLY 读电源供电方式:0寄生电源1外电源 B4H
    表22 DS18B20功命令表
    24 电机调速控制子模块
    模块采双控硅零触发方式单片机控制双控硅通断通改变控制周期控硅导通关断交流完整全波信号数调节负载功率进达调速目
    INT0信号反映工频电压零时刻外中断0中断服务程序中完成控制门开启关闭利中断服务次数控制量n进行计数判断中断次n进行减1计数果n等0保持控制电1继续开控制门n0控制电复位0关闭控制门控硅零触发脉通样控制处理控制量求实现控硅零控制达控制量控制效果实现速度调
    (1)中断服务程序:执行中断服务程序时首先保护现场INT0中断标志置位禁止程序修改工作参数然开始减1计数判断否关断控硅INT0中断标志位清零原初始化数恢复现场中断返回(设1秒钟通波形数N100)
    EX0中断
    温度等限值限值
    控制控硅
    截止
    中断返回
    设置T0参数
    启动定时
    T0中断
    控制控硅导通
    停止T0定时
    中断返回
    b
    (2)回路控制执行程序:回路控制执行程序务初始化数存储单元确定电机工作参数nminnmax换算成效零脉数确定中断优先级开中断保证正弦波完整工频零步中断INT0确定高级中断源a

    图29电机控制模块中断响应流程图






    第3章 智遥控感应风扇功测试结果
    第1节 智遥控感应风扇实现功
    STC89C52单片机核心通数字温度传感器外界环境温湿度进行数采集LCD1602液晶显示建立控制系统电风扇温度变化动调节档位采PWM调速原理实现温度高风力温度低风力弱性体感应传感器感应液晶会显示Y没感应会显示N具智延时关闭风扇功没感应延时30秒系统会动关闭风扇外通红外发射接收装置键实现种功启动关闭种功实现遥控户定范围设置电风扇低工作温度温度低设置温度时电风扇动关闭高温度时电风扇重新启动通DHT11温湿度传感器检测湿度湿度超设定湿度值时动开水泵(加湿)温度设定湿度值时动开加热片(湿)控制状态外界湿度定

    第2节 智遥控感应风扇功测试结果
    完成焊接实物调试根实物达具体设计求功进行断修调试电源接通时先测试显示装置否显示正常数字然通测试查问题出现运行效果图




    设计完成工作
    系统STC89C52单片机核心单片机完成外界环境温湿度信号采集处理显示等功
    运行程序该系统特点
    (1)适性强户需界面参数进行设置启动系统正常运行便满足户适合温湿度求实现适温湿度实时监控
    (2)时根软件编写新功加入产品操作界面扩展性强稍加改变增加键功
    系统温度控制采DS18B20数字温度传感器作感温元件控硅串接电源负载电风扇改变定周期控硅导通截止时间实现调速功设计完方便适应睡办公等场合
    基STC89C52单片机设计研制电风扇智调速系统造价低具稳定性高性优越节约电等优点夜间需定时样带更方便
    设计模拟检测中运行较采样太稳定功缺憾两档间界温度处理档位太少改进
    课题研究程中单片机传感器定解设计智电风扇总体设计思路中芯片没学通设计中学查阅量资料尤图书馆询问老师通校园网网站查许帮助资料学起讨芯片深刻解学会运具体实践中方面进步改进完善工作学中需更加努力学理知识身掌握知识基础量书籍提高实践力专业知识做进步学研究



    a










    参考文献
    [1] 曹巧媛单片机原理应北京:电子工业出版社20022
    [2] 王伦电风扇原理维修技术[M]北京:新时代出版社1999
    [3] 张毅刚新编MCS51单片机应设计哈尔滨工业学出版社200610
    [4] 梁廷贵王裕琛控硅触发电路语音电路分册[M]北京:科学技术文献出版社2003
    [5]陈杰黄鸿等传感器检测技术北京高等教育出版社2002 8 ~25
    [6]张肇富采温度传感器电扇江苏电器1994 2
    [7]胡乾斌单片微型计算机原理应武汉华中理工学出版社1997
    [8]陈丽芳单片机原理控制技术南京东南学出版社2003
    [9]刘迎春叶湘滨传感器原理设计应长沙国防科技学出版社2002
    [10]立民单片机应技术选编北京北京航空航天学出版社2004
    [11]李昔华王延川电风扇智控制模块设计渝州学学报(然科学版)2000









    致谢

    设计完成际首先教毕业文指导老师付兴烨老师表示真挚谢意扎实理知识传授果没谆谆教海没篇文设计思路文写作期间付兴烨老师指导帮助提中肯意见次修改期激励勇气克服心理压力完成文文稿然写作程中遇麻烦付老师厌烦帮修改提出建议里忠诚感谢 毕业设计学四年学容总结感学知识远远够需工作生活中进行学提高设计中学知识运实际中解理实践差距工作中弥补种差距
    次设计中时间关系文基已完成学识限现知识限加时间仓促文中免错误改进处真诚欢迎位老师学提出宝贵意见












    附 录
    原理图


    数字温度传感器模块显示子模块程序
    #include 调单片机头文件
    #define uchar unsigned char 符号字符型 宏定义 变量范围0~255
    #define uint unsigned int 符号整型 宏定义 变量范围0~65535
    #include

    sbit dq P1^5 18b20 IO口定义

    sbit hw P1^3

    bit flag_lj_en 键连加
    bit flag_lj_3_en 键连3次连加 加数越
    uchar key_timekey_value 做连加中间变量
    bit key_500ms


    uint temperature
    bit flag_200ms
    uchar miao 30

    uchar flag_en

    uchar code table_num[]0123456789abcdefg

    sbit rsP1^0 寄存器选择信号 H数寄存器 L指令寄存器
    sbit rwP1^1 寄存器选择信号 H数寄存器 L指令寄存器
    sbit e P1^2 片选信号 降触发

    sbit pwm P1^4
    uchar f_pwm_l 越越慢

    uchar menu_1 菜单设计变量
    uint t_high 300t_low 100

    ***********100us延时函数***12M晶振**************
    void delay_100us(uchar z)
    { 12M
    uchar xy
    for(x0x for(y0y<20y++)
    }

    sbit hw_P32P3^2 红外遥控IO口定义
    bit flag_jiema_en 0 红外解码成功标志位
    uchar hw_table[4] 红外解码数缓区


    ***********************1ms延时函数*****************************
    void delay_1ms(uint q)
    {
    uint ij
    for(i0i for(j0j<110j++)
    }

    ********************************************************************
    * 名称 delay_uint()
    * 功 延时
    * 输入
    * 输出
    ***********************************************************************
    void delay_uint(uint q)
    {
    while(q)
    }

    ********************************************************************
    * 名称 write_com(uchar com)
    * 功 1602命令函数
    * 输入 输入命令值
    * 输出
    ***********************************************************************
    void write_com(uchar com)
    {
    e0
    rs0
    rw0
    P0com
    delay_uint(25)
    e1
    delay_uint(100)
    e0
    }

    ********************************************************************
    * 名称 write_data(uchar dat)
    * 功 1602写数函数
    * 输入 需写入1602数
    * 输出
    ***********************************************************************
    void write_data(uchar dat)
    {
    e0
    rs1
    rw0
    P0dat
    delay_uint(25)
    e1
    delay_uint(100)
    e0
    }

    ********************************************************************
    * 名称 write_string(uchar hanguchar adduchar *p)
    * 功 改变液晶中某位值果第行第五字符开始显示ab cd ef 调该函数
    write_string(15ab cd ef)
    * 输入 行列需输入1602数
    * 输出
    ***********************************************************************
    void write_string(uchar hanguchar adduchar *p)
    {
    if(hang1)
    write_com(0x80+add)
    else
    write_com(0x80+0x40+add)
    while(1)
    {
    if(*p '\0') break
    write_data(*p)
    p++
    }
    }

    ***********************lcd1602显示特定字符************************
    void write_zifu(uchar hanguchar adduchar date)
    {
    if(hang1)
    write_com(0x80+add)
    else
    write_com(0x80+0x40+add)
    write_data(date)
    }

    ***********************lcd1602显示两位十进制数************************
    void write_sfm3_18B20(uchar hanguchar adduint date)
    {
    if(hang1)
    write_com(0x80+add)
    else
    write_com(0x80+0x40+add)
    write_data(0x30+date10010)
    write_data(0x30+date1010)
    write_data('')
    write_data(0x30+date10)
    }

    ***********************lcd1602显示两位十进制数************************
    void write_sfm2(uchar hanguchar adduint date)
    {
    if(hang1)
    write_com(0x80+add)
    else
    write_com(0x80+0x40+add)
    write_data(0x30+date1010)
    write_data(0x30+date10)
    }

    ***********************lcd1602初始化设置************************
    void init_1602()
    {
    write_com(0x38)
    write_com(0x0c)
    write_com(0x06)
    delay_uint(1000)
    write_string(10 temp )
    write_string(20H L )
    write_zifu(1120xdf) 显示度
    write_zifu(26 0xdf) 显示度
    write_zifu(2140xdf) 显示度

    }

    ***********************18b20初始化函数*****************************
    void init_18b20()
    {
    bit q
    dq 1 总线高
    delay_uint(1) 15us
    dq 0 复位脉
    delay_uint(80) 750us
    dq 1 总线高 等
    delay_uint(10) 110us
    q dq 读取18b20初始化信号
    delay_uint(20) 200us
    dq 1 总线高 释放总线
    }

    *************写18b20数***************
    void write_18b20(uchar dat)
    {
    uchar i
    for(i0i<8i++)
    { 写数低位开始
    dq 0 总线低写时间隙开始
    dq dat & 0x01 18b20总线写数
    delay_uint(5) 60us
    dq 1 释放总线
    dat >> 1
    }
    }

    *************读取18b20数***************
    uchar read_18b20()
    {
    uchar ivalue
    for(i0i<8i++)
    {
    dq 0 总线低读时间隙开始
    value >> 1 读数低位开始
    dq 1 释放总线
    if(dq 1) 开始读写数
    value | 0x80
    delay_uint(5) 60us 读时间隙少保持60us时间
    }
    return value 返回数
    }


    *************读取温度值 读出数***************
    uint read_temp()
    {
    uint value
    uchar low 读取温度时候果中断太频繁应该中断关否会影响18b20时序
    init_18b20() 初始化18b20
    write_18b20(0xcc) 跳64位ROM
    write_18b20(0x44) 启动次温度转换命令
    delay_uint(50) 500us

    init_18b20() 初始化18b20

    write_18b20(0xcc) 跳64位ROM
    write_18b20(0xbe) 发出读取暂存器命令

    low read_18b20() 读温度低字节
    value read_18b20() 读温度高字节
    value << 8 温度高位左移8位
    value | low 读出温度低位放value低八位中
    value * 0625 转换温度值 数
    return value 返回读出温度 带数
    }

    *************定时器0初始化程序***************
    void time_init()
    {
    EA 1 开总中断
    TMOD 0X11 定时器0定时器1工作方式1
    ET0 1 开定时器0中断
    TR0 1 允许定时器0定时
    ET1 1 开定时器0中断
    TR1 0 允许定时器0定时
    }

    ********************独立键程序*****************
    uchar key_can 键值

    void key() 独立键程序
    {
    static uchar key_new
    key_can 20 键值原
    P3 | 0xf0
    if(key_500ms 1) 连加
    {
    key_500ms 0
    key_new 1
    }
    if((P3 & 0xf0) 0xf0) 键
    {
    delay_1ms(1) 键消抖动
    if(((P3 & 0xf0) 0xf0) && (key_new 1))
    { 确认键
    key_new 0
    switch(P3 & 0xf0)
    {
    case 0xc0 key_can 1 break k1键值
    case 0xa0 key_can 2 break K2键值
    case 0x80 key_can 3 break k3键值
    }
    }
    }
    else
    {
    if(key_new 0)
    {
    key_new 1
    flag_lj_en 0 关闭连加
    flag_lj_3_en 0 关闭3秒
    key_value 0 清零
    key_time 0
    }
    }
    }

    ****************键显示函数***************
    void key_with()
    {
    if(key_can 1) 设置键
    {
    menu_1 ++
    if(menu_1 > 3)
    {
    menu_1 0
    }
    if(menu_1 0)
    {
    write_com(0x0c) 关闭光标
    }
    }
    if(menu_1 1) 设置高温
    {
    if(key_can 2)
    {
    if(flag_lj_3_en 0)
    t_high ++ 键未松开动加三次
    else
    t_high + 10 键未松开动加三次次动加10
    if(t_high > 990)
    t_high 990
    }
    if(key_can 3)
    {
    if(flag_lj_3_en 0)
    t_high 键未松开动减三次
    else
    t_high 10 键未松开动减三次次动减10
    if(t_high < t_low)
    t_high t_low + 1
    }
    write_sfm3_18B20(22t_high)
    write_com(0x80+0x40+2) 光标移动秒位
    write_com(0x0f) 显示光标闪烁
    }
    if(menu_1 2) 设置低温
    {
    if(key_can 2)
    {
    if(flag_lj_3_en 0)
    t_low ++ 键未松开动加三次
    else
    t_low + 10 键未松开动加三次次动加10
    if(t_low > t_high)
    t_low t_high 1
    }
    if(key_can 3)
    {
    if(flag_lj_3_en 0)
    t_low 键未松开动减三次
    else
    t_low 10 键未松开动加三次次动加10
    if(t_low < 10)
    t_low 10
    }
    write_sfm3_18B20(210t_low)
    write_com(0x80+0x40+10) 光标移动秒位
    write_com(0x0f) 显示光标闪烁
    }
    }


    ****************风扇控制函数***************
    void fengshan_kz()
    {
    if(flag_en 1)
    {
    if(temperature > t_high) 风扇全开
    {
    TR1 1
    pwm 0
    }
    else if((temperature < t_high) && (temperature > t_low)) 风扇缓慢
    {
    f_pwm_l 65
    TR1 1
    }
    else if(temperature < t_low) 关闭风扇
    {
    TR1 0
    pwm 1
    }
    }else 关闭风扇
    {
    TR1 0
    pwm 1

    }
    }


    ***********外部中断0初始化程序****************
    void init_int0() 外部中断0初始化程序
    {
    EX01 允许外部中断0中断
    EA1 开总中断
    IT0 1 外部中断0负跳变中断
    }

    ***********红外遥控程序**************
    void hongwai_dis()
    {
    if(flag_jiema_en 1)
    {
    flag_jiema_en 0
    if(hw_table[2] 0x09) 设置键
    {
    key_can 1
    }
    if(hw_table[2] 0x15) 加键
    {
    key_can 2
    }
    if(hw_table[2] 0x07) 减键
    {
    key_can 3
    }
    hw_table[2] 0 数清零
    }
    }



    ****************函数***************
    void main()
    {
    static uchar value
    init_1602() 1602初始化
    time_init() 初始化定时器
    init_int0() 外部中断0初始化程序
    while(1)
    {

    if(flag_200ms 1) 300ms 处理次温度程序
    {
    flag_200ms 0
    value ++
    if(value > 4)
    {
    value 0
    if(miao 0)
    {
    miao 时间减1
    }
    if(miao 0)
    flag_en 0
    }
    if(hw 1) 感应
    {
    miao 30
    write_string(114Y )
    flag_en 1
    }
    else
    write_string(114N )
    write_sfm2(10miao)
    temperature read_temp() 先读出温度值

    fengshan_kz() 风扇控制函数

    write_sfm3_18B20(18temperature)

    }

    key() 键程序
    hongwai_dis() 红外遥控程序
    if(key_can < 10)
    {
    key_with() 设置报警温度
    }
    }
    }

    **********************红外解码中断程序***********************
    void int0() interrupt 0
    {
    unsigned char ij
    delay_100us(20) 防止干扰
    if(hw_P32 0)
    { 引导码
    while(hw_P32 0) 等低电完
    delay_100us(20)
    if(hw_P32 1) 引码结束
    {
    delay_100us(20) 说明高电已完 引导码已结束
    for(i0i<4i++)
    for(j0j<8j++)
    {
    while(hw_P32 0) 等完
    delay_100us(5)
    if(hw_P32 0) 数0时间
    { 数1时间
    hw_table[i] >> 1 低位前
    }
    else
    {
    delay_100us(5) 高电时间完
    hw_table[i] >> 1 低位前
    hw_table[i] | 0x80 数值1
    }
    }
    flag_jiema_en 1 红外解码成功
    }
    }
    }

    *************定时器0中断服务程序***************
    void time0_int() interrupt 1
    {
    static uchar value
    TH0 0x3c
    TL0 0xb0 50ms
    value ++
    if(value 4 0)
    {
    flag_200ms 1 300ms
    value 0
    }
    if(flag_lj_en 1) 键
    {
    key_time ++
    if(key_time > 10) 500ms
    {
    key_time 0
    key_500ms 1 500ms
    key_value ++
    if(key_value > 3)
    {
    key_value 10
    flag_lj_3_en 1 3次15秒连加
    }
    }
    }

    }

    *******************定时器1做单片机模拟PWM 调节***********************
    void Timer1() interrupt 3 调定时器1
    {
    static uchar value_l
    TH10xfe
    TL10x0c 500us
    if(pwm1)
    {
    value_l+3
    if(value_l > f_pwm_l) 高电
    {
    value_l0
    if(f_pwm_l 0)
    pwm0
    }
    }
    else
    {
    value_l+3
    if(value_l > 100 f_pwm_l) 低电
    {
    value_l0
    pwm1
    }
    }
    }





    文档香网(httpswwwxiangdangnet)户传

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

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

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

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

    下载文档

    相关文档

    基于单片机的智能温控风扇设计毕业设计

    XX职业技术学院毕业设计论文作者 学号 系部 电子信息学院 专业 物联网应...

    4年前   
    858    0

    基于Android智能风扇的设计

    由于科技越来越发达,智能硬件也使用越来越多,基于蓝牙的技术开发以及应用也是快速的发展。其使用在Android系统和Windows系统等平台上都可以使用蓝牙无线模块。可以实现了主蓝牙设备和从设备它...

    3年前   
    969    0

    基于51单片机的红外线遥控智能台灯设计-智能台灯的控制系统电路设计

    随着社会的发展,智能产品也随着变化,电子产品快速发展,我们家用电器智能化越来越多,常见的智能家居如电饭煲,电磁炉,台灯等主要系统都具有一个共同的特点,那就是利用单片机控制系统作为本次的核心系统,...

    3年前   
    968    0

    AT89C51单片机智能风扇

    AT89C51单片机智能风扇摘要随着人们生活水平及科技水平的不断提高,现在家用电器在款式、功能等方面日益求精,并朝着自动化、智能化、环保化、和人性化等方向发展。过去的电器不断的显露出其不足之处...

    4年前   
    711    0

    基于单片机的智能小车设计开题报告

    电气与信息学院毕业设计(论文)开题报告 基于单片机的智能小车设计 电子 ...

    5个月前   
    308    0

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

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

    6个月前   
    199    0

    基于单片机的智能灭火小车设计

    摘要:当今社会,火灾在现实生活中普遍存在,被称为自然界三大灾害之一。当火灾发后,灭火工作坏境恶劣时,人工不能完成一些灭火任务,此时便可以使用智能灭火小车去完成相应的任务。本文设计了一个以单片机为...

    4年前   
    1494    0

    开题报告-基于单片机的风扇速度控制设计

    开题报告电气工程及自动化基于单片机的风扇速度控制设计一、综述本课题国内外研究动态,说明选题的依据和意义单片机因其体积小,抗干扰能力强、而且使用灵活方便,成本低等特点,它的应用范围非常广泛,尤其...

    4年前   
    1116    0

    基于单片机的遥控窗帘课程设计

    《单片机应用与仿真训练》设计报告基于单片机的遥控窗帘设计姓 名: 学 号: ...

    1年前   
    292    0

    基于51单片机红外感应家用小夜灯的设计

     本科毕业论文(设计)题 目: 基于51单片机红外感应家用小夜灯的设计 院 系:物理与电子信息科学系 专 业:电子信息科学与技术...

    2年前   
    560    0

    基于单片机的智能鱼缸的设计与实现毕业设计

    近年来嵌入式发展迅速,智能家居也进入了人们的生活。智能鱼缸却没有快速发展。我根据市场上相关设备现状的分析和研究,从系统集成角度进行设计和开发,提出了一套多功能的智能观赏鱼缸控制系统的设计方案。

    5年前   
    4272    0

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

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

    5个月前   
    121    0

    单片机红外遥控系统设计

     单片机红外遥控系统设计 摘要:本文设计了一种基于AT89S52单片机的红外遥控系统,可用于控制多种电器的开关,交流电机的转速及启停等方面。阐述了发射部分和接收部分的设计原理和工作...

    5年前   
    1118    0

    智能温控风扇设计毕业论文

     届毕业设计(论文)系部电子工程系班级通信技术姓名学号题目智能温控风扇指导教师论文提交日期2015目录摘要 1第一章 绪论 21.1课题研究及应用前景 21.2本设计任务主要要求 2...

    6个月前   
    448    0

    智能电风扇控制系统的设计

    智能电风扇控制系统的设计摘要:本文设计了一款智能电风扇控制系统,使用STC89C51作为主控制芯片,通过DS18B20检测环境温度并将温度信号发送给单片机。电机是否启动,以及电机的转速由系统设...

    2年前   
    750    0

    基于单片机的智能宠物投喂系统的设计

    基于单片机的智能宠物投喂系统的设计Design of intelligent pet feeding system based on MCU内容摘要随着人们现在生活和工作的压力加大,相互间可以...

    10个月前   
    348    0

    基于单片机的智能浇花系统的设计与实现

    基于单片机的智能浇花系统的设计与实现 摘 要 随着社会的发展,人民越来越注重环境质量。养殖花卉成了首要选择,在家养殖可以陶怡情操,丰富生活。同时花卉可以通过光合作...

    5年前   
    1969    0

    论文:基于51单片机的智能充电器的设计

    在我们的日常生活中,手机已经变得越来越重要了。我们经常需要使用手机,打电话、发短信、上网、看电影、听歌、玩游戏等等。随着大屏幕和高主频的手机出现,锂离子电池就变得更加重要了,其锂离子电池充电器也...

    5年前   
    1661    0

    基于单片机的红绿灯智能控制系统设计

    随着社会经济的快速发展以及人们生活水平的提高 ,机动车数量也在急剧增加 ,交通问题逐渐成为人们关注的重点对象,因城市发展所带来的交通拥堵等问题,利用智能交通来解决传统交通日渐出现的问题成为大势所趋。

    3年前   
    854    0

    基于单片机的智能电饭煲的控制毕业设计

    分类号 编 号 毕 业 设 计题目: 基于单片机的电饭煲智能控制系统的设计 ...

    2年前   
    506    0

    文档贡献者

    王***朝

    贡献于2020-09-01

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

    该用户的其他文档