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


    基51单片机智窗户设计

    摘 着电子技术发展民生活水断提高智窗已越越现代智化建筑中提供住户安全方便环境统计未年安装智窗户断增加次设计智窗户系统通数检测传感电路断循环检测室外湿度温度室外湿度达定时(雨时)窗户动关闭防止潮湿空气雨水进入房间外设置动关闭窗户开启窗户时间设定时间会动关闭开启窗户设置否动根湿度变化动开启关闭窗户者根设置时间动开启者关闭窗户

    关键词智窗户 单片机 温度检测湿度检测

    Abstract With the development of electronic technology and the continuous improvement of people's living standard the intelligent window has been increasingly used in modern intelligent building to provide a safe convenient resident environment According to statistics in the next few years the installation of smart windows users will continue to increase The design of intelligent window system through the data detecting sensing circuit continuous detection of circulating outside humidity and temperature when the outside humidity reaches a certain time ( when it rains ) close the window automatically prevent the moist air or water into the room also can be set to automatically close the windows or window opening time to set the time automatically open or close the window you can set whether to automatically according to the changes of temperature and humidity automatically open and close the windows or according to the set time automatically open or close the window when the window outside the person near infrared alarm to be generated when the antitheft function Also can control the keyboard directly control window switch select the display parameter types

    Key words intelligent window single chip microcomputer temperature detection humidity detection












    目录
    第1章 绪 2
    11 智窗户综述 2
    12 智窗户研究现状 2
    第2章 设计目标务 4
    21 文工作设计 4
    22文求数 4
    第3章 设计方案证 5
    31 温湿度检测方案 5
    32 窗户控制系统设计方案 6
    33 限位开关控制系统设计方案 7
    第4章 硬件电路设计 8
    41 系统电路设计 8
    42温湿度检测电路设计 8
    43电机驱动电路设计 11
    44 显示电路设计 11
    45时钟电路设计 12
    46 光电开关电路设计 13
    47键电路设计 14
    第5章 软件设计 14
    51 程序流程图 14
    52 部分子程序 15
    第6章 系统组装调试 19
    61 基电路板检查 19
    62 控模块调试 19
    63 软件调试 19
    64数整理 19
    结束语致谢语 21
    参考文献 22
    附():原理图 23
    附(二):PCB板 24
    附(三):程序 25













    第1章 绪
    11 智窗户综述
    智窗户般指安装先进防盗防劫防雨系统技术门窗
    起初智窗户公场高档商品房商场中运广泛着科学技术飞跃发展生活水断提高安全舒适健康生活需求变日益迫切年智家居概念已逐渐深入国民生活中断影响着思维众力区墅户已开始安装智家居系统尝试智化家居生活带安全舒适便利智窗户提供住户安全方便环境统计未年安装智窗户断增加全动智窗户求遇刮风飘雨窗户会动关闭窗户动开高高天窗乖乖听指挥开启闭合免攀高累
    新科技智窗户控制系统智控器门窗控制器门窗驱动器等组成智居家理想选择求具备功:
    ①安全
    工作日班时间基固定设定窗户开关时间班时窗户动关闭班时动开方便安全
    ②动防风防雨
    居家日子忘记关窗常事逢刮风雨身外边便苦已现款产品消您顾虑外侧装湿度传感器空气里湿度达80时湿度传感器会感应窗户立行关闭令您胆出门忧虑
    ③节约源
    室外温度超30°时关闭窗户空调开保持室室温适宜室外温度降20°时窗户动开空调关闭保持室空气清新然动作外界没雨前提
    ④性化
    增加手动开窗关窗功产品更性化
    12 智窗户研究现状
    国房产行业迅速发展带动国门窗幕墙行业迅速发展般说建筑物面积推算10窗15门全国年新建20亿方米门窗需求量5亿方米考虑原城乡建筑窗户改制年窗户安装量少达10亿方米方米窗户50元计算全国窗户消费需求空间500亿元断扩趋势图示:

    图11 2006年~2009年国窗户需求量
    门窗家庭智化安全防范系统重组成部分种智化控制系统现代微型机先进传感器(温度传感器湿度传感器等)等系列机械传动装置组成具智化性化网络化高科技产品窗户进行心欲控制安全措施具时尚方便安全等特点家居环境较改善者通调查发现目前整市场存许足处
    前智窗户功完善然市场雨时动关窗装置雨天晴适时动开窗会班回家觉屋空气流通清新等次毕业设计契机改进部分功实现方法增加适时开窗新功窗户空调相结合力求整装置高效简洁易实现突出节环保理念
    窗户动开闭关键长条形装置元件温湿度传感器组成套智控制系统发挥着动控制功早晨出门班时晴空万里没关窗午突然雨窗户会动关闭担心家中淋雨动开闭窗户外通遥控器控制智窗户开闭走窗前关窗
    智窗户应越越受广民欢迎许城市中区实现智化理中智窗户应相重部分次毕业设计选较感兴趣现实意义题目



















    第2章 设计目标务
    21 文工作设计
    211设计总体介绍
    (1) 智窗户基单片机控制系统设计出温湿度检测电路电机驱动电路时钟电路单片机晶振复位电路控制电路等
    (2)设计智窗户数采集控制系统
    212设计具体务
    智窗户功进行设计相应硬件电路系统软件设计做出控制系统达设计目:温度升高超预设值时电机转动关闭窗户空调开雨窗外湿度传感器会感应窗户关闭通键设置动开启窗户时间动关闭窗户时间设定时间会动关闭开启窗户设置根温湿度控制窗户开关根时间开启关闭窗户功
    22文求数
    (1)完成该课题必须重点研究单片机控制温湿度采集晶振复位电路等关键问题理
    (2)研究方案设计研究方法手段合理符合理实践求






















    第3章 设计方案证
    智窗户模型图31传动机构皮带电机定滑轮组成电机正转时移动窗扇右移动限位开关处电机停止电机反转时移动窗户左移动限位开关处电机停止

    图31 智窗户模型
    整智窗户控制系统包括微处理器温湿度检测电路报警电路 电机驱动电路等模块组成整系统框图图31示


    STC89C52
    温湿度传感器器
    电机驱动电路

    LCD显示电路
    时钟显示电路
    光电传感器

    图32 系统框图
    31 温湿度检测方案
    方案:温度检测采热电阻温度传感器热电阻利导体电阻温度变化特性制成测温元件现应较铂铜镍等热电阻特点精度高测量范围便远距离测量
    湿度检测湿敏电阻
    方案二:采数字温湿度传感器DHT11DHT11 数字温湿度 传感器款含已校准数字信 号输出温湿度复合传器 应专数字模块采集技术温湿度传感技术 确保产品具极 高性卓越长期稳定性传感器包括电阻式感湿元件NTC测元件高性 8 位单片机相 连接该产品具品质卓越超快应抗干扰力强性价极高等优点DHT11 传感器极精确度校验室中进行校准校准系数程序形式储存 OTP 存中传感器检测信号处理程中调校准系数单线制串行接口系统集变简易快捷超体积极低功耗信号传输距离达 20 米成类应甚苛刻应场合佳选产品 4 针单排引脚装连接方便
    综合DHT11集温湿度检测体反应快单片机数字读取数剧利数采集起体积利次设计选第二种方案
    32 窗户控制系统设计方案
    窗户开关通直流电机控制
    方案 :直流电机驱动电路广泛H型全桥式电路种驱动电路方便实现直流电机四象限运行分应正转正转制动反转反转制动基原理图图21示

    图33 H桥电机驱动电路
    全桥式驱动电路4开关工作斩波状态S1S2组S3S4 组两组状态互补组导通 组必须关断S1S2导通时S3 S4关断电机两端加正电压实 现电机正转反转制动S3S4导 通时S1S2关断电机两端反电压电机反转正转制动
    窗户动作程中断电机四象限间切换正转反转间切换S1S2导通S3Q4关断S1S2关断S3 S4导通两种状态间转换种 情况理求两组控制信号完全互补实际开关器件存开通关断时间绝互补控制逻辑必然导致桥臂直通短路桥臂关断程中桥臂导通程图22说明

    图34 窗户桥臂导通示意图
    避免直通短路保证开关动作间协性步性两组控制信号理 求互倒相逻辑关系实际必须相差足够死区时间矫正程通硬件实现桥臂两组控制信号间增加延时通软件实现
    方案二:通L6203集成块控制直流电机L6203专驱动集成电路属 H桥集成电路输出电流2A高电流4A高工作电压50V驱动感性负载功率直流电机步进电机电磁阀等特输入端单片机直接相联方便受单片机控制驱动直流电机时直接控制步进电机实现电机正转反转实现功需改变输入端逻辑电利单片机输入PWM波形控制端容易改变直流电机速度调速控制方容易电路设计简单
    综合L6203具强驱动力体积电路设计简单等优点选方案二
    33 限位开关控制系统设计方案
    限位开关限定机械设备运动极限位置电气开关种开关接触式非接触式
    方案:接触式较直观机械设备运动部件安装行程开关相运动固定点安装极限位置挡块者相反安装位置行程开关机械触头碰挡块时切断(改变)控制电路机械停止运行改变运行机械惯性运动种行程开关定超行程保护开关受损坏
    方案二:非接触式形式常见干簧光电式感应式等种形式电梯中够见里选择光电式光电传感器(ST178)利检测物体红外光束遮光反射步回路选通检测物体物体限金属反射光线物体均检测
    综合光电式传感器具体积设计简单检测








    第4章 硬件电路设计
    41 系统电路设计
    系统震荡电路复位电路单片机电源构成中震荡电路110592MHz晶振配合两22p谐振电容构成单片机提供必系统时钟复位电路实现电复位实现工手动复位刚开始开电源时电容C1相短路单片机RST脚短时间处高电单片机复位样SW键时RST脚样高电单片机正常复位三部分电路构成单片机系统

    图41 系统电路
    42温湿度检测电路设计
    421数字温湿度传感器DHT11简介
    DHT11 数字温湿度 传感器款含已校准数字信 号输出温湿度复合传器 应专数字模块采集技术温湿度传感技术 确保产品具极高性卓越长期稳定性传感器包括电 阻 式 感 湿元件 NTC 测元件 高性 8 位单片机相 连接该产品具品质卓越超快应抗干扰力强性价极高等优点 DHT11 传感器极精确度校验室中进行校准校准系数程序形式储存 OTP 存中传感器检测信号处理程中调校准系数 单线制串行接口系统 集变简易快捷超体积极低功耗 信号传输距离达 20 米 成类应甚苛刻应场合佳选产品 4 针单排引脚装 连接方便
    422 DHT11工作原理
    采DHT数字温湿度传感器电路考虑AD转换需设计指定P14数字传感器相连电路原理图图43

    图42 DHT11单片机连接
    DHT11温湿度传感器性说明:

    表41 DHT11温湿度传感器性
    DHT11数读取:
    DATA 微处理器DHT11间通讯步采单总线数格式次通讯时间4ms左右数分数部分整数部分具体格式面说明前数部分扩展现读出零操作流程: 
    次完整数传输40bit高位先出
    数格式:8bit湿度整数数+8bit湿度数数 +8bi温度整数数+8bit温度数数 +8bit校验
    数传送正确时校验数等8bit湿度整数数+8bit湿度数数+8bi温度整数数+8bit温度数数结果末8位
    户MCU发送次开始信号DHT11低功耗模式转换高速模式等机开始信号结束DHT11发送响应信号送出40bit数触发次信号采集户选择读取部分数模式DHT11接收开始信号触发次温湿度采集果没接收机发送开始信号DHT11会动进行温湿度采集采集数转换低速模式
     总线空闲状态高电机总线拉低等DHT11响应机总线拉低必须18毫秒保证DHT11检测起始信号DHT11接收机开始信号等机开始信号结束然发送80us低电响应信号机发送开始信号结束延时等2040us读取DHT11响应信号机发送开始信号切换输入模式者输出高电均总线拉电阻拉高
     
    图43 总信号表示方法
    总线低电说明DHT11发送响应信号DHT11发送响应信号总线拉高80us准备发送数bit数50us低电时隙开始高电长短定数位01格式见面图示果读取响应信号高电DHT11没响应请检查线路否连接正常bit数传送完毕DHT11拉低总线50us总线拉电阻拉高进入空闲状态
     
    图44 数字0信号表示方法
      
    图45 数字1信号表示方法
    43电机驱动电路设计
    L6203专驱动集成电路属 H桥集成电路输出电流2A高电流5A高工作电压48V高频率100KHZ驱动感性负载功率直流电机步进电机电磁阀等特输入端单片机直接相联方便受单片机控制驱动直流电机时直接控制步进电机实现电机正转反转实现功需改变输入端逻辑电避免电机单片机干扰模块加入光耦进行光电隔离系统稳定工作

    图46 L6203脚图

    图47 L6203部框图


    图48 电机驱动原理图
    44 显示电路设计
    显示部分采LCD12864作显示器件LCD12864采标准20脚(背光带字库)引脚接口说明表41示
    表41 LCD12864引脚说明128X64HZ 引脚说明
    引脚号
    引脚名称

    功说明
    1
    VSS

    模块电源
    2
    VDD

    模块电源正端
    3
    V0

    LCD驱动电压输入端
    4
    RS(CS)
    HL
    行指令数选择信号串行片选信号
    5
    RW(SID)
    HL
    行读写选择信号串行数口
    6
    E(CLK)
    HL
    行信号串行步时钟
    7~14
    DB0~DB7
    HL
    数0~数7
    15
    PSB
    HL
    串行接口选择:H行L串行
    16
    NC

    空脚
    17
    RET
    HL
    复位 低电效
    18
    NC

    空脚
    19
    LED_A
    (LED+5V)
    背光源正极
    20
    LED_K
    (LEDOV)
    背光源负极
    逻辑工作电压(VDD):45~55V
    电源(GND):0V
    工作温度(Ta):10℃ ~60℃(常温) 20℃~70℃(宽温)
    中VL液晶显示器度调整端接正电源时度弱接时度高度高时会产生鬼影时通10K电位器调整度RS寄存器选择高电时选择数寄存器低电时选择指令寄存器RW读写信号线高电时进行读操作低电时进行写操作RSRW低电时写入指令者显示址RS低电RW高电时读忙信号RS高电RW低电时写入数E端端E端高电跳变成低电时液晶模块执行命令D0~D78位双数线
    LCD12864单片机连接图311示中RT1电位器调节LCD度该度必须LCD正常工作时候调节合适值

    图49 LCD12864电路原理图
    45时钟电路设计
    时钟电路利单片机STC89C52控制串行实时时钟芯片DS1302构成实现计时功时钟芯片DS1302带备电池具备备电源进行涓细电流充电力保证电路断电保存时间数信息优点解决目前常实时时钟计时等缺点
    时钟芯片DS1302DALLAS公司推出涓流充电时钟芯片含实时时钟日历31字节静态RAM通串行接口单片机进行通信实时时钟日历电路提供秒分时日星期月年信息月天数闰年天数动调整时钟操作通AMPM标志位决定采2412时时间格式DS1302单片机间简单采步串行方式进行通信仅需三根IO线:复位(RST)IO数线串行时钟(SCLK)时钟RAM读写数字节达31字节字符组方式通信DS1302工作时功耗低保持数时钟信息时功耗1mW

    图410 DS1302部结构图

    图411 时钟电路
    46 光电开关电路设计
    光电开关电路利光电反射传感器ST178控制检测黑色带时输出低电电机转动窗户运动检测白色带时输出高电电机停止转动窗户停止运动
    461ST178底视图部电路图:

    图412 ST178底视图部电路
    462ST178特点
    1.采高发射功率红外光电二极高灵敏度光电晶体组成
    2.检测距离调整范围410mm
    3.采非接触检测方式
    47键电路设计
    设计键设定开关窗时间否根温湿度情况设定时间情况开关窗

    图413键电路原理图
































    第5章 软件设计
    51 程序流程图
    系统MCUATMEL公司低功耗单片机STC89C52程序中仅完成系统初始化开始显示部分然进入机模式功模块中断服务子程序中完成产生中断时MCU唤醒执行相应中断服务子程序中断子程序返回系统进入机模式关闭显示设备节省电量整程序设计系统绝数时间处低功耗状态整程序全部C 语言编写模块化设计方法模块相关程序放文件中便分块调试理缩短调试周期增加程序移植性剪裁性
    程序中首先关闭门狗总中断避免初始化程中门狗中断导致单片机复位初始化法完成初始化程分模块进行增加程序读性已便分块调试缩短调试周期
    整系统软件需温度传感器DHT11报警器窗户控制系统进行理温度传感器DHT11数字式温度传感器直接单片机串口连接读取温度模块均程序中完成初始化程系统流程图图51示系统初始化
    中断初始化
    温湿度数读取
    异常?
    处理
    N
    开始
    结束

    图51 程序流程图
    52 部分子程序
    521温湿度检测程序
    DHT11子程序结合户资料编写完成初始化DHT11DHT11中读出字节数DHT11中写入字节数配置DHT11包括警报温度限限温度转换精度读出Scrachpad存储器中九字节数读出Rom中64位Code值读出Scrachpad数进行CRC校验然根读出数测量出十进制温度值DHT11中读出九字节数流程图图52示
    初始化
    ROM指令
    读取温湿度
    Y
    储存温度
    N
    结束
    CRC校验

    图52温度读取流程图
        DHT11数CRC校验解决单总线串行传输数引起错误DHT11部具产生CRC校验码电路样编程时通读出数进行CRC校验码校验码获数字节较两者相证明数传送没错误验证通信程中数传输正确性采集温度信号性保证
         CRC检验求法Mk位长信息帧Pn+1位预先确定生成校验码二进制序列高位低位必须1DS18B20中序列:P = 1 0011 0001Fn位FCS校验码序列Tk+n位传输帧F接M信息帧TM · 2 n (2 n 2n次方)中M · 2 n 相M左移n位面添n零设M · 2 n P商余数分QRM · 2 n P · Q+RM · 2 n PQ+RP设TM · 2 n +RT定整模2加减运算相异运算TP(M · 2 n +R)P(M · 2 n )P+RP Q+RP+RPQ样校验码序列FM · 2 n P余数R通计算 256CRC检验数[4]
    设计中降低处理器功耗选查表法进行计算关键代码:
    for(i0i {
    checkdata(checkdata<<8)^CRCTable[((checkdata>>8)^crc_data[i])]
    }
    CRC_CCITT_L(unsigned char)(checkdata256)
    CRC_CCITT_H(unsigned char)(checkdata256)
    522 电机控制系统
    窗户控制系统包括开关窗户控制夏天温度传感器检测室外温度高30℃时P121P11低电电机正转窗户关闭限位点时电机停止温度传感器检测室外温度低25℃时P120P11高电电机反转窗户开启限位点时电机停止
    电机反转开窗
    电机正转关窗



    开始
    温度<25℃
    结束
    温度>30℃

    图53 窗户控制程序流程图

    523LCD12864显示程序设计
    LCD显示程序部分发送命令发送数两基础程序通LCD数手册知LCD时序图
    表51 LCD12864基操作状态表

    1 读操作时序
    根LCD12864控制器数手册通流程图知LCD读取数写入数时序流程图54示

    图54 LCD12864读操作时序
    2 写操作时序图

    图55 LCD12864写操作时序
    LCD写操作包括写数写命令两部分构成RS0时写命令RS1时写数
    具体程序见附页


























    第6章 系统组装调试
    61 基电路板检查
    根前面研究完成电路模块原理设计生成PCB图制作电路板进行实验调试
    (1)检查印制板印制线否断路否毛刺否线焊盘粘连焊盘否脱落孔否未金属化现象等等
    (2)先万表复核目测中认疑连接接点检查通短状态否设计规定相符检查种电源线线间否短路现象仔细检查出排短路现象定器件安装加电前检查出
    (3)路接通电源手摸芯片否发热果发热立关掉电源稍进行次检测果没发热测试芯片VCC端电压否达设计求接端否接
    62 控模块调试
    次设计中控模块非常重部分仅次设计核心次硬件调试中遇问题接电源时候液晶显示亮没显示做工作:
    (1)检查电源否通电万表测试测试芯片液晶显示否正常通电发现电压电流正确
    (2)液晶显示通电没信号显示检测发现电位器烧坏换重新通电液晶正常显示
    63 软件调试
    硬件制作完成软件制作轻视部分实现电路功关键部分通次毕业设计总结验:
    (1)先进行工检查写程序立刻烧入单片机先纸面程序进行工检查采C语言编程特心检查语法错误括号配漏写分号等通仔细检查发现排错误
    (2)工检查误机调试编译时出语法错误信息根提示信息具体找出程序中错误处改逐改正应注意:提示出错行真正出错行果提示出错行找错误话应该行找
    (3) 确认程序语法错误逻辑错误时通直接载单片机调试采调试方法单独调模块然连接成完整系统调试
    (4) 程序烧入单片机观察部件工作否正常功否实现正常工作继续检查程序中相应模块必时重新检查程序
    64数整理
    1外界湿度80时窗户关闭
    2外界温度30℃时窗户关闭开启空调
    3外界温度20℃时窗户开启关闭空调
    4湿度80温度30℃时窗户状态保持原状态



    具体测数表:

    温度 湿度
    81
    80
    78
    75
    73
    70
    68
    18℃
    关窗
    关窗
    开窗
    开窗
    开窗
    开窗
    开窗
    20℃
    关窗
    关窗
    开窗
    开窗
    开窗
    开窗
    开窗
    21℃
    关窗
    关窗
    保持
    保持
    保持
    保持
    保持
    25℃
    关窗
    关窗
    保持
    保持
    保持
    保持
    保持
    27℃
    关窗
    关窗
    保持
    保持
    保持
    保持
    保持
    30℃
    关窗
    关窗
    保持
    保持
    保持
    保持
    保持
    31℃
    关窗
    关窗
    关窗
    关窗
    关窗
    关窗
    关窗
    32℃
    关窗
    关窗
    关窗
    关窗
    关窗
    关窗
    关窗
    表61 相关数
































    结束语
    时间试验条件力限制系统完成够理想已基达初设计目通传感器发出信号控制窗户开关达空气流通等实际效果代操作生活提供定方便采温湿度传感器设计该系统样感应距离会较理想家居安全提供定保障
    总说毕业设计考验学生综合运学知识发现提出分析解决实际问题锻炼实践力重环节学生实际工作力具体训练考察程次毕业设计通搜集相关资料撰写文说次非常难锻炼机会说已囊括学期间部分知识选题定稿理实践学专业认识充分运起解决具体问题仅巩固前学知识学书没学知识够学知识融会贯通说仅仅次毕业设计更重程中提高学力解决问题力实际工作力技方法会工作帮助回顾起次毕业设计感慨颇说苦甜学东西设计写文程中遇问题说困难重重发现足处前学知识理解够深刻掌握够牢固说三极PNP脚懂放置懂分二极正负极C语言单片机汇编语言掌握次课程设计前学知识温知新
    次设计已完成智窗户基功实现完全作套简易系统投入存着问题温度湿度等采集点单会漏报误报情况外系统中加入防煤气泄漏检测烟雾检测等技术防盗报警模拟摘机报警系统等等问题种激励会工作学中更加努力
    制作程中学会单片机系统设计方法知道单片机系统需求分析方案设计电路图程序设计整流程掌握protel电路图设计软件学会温度传感器种传感器方法掌握电机驱动方法

    致谢语
    毕业设计结束段时间设计学程中帮助学东西
    首先感谢指导老师XX指导帮助老师老师监督指导够学专业知识培养动手力毕业设计中发挥非常重作设计程中老师精专知识断启发设计利进行专业水程度提高
    次感谢学帮助指导设计中懂请教学时总热心帮发现问题寻找更解决办法
    祝身体健康 工作利
    参考文献
    [1] 立民单片机应系统设计[M]北京:北京航空航天学出版社19963548
    [2] 松井邦彦传感器实电路设计制作[M]北京科学出版社2005107110
    [3] 苏家健单片机原理应技术[M]高等教育出版社 P5
    [4] 黄继昌传感器工作原理应实例[A].北京民邮电出版社1998
    [5] DALLAS Semiconductor DS18B20 Data Sheet [J] 2002126
    [6] 阎石数字电子技术基础[M]高等教育出版社20046 2073
    [7] 童诗白模拟电子技术基础[M]高等教育出版社2006 7985
    [8] 孙晓云接口通信技术原理应[J]中国电力出版社2007
    [9] 郑启忠数字温度传感器DS18B20线测温系统设计微型机应[J]2004
    [10] 李华MCS51系列单片机接口技术[M]北京航空航天学出版社19933542
    [11]邓学欣檀润华智窗概念设计[J] 河北工业学学报2003
    [12]侯建华基51单片机室温测试[J]电子技术200707
    [13]韩磊 家居进入智窗时代 [J] 环境生活2008(2):1719
    [15]李胜张佟春明高春风基PLC功窗设计[J] 青岛农业学学报2010(1)8488附():电路原理图

    电源模块电路









    附(二):PCB板


















    附(三):程序
    #include
    #include
    #define uint unsigned int
    #define uchar unsigned char
    sbit BEEPP3^4
    uint tnum0
    uchar num[10]0123456789
    *************************************************
    DHT11温度传感器程序模块
    *************************************************
    sbit TRHP1^4温湿度传感器DHT11数接入
    uint TH_dataTL_dataRH_dataRL_dataCK_data
    uint TH_tempTL_tempRH_tempRL_tempCK_temp
    uint com_datauntemptemp
    uint respondWENSHI
    *************************************************
    5us级延时程序
    *************************************************
    void delay_us()
    {
    _nop_()_nop_()_nop_()_nop_()_nop_()
    }
    void delay_ms(unsigned x )
    {
    unsigned char i
    while(x)
    {
    for(i 0 i<250 i++)
    {
    _nop_()
    _nop_()
    _nop_()
    _nop_()
    }
    }
    }
    ************************************************
    收发信号检测数读取
    *************************************************
    char receive()
    {
    uint i
    com_data0
    for(i0i<7i++)
    {
    respond2
    while((TRH)&&respond++)
    delay_us()
    delay_us()
    delay_us()
    if(TRH)
    {
    temp1
    respond2
    while((TRH)&&respond++)
    }
    else
    temp0
    com_data<<1
    com_data|temp
    }
    return(com_data)
    }
    ********************************************
    湿度读取子程序
    温度高8位 TL_data
    温度低8位 TH_data
    湿度高8位 RH_data
    湿度低8位 RH_data
    校验 8位 CK_data
    调程序 delay_ms() Delay_5us()RECEIVE()
    *******************************************
    void read_TRH()
    {
    机拉低18ms
    TRH0
    delay_ms(18)
    TRH1
    DATA总线拉电阻拉高 机延时20us
    delay_us()
    delay_us()
    delay_us()
    delay_us()
    机设输入 判断机响应信号
    TRH1
    判断DHT11否低电响应信号 响应跳出响应运行
    if(TRH)
    {
    respond2
    判断DHT11发出 80us 低电响应信号否结束
    while((TRH)&& respond++)
    respond2
    判断机否发出 80us 高电发出进入数接收状态
    while(TRH && respond++)
    数接收状态
    RH_temp receive()
    RL_temp receive()
    TH_temp receive()
    TL_temp receive()
    CK_temp receive()
    TRH1
    数校验
    untemp(RH_temp+RL_temp+TH_temp+TL_temp)
    if(untempCK_temp)
    {
    RH_data RH_temp
    RL_data RL_temp
    TH_data TH_temp
    TL_data TL_temp
    CK_data CK_temp
    }
    WENTH_data
    SHIRH_data
    }
    }
    *************************************************
    LCD12864液晶显示程序模块
    *************************************************
    sbit RSP2^0
    sbit RWP2^1
    sbit EP2^2
    #define LCD_DATA P0
    *写命令 LCD*
    void LCD_WriteCom(unsigned char command)
    {
    RS0
    RW0
    delay_ms(1)
    E1
    LCD_DATAcommand
    delay_ms(1) 数写入时候加入适延时
    E0
    delay_ms(1)
    }
    *写数 LCD*
    void LCD_WriteDat(unsigned char date)
    {
    RS1
    RW0
    delay_ms(1)
    E1
    LCD_DATAdate
    delay_ms(1) 数写入时候加入适延
    E0
    delay_ms(1)
    }
    *初始化 LCD 屏*
    void LCD_init()
    {
    delay_ms(5)
    LCD_WriteCom(0x30)
    delay_ms(5) 选择基指令集
    LCD_WriteCom(0x30) 选择 8bit 数流
    delay_ms(5)
    LCD_WriteCom(0x0c) 开显示 ( 游标反白 )
    delay_ms(5)
    LCD_WriteCom(0x01) 清显示设定址指针 00H
    delay_ms(5)
    LCD_WriteCom(0x06) 指定资料读取写入时设定游标移动方指定显示移位
    delay_ms(5)
    }
    *显示字符串*
    void LCD_writestring(unsigned char *str)
    {
    while(*str '\0')
    {
    LCD_WriteDat(*str++)
    }
    *str 0
    }
    ********************************************************************
    *********************************************************************
    ***************************DS1302部分********************************
    *********************************************************************
    *********************************************************************
    sbit DS1302_SCLK P1^5
    sbit DS1302_IO P1^6
    sbit DS1302_RST P1^7
    uchar YearMonthDayWeekHourMinuteSecond
    ********************************************************************
    ****函数名称:uchar DS1302_Readuchar()
    ****函数功:DS1302读1字节数
    ****备注说明:
    ********************************************************************
    uchar DS1302_Readuchar()
    {
    uchar i
    uchar dat 0
    for (i0 i<8 i++) 8位计数器
    {
    DS1302_SCLK 0 时钟线拉低
    _nop_() 延时等
    _nop_()
    dat >> 1 数右移位
    if (DS1302_IO) dat | 0x80 读取数
    DS1302_SCLK 1 时钟线拉高
    _nop_() óê±μè′y
    _nop_()
    }
    return dat
    }
    ********************************************************************
    ****函数名称:DS1302_Writeuchar(uchar dat)
    ****函数功:DS1302写1字节数
    ****备注说明:
    ********************************************************************
    void DS1302_Writeuchar(uchar dat)
    {
    char i
    for (i0 i<8 i++) 8位计数器
    {
    DS1302_SCLK 0 时钟线拉低
    _nop_() 延时等
    _nop_()
    dat >> 1 移出数
    DS1302_IO CY 送出端口
    DS1302_SCLK 1 时钟线拉高
    _nop_() 延时等
    _nop_()
    }
    }
    ********************************************************************
    ****函数名称:DS1302_Read(uchar addr)
    ****函数功:读DS1302某址数
    ****备注说明:
    ********************************************************************
    uchar DS1302_Read(uchar addr)
    {
    uchar dat
    DS1302_RST 0
    _nop_() 延时等
    _nop_()
    DS1302_SCLK 0
    _nop_() 延时等
    _nop_()
    DS1302_RST 1
    _nop_() 延时等
    _nop_()
    DS1302_Writeuchar(addr) 写址
    dat DS1302_Readuchar() 读数
    DS1302_SCLK 1
    DS1302_RST 0
    return dat
    }
    ********************************************************************
    ****函数名称:DS1302_Write(uchar addr uchar dat)
    ****函数功:DS1302某址写入数
    ****备注说明:
    ********************************************************************
    void DS1302_Write(uchar addr uchar dat)
    {
    DS1302_RST 0
    _nop_() 延时等
    _nop_()
    DS1302_SCLK 0
    _nop_() 延时等
    _nop_()
    DS1302_RST 1
    _nop_() 延时等
    _nop_()
    DS1302_Writeuchar(addr) 写址
    DS1302_Writeuchar(dat) 写数
    DS1302_SCLK 1
    DS1302_RST 0
    }
    ********************************************************************
    ****函数名称:DS1302_SetTime()
    ****函数功:写入DS1302初始时间
    ****备注说明:
    ********************************************************************
    void DS1302_SetTime()
    {
    DS1302_Write(0x8e 0x00) 允许写操作
    DS1302_Write(0x8c 0x12)年
    DS1302_Write(0x88 0x03)月
    DS1302_Write(0x86 0x12)日
    DS1302_Write(0x8a 0x01)周
    DS1302_Write(0x84 0x20)时
    DS1302_Write(0x82 0x22)分
    DS1302_Write(0x80 0x40)秒
    DS1302_Write(0x8e 0x80) 写保护
    }
    void LCD_ShowTime()
    {
    YearDS1302_Read(0x8D)
    MonthDS1302_Read(0x89)
    DayDS1302_Read(0x87)
    WeekDS1302_Read(0x8B)
    HourDS1302_Read(0x85)
    MinuteDS1302_Read(0x83)
    SecondDS1302_Read(0x81)
    LCD_WriteCom(0x80)
    LCD_writestring(20)
    LCD_WriteDat(Year16+0x30)
    LCD_WriteDat(Year16+0x30)
    LCD_writestring(年)
    LCD_WriteDat(Month16+0x30)
    LCD_WriteDat(Month16+0x30)
    LCD_writestring(月)
    LCD_WriteDat(Day16+0x30)
    LCD_WriteDat(Day16+0x30)
    LCD_writestring(日)
    LCD_WriteCom(0x90)
    LCD_WriteDat(Hour16+0x30)
    LCD_WriteDat(Hour16+0x30)
    LCD_writestring()
    LCD_WriteDat(Minute16+0x30)
    LCD_WriteDat(Minute16+0x30)
    LCD_writestring()
    LCD_WriteDat(Second16+0x30)
    LCD_WriteDat(Second16+0x30)
    LCD_writestring( 星期)
    switch(Week)
    {
    case 0x01
    LCD_writestring()break
    case 0x02
    LCD_writestring(二)break
    case 0x03
    LCD_writestring(三)break
    case 0x04
    LCD_writestring(四)break
    case 0x05
    LCD_writestring(五)break
    case 0x06
    LCD_writestring(六)break
    case 0x07
    LCD_writestring(日)break
    }
    LCD_WriteCom(0x88)
    LCD_writestring(前温度:)
    LCD_WriteDat((char)(0x30+WEN10))
    LCD_WriteDat((char)(0x30+WEN10))
    LCD_writestring(℃ )
    LCD_WriteCom(0x98)
    LCD_writestring(前湿度:)
    LCD_WriteDat((char)(0x30+SHI10))
    LCD_WriteDat((char)(0x30+SHI10))
    LCD_writestring(RH )
    }
    *************************************************
    窗户位置确定运动程序模块
    *************************************************
    sbit ZAI_ZUOP3^3
    sbit ZAI_YOUP3^2
    sbit LP1^2
    sbit RP1^1
    sbit ENABLEP1^0
    uchar LEFTRIGHT
    void mo_init()
    {
    ENABLE0
    L0
    R0
    TR00
    }
    void turn_left()
    {
    L1
    R0
    TR01
    }
    void turn_right()
    {
    L0
    R1
    TR01
    }
    void stop()
    {
    TR00
    ENABLE0
    L0
    R0
    }
    sbit s1P2^7
    sbit s2P2^6
    sbit s3P2^5
    sbit s4P2^4
    sbit beepP3^4
    uchar s1numopen_hopen_mclose_hclose_m
    bit auto_wsauto_time
    void di() 蜂鸣器报警声音
    {
    beep0
    delay_ms(100)
    beep1
    }
    void keyscan()
    {
    if(s10)检测S1
    {
    delay_ms(10)
    if(s10)
    {
    di()
    s1num++记录次数
    LCD_WriteCom(0x80)
    LCD_writestring(开时: : )
    LCD_writestring(湿度动控制:)
    if(auto_ws0)
    LCD_writestring(否)
    else
    LCD_writestring()
    LCD_writestring(关时: : )
    LCD_writestring(定时动控制:)
    if(auto_time0)
    LCD_writestring(否)
    else
    LCD_writestring()
    LCD_WriteCom(0x83)
    LCD_WriteDat(num[open_h10])
    LCD_WriteDat(num[open_h10])写入动开启窗户时
    LCD_WriteCom(0x85)
    LCD_WriteDat(num[open_m10])
    LCD_WriteDat(num[open_m10])写入动开启窗户分钟
    LCD_WriteCom(0x93)
    LCD_WriteDat(num[close_h10])
    LCD_WriteDat(num[close_h10])写入关闭开启窗户时
    LCD_WriteCom(0x95)
    LCD_WriteDat(num[close_m10])
    LCD_WriteDat(num[close_m10])写入关闭开启窗户分钟
    while(s1)等S1释放
    switch(s1num)
    {光标闪烁点定位
    case 1 LCD_WriteCom(0X83)
    LCD_WriteCom(0x0f)
    break
    case 2 LCD_WriteCom(0x85)
    break
    case 3 LCD_WriteCom(0x93)
    break
    case 4 LCD_WriteCom(0x95)
    break
    case 5 LCD_WriteCom(0x8F)
    break
    case 6 LCD_WriteCom(0x9F)
    break
    case 7 s1num0
    LCD_WriteCom(0x01)清楚LCD显示容
    LCD_ShowTime()
    break
    }
    }
    }
    if(s1num0)S1检测S2S3
    {
    if(s20)
    {
    delay_ms(5)
    if(s20)
    {
    di()
    while(s2)等S2放开
    switch(s1num)
    {根功键次数调节相应数值
    case 1 open_hopen_h+1
    if(open_h24)
    open_h0
    LCD_WriteCom(0x83)
    LCD_WriteDat(num[open_h10])
    LCD_WriteDat(num[open_h10])写入动开启窗户时
    LCD_WriteCom(0x83)
    break
    case 2 open_m++
    if(open_m60)
    open_m0
    LCD_WriteCom(0x85)
    LCD_WriteDat(num[open_m10])
    LCD_WriteDat(num[open_m10])写入动开启窗户时
    LCD_WriteCom(0x85)
    break
    case 3 close_h++
    if(close_h24)
    close_h0
    LCD_WriteCom(0x93)
    LCD_WriteDat(num[close_h10])
    LCD_WriteDat(num[close_h10])写入动开启窗户时
    LCD_WriteCom(0x93)
    break
    case 4 close_m++
    if(close_m60)
    close_m0
    LCD_WriteCom(0x95)
    LCD_WriteDat(num[close_m10])
    LCD_WriteDat(num[close_m10])写入动开启窗户时
    LCD_WriteCom(0x95)
    break
    case 5 auto_ws~auto_ws
    if(auto_ws1)
    {
    LCD_WriteCom(0x8f)
    LCD_writestring()
    LCD_WriteCom(0x8f)
    }
    else
    {
    LCD_WriteCom(0x8f)
    LCD_writestring(否)
    LCD_WriteCom(0x8f)
    }
    break
    case 6 auto_time~auto_time
    if(auto_time1)
    {
    LCD_WriteCom(0x9f)
    LCD_writestring()
    LCD_WriteCom(0x9f)
    }
    else
    {
    LCD_WriteCom(0x9f)
    LCD_writestring(否)
    LCD_WriteCom(0x9f)
    }
    break
    }
    }
    }
    if(s30)
    {
    delay_ms(1)
    if(s30)
    {
    di()
    while(s3)
    switch(s1num)
    {根功键次数调节相应数值
    case 1 open_h
    if(open_h1)
    open_h23
    LCD_WriteCom(0x83)
    LCD_WriteDat(num[open_h10])
    LCD_WriteDat(num[open_h10])写入动开启窗户时
    LCD_WriteCom(0x83)
    break
    case 2 open_m
    if(open_m1)
    open_m59
    LCD_WriteCom(0x85)
    LCD_WriteDat(num[open_m10])
    LCD_WriteDat(num[open_m10])写入动开启窗户时
    LCD_WriteCom(0x85)
    break
    case 3 close_h
    if(close_h1)
    close_h23
    LCD_WriteCom(0x93)
    LCD_WriteDat(num[close_h10])
    LCD_WriteDat(num[close_h10])写入动开启窗户时
    LCD_WriteCom(0x93)
    break
    case 4 close_m
    if(close_m1)
    close_m59
    LCD_WriteCom(0x95)
    LCD_WriteDat(num[close_m10])
    LCD_WriteDat(num[close_m10])写入动开启窗户时
    LCD_WriteCom(0x95)
    break
    case 5 auto_ws~auto_ws
    if(auto_ws1)
    {
    LCD_WriteCom(0x8f)
    LCD_writestring()
    LCD_WriteCom(0x8f)
    }
    else
    {
    LCD_WriteCom(0x8f)
    LCD_writestring(否)
    LCD_WriteCom(0x8f)
    }
    break
    case 6 auto_time~auto_time
    if(auto_time1)
    {
    LCD_WriteCom(0x9f)
    LCD_writestring()
    LCD_WriteCom(0x9f)
    }
    else
    {
    LCD_WriteCom(0x9f)
    LCD_writestring(否)
    LCD_WriteCom(0x9f)
    }
    break
    }
    }
    }
    }
    if(s40)检测S4
    {
    delay_ms(5)
    if(s40)
    {
    di()
    LCD_WriteCom(0x80)
    LCD_writestring(开时: : )
    LCD_writestring(湿度动控制: )
    LCD_writestring(关时: : )
    LCD_writestring(定时动控制: )
    LCD_WriteCom(0x83)
    LCD_WriteDat(num[open_h10])
    LCD_WriteDat(num[open_h10])写入动开启窗户时
    LCD_WriteCom(0x85)
    LCD_WriteDat(num[open_m10])
    LCD_WriteDat(num[open_m10])写入动开启窗户分钟
    LCD_WriteCom(0x93)
    LCD_WriteDat(num[close_h10])
    LCD_WriteDat(num[close_h10])写入关闭开启窗户时
    LCD_WriteCom(0x95)
    LCD_WriteDat(num[close_m10])
    LCD_WriteDat(num[close_m10])写入关闭开启窗户分钟
    if(auto_ws1)
    {
    LCD_WriteCom(0x8f)
    LCD_writestring()
    LCD_WriteCom(0x8f)
    }
    else
    {
    LCD_WriteCom(0x8f)
    LCD_writestring(否)
    LCD_WriteCom(0x8f)
    }
    if(auto_time1)
    {
    LCD_WriteCom(0x9f)
    LCD_writestring()
    LCD_WriteCom(0x9f)
    }
    else
    {
    LCD_WriteCom(0x9f)
    LCD_writestring(否)
    LCD_WriteCom(0x9f)
    }
    while(s4)等S4释放
    LCD_ShowTime()
    }
    }
    }
    void auto_move()
    {
    if((auto_ws1)&&(SHI>70)&&(ZAI_YOU0))
    温湿度动控制开湿度70窗户开时 关闭窗户
    {
    turn_left()
    while(ZAI_ZUO0)
    stop()
    }
    if((SHI<40)&&(auto_time1)&&(open_h(Hour16*10+Hour16))&&(open_m(Minute16*10+Minute16))&&(ZAI_ZUO0))
    窗户关闭根时间动控制开湿度40达开启时间时窗户动开
    {
    turn_right()
    while(ZAI_ZUO0)
    stop()
    }
    if((auto_time1)&&(close_h(Hour16*10+Hour16))&&(close_m(Minute16*10+Minute16))&&(ZAI_YOU0))
    设置关闭窗户时间窗户关闭时开窗户
    {
    turn_left()
    while(ZAI_ZUO0)
    stop()
    }
    }
    void main()
    {
    auto_ws0
    auto_time0
    LCD_init()
    open_h0
    open_m0
    close_h0
    close_m0
    DS1302_SetTime()
    mo_init()
    TMOD0x01定时器0模式16
    TH00xFF 1ms定时器0方式1初值
    TL00xF6
    EA1开总中断
    ET01允许定时器0中断
    while(1)
    {
    read_TRH()
    if(s1num0)
    {
    LCD_ShowTime()
    }
    keyscan()
    auto_move()
    }
    }
    void timer0() interrupt 1
    {
    TH00xFF 1KHZ PWM波形占空调
    TL00xF6
    tnum++
    if(tnum100)
    {
    tnum0
    }
    if(tnum<30)占空30
    {
    ENABLE1
    }
    else
    {
    ENABLE0
    }
    }
    文档香网(httpswwwxiangdangnet)户传

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

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

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

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

    下载文档

    相关文档

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

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

    6个月前   
    200    0

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

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

    4年前   
    874    0

    基于51单片机压力检测系统设计毕业设计

     学号: xx 大 学 毕业设计(论文) (xxxx届) 题 目 ...

    5年前   
    2724    0

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

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

    3年前   
    1203    0

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

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

    5年前   
    1662    0

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

    课题:基于51单片机的智能充电技术基于51单片机的智能充电器设计摘 要:智能充电器的设计第一步需要解决的就是选择什么样的芯片来进行工作,其本身需要将51单片机作为基本的设计基础,这里选择的充...

    7个月前   
    228    0

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

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

    5年前   
    4274    0

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

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

    4年前   
    858    0

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

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

    2年前   
    507    0

    基于51单片机的定时闹钟设计单片机课程设计

    单片机 课 程 设 计 报 告 院系: 信息工程学院 ...

    2年前   
    495    0

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

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

    5个月前   
    309    0

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

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

    4年前   
    1495    0

    基于51单片机的智能窗帘控制系统

     毕业论文(设计) 学 院: 工学院 ...

    3年前   
    1113    0

    基于51单片机的8路智能抢答器

    抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。

    6年前   
    2346    0

    基于51单片机的教室智能照明控制系统

    目 录绪论1 教室灯光自动控制整体描述 1.1 灯光控制总体思想 ................................................................

    3年前   
    879    0

    基于51单片机的智能家居报警系统

    随着网络和信息技术的飞速发展以及生活水平的提高,现在的社会有了很大的发展,信息化的概念已经越来越贴近我们的生活。伴随着社会的发展,家庭安全问题也被更加重视了。

    3年前   
    865    0

    基于51单片机的俄罗斯方块游戏毕业设计论文

    基于单片机的俄罗斯方块游戏设计摘 要俄罗斯方块是一款风靡全球的益智游戏。它规则简单,容易上手,且游戏过程变化无穷,使用户在游戏中得到乐趣。本文讨论了一种基于增强型单片机硬件平台和实时操作...

    3年前   
    901    0

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

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

    3年前   
    968    0

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

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

    3年前   
    976    0

    AT89C51单片机智能风扇

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

    4年前   
    711    0

    文档贡献者

    文***品

    贡献于2023-11-19

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

    该用户的其他文档