资源描述
毕业设计说明书题 目:智能窗帘控制系统设计学 号:姓 名:昶班 级:2008级(4)班专 业:机械设计制造及其自动化指导教师:学 院:机械工程学院答辩日期:2012年4 月26 日毕 业 设 计 说 明 书摘 要随着生活水平的提高,智能家居越来越被人们关注。智能窗帘也随着科技发展悄然兴起,它不但具备窗帘优雅美观的特点,而且还能提供智能化的服务,使家居生活更加舒适、温馨与贴心。本文设计的是基于单片机控制系统的智能窗帘。它具备光感、红外遥控、温度显示、定时等功能。该窗帘可以根据外界的光亮程度来控制窗帘开启,从而达到调节室内光线,同时还提供按键来控制窗帘的关合。为了方便用户使用,增设定时模块,用户可根据自身的需要对某段时间,设置窗帘的开启程度。当定时结束,窗帘自动切换到光感模式实现对室内光线的控制。同时,还增设温度显示,使用户可以了解温度状况。关键词:智能窗帘:红外遥控;光感控制;单片机IVAbstractWith the improvement of living standards, more and more intelligent household is paid close attention to people. Intelligent curtain also arisen quickly with science and technology development , it not only has the characteristics of elegant and beautiful , and still can provide intelligence service, make household life more comfortable, warm and sweet. In this paper the design is based on single chip microcomputer control system of intelligent curtain. It has light feeling, infrared remote control, temperature display, timing, and other functions. The curtain can according to outside of light to control the curtain open , so as to adjust light, while still providing button to control of the curtain close. In order to facilitate the user use, add timing module, the user can the need according to oneself for a period of time, setting of the curtain open degree. When the timing end, the curtain to switch to light sensor model to achieve control of indoor light. At the same time, it also add temperature display, the user can understand temperature conditions. Key words: Intelligent curtain: infrared remote control; Light sensor control; Single-chip microcomputer目 录摘 要IAbstractII第1章 绪论11.1 设计的背景和意义11.2 本设计的内容11.3 存在的主要问题2第2章 总体方案设计42.1 主控制系统CPU42.2 硬件总体方案52.3 窗帘结构安装及电机选择6第3章 控制系统电路设计83.1 最小系统电路设计83.2 端口分配93.3 屏幕显示模块93.4 电机驱动模块103.5 光感模块103.6 33按键模块113.7 红外模块123.8 温度显示模块123.9 蜂鸣器13第4章 系统软件设计144.1 主程序设计144.2 光感程序设计144.3 电机驱动模块设计164.4 定时模块设计164.5 倒计时程序设计174.6 温度模块设计184.7 外部中断子程序19第5章 制作与调试225.1 制作225.2 调试22附录1 电路原理图26附录2 电路PCB图27附录3 安装示意图28附录4 实物图29附录5 元件清单30附录6 源程序31致 谢45毕 业 设 计 说 明 书第1章 绪论1.1 设计的背景和意义21世纪是信息化的世纪,各种电信和互联网新技术推动了人类文明的巨大进步。利用先进的计算机技术、网络通讯技术、综合布线技术、将与家居生活有关的各种子系统,有机地结合在一起,通过统筹管理,让家居生活更加舒适、安全、有效。在现代社会,对室内设计而言,窗帘不仅具有遮光作用,更有美化功能,它不仅可以协调居室的色彩搭配,而且能够柔化空间造型的线条,营造温馨惬意的环境。随着高新技术及电子器件的发展,光控、温控及遥控窗帘应运而生,给人们的生活带来了很多方便。单片机控制的自动窗帘控制系统,既能解决每天手动拉开和关上窗帘的不便,又显示出了生活的档次,同时还可以根据光线的明暗来自动控制窗帘的开关,以调节室内的光线,更进一步地满足了人们的享受要求。同时,遥控和定时的组合控制,可以让人们在需要的时段内,方便、快捷使用。自动控制窗帘系统的推广和应用具有重要的现实意义,它改变了人们的生活方式,单片机控制的自动窗帘控制系统具有丰富的智能化功能,为家庭用户营造一个高效、舒适、便利的居住环境,给人们日常生活带来了极大地方便。自动控制窗帘系统又牵扯一大批产业,单片机控制的自动控制窗帘产品面向家庭用户,其应用市场是庞大的,发展前景也是广阔的,必将吸引大批各类企业介入,从而牵动一大批产业的发展。1.2 本设计的内容主要设计内容:窗帘结构设计、窗帘安装布局的设计、控制系统软件的设计和硬件的选择。窗帘结构设计:在现代的审美观念中,人们往往追求的整体美观,同时窗帘作为整体家居环境的一部分,它的结构和尺寸大小有一定的限制。为了满足人们对美的追求,在设计过程中采用硬度高、质量轻的铝合金材料来制作窗帘的整体框架。窗帘安装布局的设计:窗帘光感模块依靠两个光感模块和三个限位开关来实现。对于不同尺寸的窗帘,可根据实际情况改变限位开关的距离来实现控制。控制系统软件的设计:智能窗帘的智能化体现在其自身光控部分,当人们在室内休息、工作的时候,由于外界光线强度的改变,可能给在室内的人们造成不适,而光控刚好解决了这一缺陷。只要事先设置好光感的强度,程序就可根据这个光线改变而实现窗帘的开合,从而改变室内光线强度,给人们一个舒适、温馨的环境。系统的定时部分可提供任何状态下12个小时的定时功能,在定时结束后,系统自动恢复到光感模式,同时用户也可在未到时间的情况下重新开启光感模式。本系统还可提供温度时时检测,时刻提醒用户注意温度变化。1.3 存在的主要问题1.3.1 光感功能的实现光感部分主要可分成光感检测和光感执行两部分。光感检测依靠的是光敏电阻的使用。光敏电阻可分成暗电流和亮电流两部分。暗电流:光敏电阻在室温条件下,全暗(无光照射)后经过一定时间测量的电阻值,称为暗电阻,此时在给定电压下流过的电流。亮电流:光敏电阻在某一光照下的阻值,称为该光照下的亮电阻,此时流过的电流。光敏电阻的暗电阻越大,而亮电阻越小则性能越好。也就是说,暗电流越小,光电流越大,这样的光敏电阻的灵敏度越高。实用的光敏电阻的暗电阻往往超过1M,甚至高达100M,而亮电阻则在几k以下,暗电阻与亮电阻之比在102106之间,可见光敏电阻的灵敏度很高。而本设计中在光感电路加入一个滑动电阻,用户可根据当地光线的实际情况来改变光感元件对光线的敏感程度,从而达到完美的控制目的。光感执行部分主要包括一个直流电机和三个限位开关来实现。当光敏电阻判断光线强度改变时,电机按相应方向转动。以光线程度变强为例,电机向窗帘关合的方向运动,当绕绳碰到某一限位开关时,电机停止转动。再进入另一光敏电阻的判断,如果还是超过设定的位置,电机继续以同方向转动,碰到行程开关停止。1.3.2 遥控功能的实现遥控器使用方便,功能多。目前已广泛应用在电视机、VCD、DVD、空调等各种家用电器中,且价格便宜,市场上非常容易买到。如果能将遥控器上许多的按键解码出来,用作单片机系统的输入,则解决了常规矩阵键盘线路板过大、布线复杂、占用IO口过多的弊病。而且通过使用遥控器,操作时可实现人与设备的分离,从而更加方便使用。红外线的是一种波长为950nm的光,超出人类的可视光谱范围,因此是不可见的。这也是我们用它来做遥控的原因之一,另一个原因就是红外线很容易人工生成,成本低廉。虽然人眼不能直接看到红外线,但是通过摄像机或者数码相机,我们就能在图片里看到它们。不幸的是我们周围有很多红外源。太阳是最大的红外源,其它的比如灯泡,蜡烛,中央加热系统,甚至是我们的身体都是红外源。事实上,只要是发热的物体,就会发射红外线。所以我们必须采取一些措施来防止我们的控制信号受到干扰,采用调制可以使我们的控制信号免受干扰。通过调制,我们把红外线以特殊的频率发射,然后红外接收设施以相同的频率来接收,从而避免干扰。第2章 总体方案设计2.1 主控制系统CPU方案一:STC单片机STC公司的单片机主要是基于8051内核,是新一代增强型单片机,指令代码完全兼容传统8051,速度快812倍,带ADC,4路PWM,双串口,有全球唯一ID号,加密性好,抗干扰强. 其中,STC公司推出了了STC89系列单片机,增加了大量的新功能,提高了51的性能,是MCS51家族中的佼佼者。STC89系列单片机是MCS-51系列单片机的派生产品。它们在指令系统、硬件结构和片内资源上与标准8052单片机完全兼容,DIP40封装系列与8051为pin-to-pin兼容。STC89系列单片机高速(最高时钟频率90MHz),低功耗,在系统/在应用可编程(ISP,IAP),不占用户资源。方案二:MOTOROLA单片机 MOTOROLA是世界上最大的单片机厂商。品种全、选择余地大、新产品多是其特点,在8位机方面有68HC05和生级产品68HC08,68HC05有30多个系列,200多个品种,产量已超过20亿片。8位增强型单片机68HC11也有30多个品种,年产量在1亿片以上。生级产品有68HC12。16位机68HC16也有十多个品种。32位单片机的683XX系列也有几十个品种。近年来,以PowerPC、Coldfire、M.CORE等为CPU,将DSP未为辅助模块集成的单片机也纷纷推出,目前仍是单片机的首选牌品。MOTOROLA单片机特点之一是在同样速度下所用的时钟频率较Intel类单片机低得多,因而使得高频噪声低、抗干扰能力强,更适合用于工控领域及恶劣的环境。MOTOROLA8位单片机过去的策略是以掩膜为主,最近推出OTP计划以适应单片机发展趋势,在32位机上,M.CORE在性能和功耗方面都胜过ARM7。方案三:Scenix单片机 Scenix单片机的I/O模块有新意。I/O模块的集成与组合技术是单片机技术不可缺少的重要方面。除传统的I/O功能模块如并行I/O、URT、SPI、I2C、A/D、PWM、PLL、DTMF等,新的I/O模块不断出现,如USB,CAN、J1850,最具代表性的是MOTOROLA32位单片机,它集成了包括各种通信协议在内的I/O模块,而Scenix单片机在I/O模块的处理上引入虚拟I/O的新概念。Scenix采用了RISC结构的CPU,使CPU最高工作频率达50MHz。运算速度接近50MIPS。有了强有力的CPU,各种I/O功能便可以用软件的办法模拟。单片机的封装采用20/28引脚。公司提供各种I/O的库函数,用于实现各种I/O模块的功能。这些用软件完成的模块包括多路UART、多种A/D、PWM、SPI、DTMF、FSK、LCD驱动等,这些都是通常用硬件实现起来也相当复杂的模块。综合比较三个方案,方案一工具好用,DEMO易搞,成本偏低,所以此次选用的是AT89C52单片机。这是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C52 产品指令和引脚完全兼容。同时具有8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 图2.1 80C52图2.2 硬件总体方案硬件设计的好坏决定整个方案的成功与否,所以在硬件设计时,在实现功能的情况下电路设计越简单越好,这样才能保证这个系统的稳定运行。本系统硬件原理如图2.2所示。 图2.2 硬件设计图2.3 窗帘结构安装及电机选择2.3.1 窗帘结构安装家居窗帘不仅要美观,而且得低噪音,高稳定性。因此采用在滑线上缚有一或二只永磁体,与之相对应有一或二只吊环是磁性材料制成,滑线上缚有永磁体,在封闭的帘杆内腔运行,而吊环全部套在帘杆外周或嵌进下部开的缝内,永磁体用磁力透过帘杆牵引吊环,这种新型电动窗帘滑线不外露,不会蒙尘和缠绕,可以电动手拉兼容。 图2.3 窗帘结构示意图2.3.2 电机选择表2.1 直流电机参数型号峰值堵转最大空载转数(r/min)转矩(N.m) 电流( A) 电 压 (V)功率(W)GW31ZY-63 7.5 1.5 12 18 63本设计采用的是12V的来直流电机驱动,计算转数与扭矩如下:按上表参数计算电机在9V下的扭矩,N=最大空载转数(运行电压峰值电压)=63(912)=47.25r/minM=峰值堵转扭矩(运行电压峰值电压)=7.5(912)=5.625N.m 在9V的状态下,电机产生5.625的扭矩足以带动绕绳的转动。 图2.4 GW31ZY-63直流电机图第3章 控制系统电路设计根据上述设计方案,完成的硬件设计电路包括:屏幕显示电路,电机驱动电路,红外接收电路,光感采集电路,温度采集电路,33的矩阵按键电路,蜂鸣器电路和定位开关电路。3.1 最小系统电路设计最小系统包括单片机电源接入,复位按键与晶振电路。单片机工作时,是一条一条地从ROM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。机器周期不仅对于指令执打有着重要的意义,而且机器周期也是单片机定时器和计数器的时间基准。复位电路对单片机系统意义非凡,单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。最小电路如图3.1所示。 图3.1 最小系统图3.2 端口分配89C52芯片同时具有8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。合理安排端口如表3.1表3.1 端口分配图单片机端口外围电路P0.0-P0.7,P2.0-P2.2屏幕显示模块P2.5-P2.7电机驱动模块P2.3-P2.4光感模块P1.0-P1.2,P1.3-P1.533矩阵按键模块P1.6-P1.7,P3.0定位开关模块P3.2红外线P3.3温度模块P3.7蜂鸣器3.3 屏幕显示模块1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。屏幕上主要显示定时时间和时时温度。定时模块的时间显示小时和分钟,采用倒计时模式。液晶模块电路图如图3.2 图3.2 液晶模块图3.4 电机驱动模块本次设计采用的是12V直流电机提供动力,所以设计使用3个继电器组合成电机控制模块控制。1号继电器打开时,电动机正转:1号、2号、3号三个继电器同时打开时,电动机反转:1号、2号、3号三个继电器同时关闭,电机停止转动。电机驱动电路如下图3.3 图3.3 电机驱动模块图3.5 光感模块光感模块采用光敏电阻和滑动变组组合,通过改变滑动变阻组值的大小可以改变光感模块对光线的感应敏感度。本设计采用两个光感模块,这样用户就可以设定两个光线值,当1号光感模块检测到光线强度达到设定值时,LED灯点亮,同时反馈主电路产生窗帘关合的动作。当光线强度再次加强,达到2号模块设定值,模块再次反馈给主电路产生关合窗帘的动作。光线减弱则相反。光感模块电路如图3.4 图3.4 光感模块图3.6 33按键模块本设计需要按键较多,为了减少端口的使用,所以采用了3X3的矩阵键盘设计。键盘功能如下:1号键:定时模式开启,温度显示关闭,光感模式关闭。2号键:每按一下,分钟加一。3号键:每按一下,小时加以。4号键:定时模式关闭,温度显示开启,光控模式开启。5号键:定时时间清零。6号键:定时时间分钟部分显示30.7号键:电动机停止转动。8号键:电动机正转,窗帘开启。9号键:电动机反转,窗帘闭合。33键盘模块电路如图3.5 图3.5 33按键模块图3.7 红外模块为了方便用户使用,本设计还提供红外线遥控功能,采用的VS1838红外接头。其中的九个按键和33的矩阵按键功能相同。红外模块电路图如图3.6 图3.6 红外模块图3.8 温度显示模块为了时刻提醒用户注意温度变化,本设计特别增加了温度显示模块。采用18B20单线数字式温度计,时时检测室内温度,液晶屏幕上同步显示。温度模块电路如图3.7 图3.7 温度模块图 3.9 蜂鸣器为了提醒用户定时结束,使用蜂鸣器发出警报音,同时在使用红外遥控解码时,蜂鸣器发出嘀的一声,提醒用户解码成功。本设计采用的是无缘蜂鸣器。蜂鸣器电路图如图3.8 图3.8 蜂鸣器模块图第4章 系统软件设计 4.1 主程序设计此次程序设计包括,温度、时间显示,键盘和红外遥控设计,光感模式设计。当单片机上电,程序完成初始化,调用温度、时间显示程序,调用光感子程序并开启,同时键盘和红外被按检测开启。当有按键被按下,执行按键相对应程序。系统软件设计如下图4.1图4.1 主程序流程图4.2 光感程序设计利用硬件滑动变阻器设定光敏电阻的光感值,使用三个行程快关控制电机的停止,同时为了更好的控制电机转动引入了多个虚拟开关。设定光感2号的光感值高于1号。当光线达到1号设定值时,电动机正转,窗帘逐步闭合,同时碰到行程开关停止。当光线达到光感2号光感值时,电动机再次正转,窗帘全部闭合。反之,窗帘开启。流程图如下:图4.2 光感模式流程图4.3 电机驱动模块设计本次电机驱动模块采用的是三个继电器控制电机的正反转,编号为1号,2号,3号。当三个继电器同时关闭时,直流电机停止转动;当1号继电器开启,2号、3号继电器关闭,直流电机正转;当三个继电器同时开启时,直流电机反转。电机驱动模块流程图如下: 图4.3 电机驱动流程图4.4 定时模块设计为了方便用户使用,特别增加了定时模块。待键盘或者遥控按键时间设定以后,开启定时功能键,温度显示隐藏,光感功能暂停,利用遥控或者键盘设置窗帘开合状态。在定时过程中,用户可随时改变窗帘开启的大小,也可在定时未结束时暂停定时功能重新开启光感模块。等到定时时间结束,温度显示,光感功能自动开启。 图4.4 定时模块流程图4.5 倒计时程序设计为了使用户知道定时时间,本设计采用倒计时模式显示定时时间。秒表累计到60,分钟减一;当分钟为0时,判断小时是否为0;小时为0,倒计时结束;小时不为0,分钟变为60,小时减一。倒计时程序流程图如下: 图4.5 倒计时流程图4.6 温度模块设计根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。温度模块流程图如下: 图4.6 温度流程图4.7 外部中断子程序红外线外部中断,采用万能遥控器和VS1608红外接受。9个按键实现矩阵键盘对应的功能。红外线中断流程图: 图4.7 红外中断流程图定时中断程序主要功能是对窗帘定时使用,单片机通过定时器单片机输入的时钟脉冲是由晶体振荡器的输出经12 分频后得到的,所以定时器也可看作是对计算机机器周期的计数器,本次采用的是11.0592M 的晶振,故每接收一个输入脉冲的时间约为1.085s,设定脉冲溢出的个数来确定1S的时间值。定时中断程序流程图如下: 图4.8 定时中断流程图 第5章 制作与调试5.1 制作制作电路板最重要的并且最难的一块便是最小系统的焊接,因为这是核心的部分,之后焊接的电路都得和它连接,它的好坏直接决定着整个设计的成败。在焊接电路前,得先准备好焊接所需要的电器元件,电阻,三极管,电容等都有很多的规格,所以得找到本次设计电路所需的。根据以设计的好的原理图,逐步焊接晶振电路,复位电路,红外电路,屏幕显示电路和蜂鸣器电路。调用单片机程序,测试这些局部功能,马上就发现了问题,红外遥控经常失效,解码失败。仔细比较原理图的元器件的连接电路,发现在焊接晶振时,自己使用了12M的晶振,所以导致了遥控的失效问题。发现问题后,直接将晶振换成了11.0592的晶振,再次测试遥控功能,遥控马上成功。在焊接完屏幕显示电路后,发现屏幕白屏,不显示任何数据,用万用表检测电路,但是没有发现任何问题,后来还是王老师说的,原来是滑动变阻器调节的幅度不够,重新调整了滑动变组后,屏幕显示的功能马上也解决了。在制作好最小系统后,开始了外围电路的焊接,在电机驱动电路焊接的时候,问题又出现了。利用继电器来控制直流电机正反转,需要的是改变接入电流正负,通过三个继电器的组合,一个起到电流总开关的作用,另外两个实现电流的变相。焊接好电路后,接下来的就是程序的调试了。5.2 调试 等到全部的硬件焊接完成后,确认电路没有短路,虚焊后就进入了程序调试阶段。程序的调试也是按部就班,所以按照能功能实现显性来安排。从电机驱动模块开始,在电机驱动效果出现后,在增加按键功能,实现定时功能。调试到这里,就到了本设计核心程序,光感模块程序了。光感模块实际上就在电机驱动模块的基础上增加光感开关,虚拟开关,组合而成,在这个模块里,最重要的就是虚拟开关的设置了,因为每个步骤都有好几个开关的需要设置。所以需要一个一个慢慢的调试。最后的就是遥控功能,实现按键功能复制到遥控键盘上。遥控功能采用的是外部中断,老是出现遥控按键缓慢,要重复按好几下才能实现,所以就直接把遥控功能键部分放到中断里面,问题马上就解决了。图5.1 调试过程图参考文献1邱丽芳,彭志刚,胡汉辉. 单片机原理与应用M. 重庆:重庆大学出版社,2011.2李学海. 标准80C51单片机基础教程原理篇M. 北京:北京航空航天大学出版社,2006.3彭伟. 单片机C语言程序设计实训100例M. 电子工业出版社,2009.4童诗白,华成英. 模拟电子技术(第四版)M. 高等教育出版社,2006.5阎石. 数字电子技术(第五版)M. 高等教育出版社,2005.6康华光. 电子技术基础模拟部分M. 高等教育出版社,2005.7刘叶冰,董欣,张家维. 智能园区系统集成技术J. 工程设计CAD与智能建筑,1999,33(3):29-31. 8腾飞. 智能家居就在眼前J. 中国计算机用户,2001,11(3):25-27.9丁元杰. 单片微机原理及应用M. 机械工业出版社,2003.10王明顺,吴省. 可涓流充电的串行实时时钟芯片DS1302及其应用J. 电子技术应用,1996,10(3):49-51.11崔惠柳. 串行实时时钟芯片DS1302及其应用J. 广西工业学院,1998,9(2):30-34.12徐发荣. DS1302、HT1380时钟芯片与8031单片机的接口技术J. 国外电子原器件,1999,1(3):25-27.13徐福成,赵会成. 电子制作,2004年合订本上,自己动手搭建单片机学习开发系统J. 2004,3(4):25-28.14李光飞,楼然苗,胡佳文等. 单片机课程设计实例指导M. 北京:北京航空航天大学出版社,2004.15覃韦玲. 利用单片机进行红外线编、解码遥控J. 电子世界,2002(2):30-31.16侯勇,王泊林,顾燕. 一体化红外线接收模块及其在红外秒表通讯中的应用J. 仪器仪表与装置,2001.5.17邹书文,黄光桂. 红外遥控单片机J. 电脑与信息技术,1995,2(3):21-23.18李学军. 如何用MCS-51单片机扩展串口进行通讯J. 宁夏机械,2003,2(2):31-32.19李海涛. 关于如何提高单片机系统可靠性的探讨J. 宁夏机械,2005,3(3):26-28.20高彦波,李岩,毕晓燕. PC与单片机之间的远距离并行通讯卡J. 电站设备自动化,2001,3(3):29-31.21李艳红. 单片机I/O口不宜用作直接驱动出口J. 电站设备自动化,2003,2(2):29-30. 22方建军,刘仕良. 机械动态仿真与工程分析M. 北京:化学工业出版社,,2004.23单泉,狄长春,吴高阳等. Pro/Engineer Wildfire 3.0中文版标准实例教程M. 北京:机械工业出版社,,2006.24刘瑞新,朱维克,于梅. AutoCAD2005中文版应用教程M. 北京:机械工业出版社,,2005.25杜文丰. AutoCAD2005中文版机械制图M. 北京:北京大学出版社,2003.26张世昌. 机械制造技术基础M. 天津:天津大学出版社,2002.27 张秀艳. 画法几何及机械制图M. 北京:高等教育出版社,,2004.28李朝青. 单片机原理及接口技术M. 北京:北京航空航天大学出版社,1998.29何立民. 单片机应用技术选编M. 北京:北京航空航天大学出版社,1997.30谭浩强. C语言程序设计M. 北京:清华大学出版社,2005.44附录1 电路原理图 附录2 电路PCB图附录3 安装示意图 附录4 实物图附录5 元件清单器件名称型号数量器件名称型号数量芯片STC89C521红外遥控接头VS18381光感集成块LM2932温度集成块18B201液晶显示器LCD16021排阻10K3 电容 30pf2 电阻 1K110pf22K2滑动变阻器10K110K1电解电容10uf11008晶振11.05921 开关按键开关10继电器JQC-3F3行程开关4蜂鸣器普通1接线柱300V10A2直流电机12V1三极管PNPS85503 附录6 源程序#include /包含单片机寄存器的头文件#include /包含_nop_()函数定义的头文件sbit IR=P32; /将IR位定义为P3.2引脚sbit RS=P20; /寄存器选择位,将RS位定义为P2.0引脚sbit RW=P21; /读写选择位,将RW位定义为P2.1引脚sbit E=P22; /使能信号位,将E位定义为P2.2引脚sbit BF=P07; /忙碌标志位,将BF位定义为P0.7引脚sbit BEEP = P37; /蜂鸣器控制端口P36 unsigned char flag;#define uint unsigned int #define uchar unsigned charint i;unsigned char second;unsigned char min;unsigned char hour;unsigned char code digit11=0123456789-; /定义字符数组显示数字char code w_d=dsz;unsigned char code Temp=W; /说明显示的是温度unsigned char code Cent=C; /温度单位unsigned char flag1,tltemp;/负温度标志 和临时暂存变/*以下是DS18B20的操作程序 */ sbit DQ=P33;unsigned char time; /设置全局变量,专门用于严格延时unsigned char a4; /储存用户码、用户反码与键数据码、键数据反码unsigned int LowTime,HighTime; /储存高、低电平的宽度sbit f1=P25;sbit f2=P26;sbit f3=P27;sbit k1=P23;sbit k2=P24;sbit k3=P36;sbit k4=P16;uchar k5=0;bit k6=0;bit k7=1;bit k8=0;bit k9=1;bit k10=0;bit k11=0;sbit hang1=P10;sbit hang2=P11;sbit hang3=P12;sbit lie1=P13;sbit lie2=P14;sbit lie3=P15;sbit g1=P16;sbit g2=P17;/*函数功能:延时1ms*/void delay1ms() unsigned char i,j; for(i=0;i10;i+) for(j=0;j33;j+) ; /*函数功能:延时若干毫秒入口参数:n*/ void delay(unsigned char n) unsigned char i;for(i=0;in;i+) delay1ms(); /*/void beep()/蜂鸣器响一声函数 unsigned char i; for (i=0;i100;i+) delay1ms(); BEEP=!BEEP; /BEEP取反 BEEP=1; /关闭蜂鸣器 delay(250); /延时 /*函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙*/ unsigned char BusyTest(void) bit result;RS=0; /根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1; /E=1,才允许读写 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 result=BF; /将忙碌标志电平赋给resultE=0; return result; /*函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate*/void WriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置0 _nop_(); _nop_(); /空操作两个机器周期,给硬件反应时间 P0=dictate; /将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 /*函数功能:指定字符显示的实际地址入口参数:x*/ void WriteAddress(unsigned char x) WriteInstruction(x|0x80); /显示位置的确定方法规定为80H+地址码x /*函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)*/ void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS为高电平,RW为低电平时,可以写入数据 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置0 P0=y; /将数据送入P0口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 /*函数功能:对LCD的显示模式进行初始化设置*/void LcdInitiate(void) delay(15); /延时15ms,首次写指令时应给LCD一段较长的反应时间 WriteInstruction(0x38); /显示模式设置:162显示,57点阵,8位数据接口delay(5); /延时5msWriteInstruction(0x38);delay(5);WriteInstruction(0x38);delay(5);WriteInstruction(0x0C); /显示模式设置:显示开,有光标,光标闪烁delay(5);WriteInstruction(0x06); /显示模式设置:光标右移,字符不移delay(5);WriteInstruction(0x01); /清屏幕指令,将以前的显示内容清除delay(5); /*函数功能:对4个字节的用户码和键数据码进行解码说明:解码正确,返回1,否则返回0出口参数:dat*/bit DeCode(void) unsigned char i,j;unsigned char temp; /储存解码出的数据for(i=0;i4;i+) /连续读取4个用户码和键数据码 for(j=0;j1; /temp中的各数据位右移一位,因为先读出的是高位数据 TH0=0; /定时器清0 TL0=0; /定时器清0 TR0=1; /开启定时器T0 while(IR=0) /如果是低电平就等待 ; /低电平计时 TR0=0; /关闭定时器T0 LowTime=TH0*256+TL0; /保存低电平宽度 TH0=0; /定时器清0 TL0=0; /定时器清0 TR0=1; /开启定时器T0 while(IR=1) /如果是高电平就等待 ; TR0=0; /关闭定时器T0 HighTime=TH0*256+TL0; /保存高电平宽度 if(LowTime640) return 0; /如果低电平长度不在合理范围,则认为出错,停止解码 if(HighTime420)&(HighTime1300)&(HighTime=4; /右移四位得到高四位码 date&=0x0f; /与0x0f想与确保高四位为0 if(date=0x09) WriteData(0x30+date); /lcd显示键值高四位 else date=date-0x09; WriteData(0x40+date); date=temp; date&=0x0f; if(date=0x09) WriteData(0x30+date); /lcd显示低四位值 else date=date-0x09; WriteData(0x40+date); WriteData(0x48); /显示字符H /*函数功能:1602LCD显示*/void Disp(void)
展开阅读全文