欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    毕业设计(论文)基于单片机的智能电风扇控制系统.doc

    • 资源ID:3980697       资源大小:701KB        全文页数:28页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    毕业设计(论文)基于单片机的智能电风扇控制系统.doc

    第1节 引 言21.1 智能电风扇控制系统概述 21.2 本设计任务和主要内容 2第2节 方案论证 42.1 温度传感器的选用42.2 控制核心的选择4 2.3 显示电路的选择 5第3节 系统主要硬件电路设计 63.1 数字温度传感器模块设计63.2 电机调速与控制模块设计63.3 电机调速模块设计93.4 温度显示与控制模块设计123.5 键盘模块设计14第4节 程序设计与仿真 164.1 数字温度传感器模块程序设计164.2 显示模块程序流程194.3 电机调速与万年历程序流程234.4 按键总控制流程264.5 主程序38第5节 成品调试 38 5.1 静态测试385.2 联机调试38结 束 语 39参考文献 41基于单片机的智能电风扇控制系统第1节 引 言 电风扇曾一度被认为是空调产品冲击下的淘汰品,其实并非如此,市场人士称,家用电风扇并没有随着空调的普及而淡出市场,近两年反而出现了市场销售复苏的态势。其主要原因:一是风扇和空调的降温效果不同空调有强大的制冷功能,可以快速有效地降低环境温度,但电风扇的风更温和,更加适合老人儿童和体质较弱的人使用;二是电风扇有价格优势,价格低廉而且相对省电,安装和使用都非常简单。尽管电风扇有其市场优势,但传统电风扇还是有许多地方应当进行改良的,最突出的缺点是它不能根据温度的变化适时调节风力大小,对于夜间温差大的地区,人们在夏夜使用电风扇时可能遇到这样的问题:当凌晨降温的时候电风扇依然在工作,可是人们因为熟睡而无法察觉,既浪费电资源又容易引起感冒,传统的机械定时器虽然能够控制电风扇在工作一定后关闭,但定时范围有限,且无法对温度变化灵活处理。鉴于以上方面的考虑,我们需要设计一种智能电风扇控制系统来解决这些问题。1.1 智能电风扇控制系统概述 传统电风扇是220V交流电供电,电机转速分为几个档位,通过人为调整电机转速达到改变风力大小的目的,亦即,每次风力改变,必然有人参与操作,这样势必带来诸多不便。本设计中的智能电风扇控制系统,是指将电风扇的电机转速作为被控制量,由单片机分析采集到的数字温度信号,再通过可控硅对风扇电机进行调速。从而达到无须人为控制便可自动调整风力大小的效果。1.2 设计任务和主要内容本设计以STC89C51单片机为核心,通过温度传感器对环境温度进行数据采集,从而建立一个控制系统,使电风扇随温度的变化而自动变换档位,实现“温度高,风力大,温度低,风力弱”的性能。另外,通过键盘控制面板,用户可以在一定范围内设置电风扇的最低工作温度,当温度低于所设置温度时,电风扇将自动关闭,当高于此温度时电风扇又将重新启动。本设计主要内容如下: 风速设为从高到低5个档位,可由用户通过键盘手动设定。 当温度每降低2则电风扇风速自动下降一个档位。 当温度每升高2则电风扇风速自动上升一个档位。 用户可设定电风扇最低工作温度,当低于该温度时,电风扇自动停转。第二节 方案论证 本系统实现风扇的温度控制,需要有较高的温度变化分辨率和稳定可靠的换档停机控制部件。2.1 温度传感器的选用 温度传感器可由以下几种方案可供选择: 方案一:选用热敏电阻作为感测温度的核心元件,通过运算放大器放大山于温度变化引起热敏电阻电阻的变化、进而导至的输出电压变化的微弱电压变化信号,再用AD转换芯片ADC0809将模拟信号转化为数字信号输入单片机处理。 方案二:采用热电偶作为感测温度的核心元件,配合桥式电路,运算放大电路和AD转换电路,将温度变化信号送入单片机处理。 方案三:采用数字式集成温度传感器 DS18B20作为感测温度的核心元件,直接输出数字温度信号供单片机处理 对于方案一,采用热敏电阻有价格便宜、元件易购的优点,但热敏电阻对温度的细微变化不敏感,在信号采集、放大、转换过程中还会产生失真和误差,并且由于热敏电阻的R-T关系的非线性,其本身电阻对温度的变化存在较大误差,虽然可以通过一定电路予以纠正,但不仅将使电路复杂稳定性降低,而且在人体所处温度环境温度变化中难以检测到小的温度变化。故该方案不适合本系统。 对于方案二,采用热电偶和桥式测量电路相对于热敏电阻其对温度的敏感性和器件的非线性误差都有较大提高,其测温范围也非常宽,从一50摄氏度到1600摄氏度均可测量。但是依然存在电路复杂,对温度敏感性达不到本系统要求的标准,故不采用该方案。 对于方案三,山于数字式集成温度传感器DS18B20的高度集成化,大大降低了外接放大转换等电路的误差因素,温度误差很小,并且由于其感测温度的原理与上述两种方案的原理有着本质的不同,使得其温度分辨力极高。温度值在器刊内部转换成数字量直接输出,简化了系统程序设计,又由于该传感器采用先进的单总线技术(1-WR工E),与单片机的接口变的非常简洁,抗干扰能力强。关于DS18B20的详细参数参看下面“硬件设计”中的器件介绍.2.2 控制核心的选择 方案一:采用电压比较电路作为控制部件。温度传感器采用热敏电阻或热电偶等,温度信号转为电信号并放大,山集成运放组成的比较电路判决控制风扇转速,当高于或低于某值时将风扇切换到相应档位。 方案二:采用单片机作为控制核心。以软件编程的方法进行温度判断,并在端口输出控制信号。 对于方案一,采用电压比较电路具有电路简单、易于实现,以及无需编写软件程序的特点,但控制方式过于单一,不能自由设置上下限动作温度,无法满足不同用户以及不同环境下的多种动作温度要求,故不在本系统中采用。 对于方案二,以单片机作为控制器,通过编写程序不但能将传感器感测到的温度通过显示电路显示出来,而且用户能通过键盘接口,自由设置上下限动作温度值,满足全方位的需求.并且通过程序判断温度具有极高的精准度,能精确把握环境In度的微小变化。故本系统采用方案二2.3 显示电路 方案一:采用五位共阳数码管显示温度,动态扫描显示方式. 方案二:采用液晶显示屏LCD显示温度 对于方案一,该方案成本低廉,显示温度明确醒目,在夜间也能看见,功耗极低,显示驱动程序的编写也相对简单,这种显示方式得到广泛应用。不足的地方是扫描显示方式是使五个LED逐个点亮,因此会有闪烁,但是人眼的视觉暂留时间为20M8,当数码管扫描周期小于这个时间时人眼将感觉不到闪烁,因此可以通过增大扫描频率来消除闪烁感。 对于方案二,液晶体显示屏具有显示字符优美,不但能显示数字还能显示字符甚至图形的优点,这是LED数码管无法比拟的。但是液晶显示模块价格昂贵,驱动程序复杂,从硬件电路复杂性原则考虑,本系统采用方案二。第三节 系统主要硬件电路设计 3.1 总体硬件设计系统总体设计框图如图3-1所示键盘输入温度显示单片机系统电机控制模块数字温度传感模块图3-1 系统原理框图 对于单片机中央处理系统的方案设计,根据要求,我们可以选用STC89C51单片机作为中央处理器。作为整个控制系统的核心,STC89C51内部已包含了定时器、程序存储器、数据存储器等硬件,其硬件能符合整个控制系统的要求,不需要外接其他存储器芯片和定时器件,方便地构成一个最小系统。整个系统结构紧凑,抗干扰能力强,性价比高。是比较合适的方案3.2 数字温度传感器模块设计3.2.1 DS18B20单线数字温度传感器简介 DS18820单线数字温度传感器是Dallas半导体公司开发的世界上第一片支持“一线总线”接口的温度传感器。它具有3引脚TO-92小体积封装形式。温度测量范围为一55C+125'C,可编程为9位12位A/D转换精度,测温分辨率可达0. 06250C.被测温度用符号扩展的16位数字量方式串行输出.工作电压支持3V-一一5. 5V的电压范围,既可在远端引入,也可采用寄生电源方式产生。DS18B20还支持“一线总线”接口,多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路.DS18820内部结构主要由4部分组成:64位ROM,温度传感器、非挥发的温度报警触发器TH和TL,配置寄存器。其管脚排列如图2所示,DQ为数字信号端,cnIl为电源地,VDD为电源输入端口。 图3.1 DS18B20内部结构 图3.2 DS18B20外形与管脚温度传感器也可以选用LM324A的运算放大器,将其设计成比例控制调节器,输出电压与热敏电阻的阻值成正比,但这种方案需要多次检测后方可使采样精确,过于烦琐。所以我采用更为优秀的DS18B20数字温度传感器,它可以直接将模拟温度信号转化为数字信号,降低了电路的复杂程度,提高了电路的运行质量。3.2.2 温度传感器模块组成本模块以DS18B20作为温度传感器,STC89C51作为处理器,配以温度显示作为温度控制输出单元。整个系统力求结构简单,功能完善。电路图如图3.3所示。 图3.3 温度传感器模块DS18B20进行现场温度测量,将测量数据送入STC89C51的P3.3口,经过单片机处理后显示温度值,并与设定温度值的上下限值比较,若高于设定上限值或低于设定下限值则控制电机转速进行调整。3.2.3 DS18B20的温度处理方法DS18B20直接将测量温度值转化为数字量提交给单片机,工作时必须严格遵守单总线器件的工作时序。温度值/ 数字输出(二进制) 数字输出(十六进制) +85 0000 0101 0101 0000 0550H +25.625 0000 0001 1001 0001 0191H +10.125 0000 0000 1010 0010 00A2H+0.5 0000 0000 0000 1000 0008H 0 0000 0000 0000 0000 0000H-0.5 1111 1111 1111 1000 FFF8H -10.125 1111 1111 0110 1110 FF5EH -25.625 1111 1111 0110 1111 FF6FH -55 1111 1100 1001 0000 FC90H表2-1 部分温度值与DS18B20输出的数字量对照表 3.3 电机调速与控制模块设计电机调速是整个控制系统中的一个重要的方面。通过控制L298来调节PWM输出,使输出端电压发生改变,从而使施加在电风扇的输入电压发生改变,以调节风扇的转速,实现各档位风速的调速。3.3.1 L298芯片介绍L298驱动芯片是SGS公司的产品,内部包含4通道逻辑驱动电路。是一种二相和四相电机的专用驱动器,即内包含二个H桥的高压大电六双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。实物图如图3.1所示。图3.1 实物图图3.2 管脚图L298有两路电源分别为逻辑电源6V和动力电源12V,ENA、ENB直接接入5V电源使电机进入使能状态,IN1和IN2用来控制电路的逻辑功能状态。由于使用的电机是线圈式,在从运行状态突然转到停止状态和从顺时状态突然转换到逆时针状态时会形成很大的方向电流,在电路中加入二极管就是在产生方向电流的时候进行泄流,保护芯片的安全。下图为L298的逻辑功能状态。3.3.2 电机调速原理我们采用的是PWM来实现直流电动机的调速,优点:控制原理简单,输出波动小,线性好,对邻近电路干扰小。缺点是:功率低,散热问题严重。电动机的电驱绕组两端的电压平均值U为:U=(t1*U)/(t1+t2)=(t1*U)/T=D*U式中D为占空比,D=t/T。占空比D表示了在一个周期T里开关管导通的时间与周期的比值。D的变化范围为0<=D<=1。当电源电压U不变的情况下,输出电压的平均值U取决与占空比D的大小,改变D值也就改变了输出电压的平均值,从而达到控制电动机转速的目的,即实现PWM调速。3.3.2 电机调速模块设计 根据图3.3所示连接好电路图,A/B接入单片机上通过程序来控制L298输出来控制直流电机的转动。PWM1赋值为1时,使能直流电机转动。3.4 温度显示与控制模块设计3.4.1 1602液晶模块的特性字符型液晶模块1602是一种用5×7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等,常用的2行16个字的1602液晶模块来的编程方法如下。1602采用标准的16脚接口,其中:第1脚:VSS为地电源;第2脚:VDD接5V正电源;第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。 第1516脚:空脚。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到“A”。它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)。3.4.2 显示模块设计液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,如下表。12345678910111213141516000102030405060708090A0B0C0D0E0F第一行404142434445464748494A4B4C4D4E4F第二行3.5 键盘模块设计3.5.1 键盘方式选择常用的键识别方法有:行扫描法、线翻转法和利用8279键盘接口的中断法。在本系统中,完全可以不使用中断法完成键盘接口,这是由系统的特殊性决定的。首先,对于本系统而言,要实现便携式的设计,硬件电路使用的器件越少越好。其次,被测信号由外中断引脚输入,未占用单片机4个并行I/O口中的任何一个,系统有足够的资源利用自身I/O口完成接口。最后,只有当传感器输出信号频率为空载频率,系统处于空闲待测的状态下,才允许键盘输入,因此键盘识别占用的CPU时间不会对系统正常工作造成影响。因此直接利用单片机并行接口完成键盘的接口,采用线翻转法进行键盘识别。3.5.2 实现方案本单片机系统使用简单的键盘和液晶显示器件来完成输入/输出操作的人机界面。键盘输入信息的主要过程是:·CPU判断是否有健按下。·确定按下的是哪一个键。·把此键代表的信息翻译成计算机所能识别的代码,如ASCII或其他特征码。键盘上有很多键,每一个键对应一个键码,以便根据键码转到相应的键处理子程序,进一步实现数据输入和命令处理的功能。键盘识别的流程如图所示。 3.5.3 模块设计第四节 PCB图及原理图的制作1、设计步骤 1.1 电路板设计步骤一般而言,设计电路板最基本的过程可以分为三大步骤。1. 电路原理图的设计电路原理图的设计主要是PROTEL98的原理图设计系统(Advanced Schematic)来绘制一张电路原理图。在这一过程中,要充分利用PROTEL98所提供的各种原理图绘图工具、各种编辑功能,来实现我们的目的,即得到一张正确、精美的电路原理图。2. 产生网络表网络表是电路原理图设计(SCH)与印制电路板设计(PCB)之间的一座桥梁,它是电路板自动的灵魂。网络表可以从电路原理图中获得,也可从印制电路板中提取出来。3. 印制电路板的设计印制电路板的设计主要是针对PROTEL99的另外一个重要的部分PCB而言的,在这个过程中,我们借助PROTEL98提供的强大功能实现电路板的版面设计,完成高难度的等工作。1.2 绘制简单电路图1.2.1 原理图设计过程原理图的设计可按下面过程来完成。(1)设计图纸大小Protel 98/ Schematic后,首先要构思好零件图,设计好图纸大小。图纸大小是根据电路图的规模和复杂程度而定的,设置合适的图纸大小是设计好原理图的第一步。(2)设置Protel 98/Schematic设计环境设置Protel 98/Schematic设计环境,包括设置格点大小和类型,光标类型等等,大多数参数也可以使用系统默认值。(3)旋转零件用户根据电路图的需要,将零件从零件库里取出放置到图纸上,并对放置零件的序号、零件封装进行定义和设定等工作。(4)原理图布线利用Protel 98/Schematic提供的各种工具,将图纸上的元件用具有电气意义的导线、符号连接起来,构成一个完整的原理图。(5)调整线路将初步绘制好的电路图作进一步的调整和修改,使得原理图更加美观。(6)报表输出通过Protel 98/Schematic提供的各种报表工具生成各种报表,其中最重要的报表是网络表,通过网络表为后续的电路板设计作准备。(7)文件保存及打印输出最后的步骤是文件保存及打印输出。(3)总电路图(4)总电路PCB板第五节 程序设计与仿真本系统的运行程序采用C语言编写,采用模块化模块化编程的方法,整体程序由主程序(.c文件)和子程序(.h文件)构成。4.1 数字温度传感器模块程序设计YN键盘识别有键按下去抖动确定按键物理位置功能键A功能键D键盘输入测量电压计算键码显示测量结果等待键释放显示设定值功能键B系统初始化液晶初始化功能键C清屏测量温度超出域值?显示out of range4.2 主要程序如下(以下程序为一个ds18b20.h的程序包):/*ds18b20子程序*/#ifndef _ds18b20_H_#define _ds18b20_H_ /sbit DQ = P23; /定义通信端口 sbit DQ = P33; void delay(unsigned int i)while(i-);/*初始化函数*/Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ复位 delay(4); /稍做延时 DQ = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us DQ = 1; /拉高总线 delay(20); x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(20);/*读一个字节 */RChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-)DQ = 0; / 给脉冲信号dat>>=1;DQ = 1; / 给脉冲信号if(DQ)dat|=0x80;delay(10);return(dat);/*写一个字节 */WChar(unsigned char dat)unsigned char i=0;for (i=8; i>0; i-) DQ = 0; DQ = dat&0x01; delay(10); DQ = 1; dat>>=1;/*读取温度*/ReadTemp(void)unsigned char a=0;unsigned char b=0;unsigned int t=0;Init_DS18B20();WChar(0xCC); / 跳过读序号列号的操作WChar(0x44); / 启动温度转换delay(100);Init_DS18B20();WChar(0xCC); /跳过读序号列号的操作WChar(0xBE); /(读取温度寄存器) 前两个就是温度a=RChar(); /低八位b=RChar(); /高八位t = (b*256+a)*25; /传感器返回值除16得实际温度值/为了得到2位小数位,先乘100,再除1 6 (先乘以25再除以4)return( t >> 2 );#endif4.2 显示模块程序流程4.2.4 程序如下(以下程序为一个LCD1602.h的程序包):#ifndef _ _H_#define _LCD1602_H_ #define LCD_DB P0sbit LCD_RS=P20;/命令数据端口sbit LCD_RW=P21;/读写控制端口sbit LCD_E=P22;/使能端口/*定义函数*/void LCD_init(void);/初始化函数void LCD_write_command(unsigned char command);/写指令函数aovoid LCD_write_data(unsigned char dat);/写数据函数void LCD_disp_char(unsigned char x,unsigned char y,unsigned char dat);/在某个屏幕位置上显示一个字符,X(0-16),y(1-2)void delay_n40us(unsigned int n);/延时函数/*初始化函数*/void LCD_init(void) LCD_write_command(0x01);/清除屏幕显示delay_n40us(100);/实践证明,我的LCD1602上,用for循环100次就能可靠完成清屏指令。LCD_write_command(0x38);/设置8位格式,2行,5x7LCD_write_command(0x0c);/整体显示,关光标,不闪烁LCD_write_command(0x06);/设定输入方式,增量不移位/*写指令函数*void LCD_write_command(unsigned char dat)LCD_DB=dat;LCD_RS=0;/指令LCD_RW=0;/写入LCD_E=1;/允许LCD_E=0;delay_n40us(2);/实践证明,我的LCD1602上,用for循环2次就能完成普通写指令。/*写数据函数*void LCD_write_data(unsigned char dat)LCD_DB=dat;LCD_RS=1;/数据LCD_RW=0;/写入LCD_E=1;/允许LCD_E=0;delay_n40us(2);/*显示一个字符函数*void LCD_disp_char(unsigned char x,unsigned char y,unsigned char dat)unsigned char address;if(y=1)address=0x80+x;elseaddress=0xc0+x;LCD_write_command(address);LCD_write_data(dat);/*延时函数*void delay_n40us(unsigned int n) unsigned int i; unsigned char j; for(i=n;i>0;i-) for(j=0;j<6;j+); /在这个延时循环函数中我只做了6次循环, /实践证明我的LCD1602上普通的指令只需6次循环就能可靠完成。void LCD_disp_str(unsigned char column,unsigned char line,unsigned char *str) unsigned char n=0; while(*str!='0')LCD_disp_char(column+,line,*str+);#endif4.3 电机调速与万年历程序流程(以下程序为time.h的程序包):#ifndef _time_H_#define _time_H_/sbit fl=P27;sbit fl=P10;unsigned int m_second_1=0,m_second=0;/*定时1ms*/void time0()EA = 0;TMOD = 0x11;TH0 = (65535-12500)/255;TL0 = (65535-12500)%255;TH1 = (65535-10)/255;TL1 = (65535-10)%255;TR0= 1;ET0 = 1;TR1= 1;ET1 = 1;EA = 1;/*定时器T1的中断服务函数. 晶振频率为11.0592MHz*/void T1INTSVC() interrupt 1TR0 = 0;/暂时停止定时器(在重新设置初值之前必须暂停)TH0 = (65535-12500)/255;TL0 = (65535-12500)%255;/重新设置定时器初值,设置时间为10msTR0 = 1;/重新启动定时器m_second_1+;if(m_second_1>=80) m_second_1=0;second+;if(second=1) change=1;if(second=60)second=0;g_minute+;if(g_minute=10) s_minute+;g_minute=0; if(s_minute=6) g_hour+;s_minute=0;g_minute=0;if(g_hour=10) s_hour+;g_hour=0;if(s_hour=2)&&(g_hour=4) g_day+;g_hour=0;s_hour=0;if(g_day=10) s_day+;g_day=0;if(s_day=3)&&(g_day=1) g_mouth+;g_day=0;s_day=0;if(g_mouth=10) s_mouth+;g_mouth=0;if(s_mouth=1)&&(g_mouth=3) g_year+;g_mouth=0;s_mouth=0;if(g_year=10) s_year+;g_year=0;if(s_year=2)&&(g_year=0) s_year=0;g_year=0;#endif注:程序中还包含一个万年历程序。(2)、以下程序为time00.h的程序包#ifndef _time00_H_#define _time00_H_void t0() interrupt 3TR1=0;TH1 = (65535-1)/255;TL1 = (65535-1 )%255;TR1=1;if(temp0>temp) fl=0;Vo1=0;pwm=0;else m_second+;if(m_second=Vo2) fl=1;Vo1=0; pwm=1; else if(m_second=Vo3) fl=0;Vo1=0;m_second=0;pwm=1;#endif注:通过Vo2、Vo3的值来控制PWM输出。4.4 按键总控制流程以下程序为key.h的程序包#ifndef _key_H_#define _key_H_unsigned int tmp;unsigned char temp,temp0,s_tmp_s=1,g_tmp_s=8;sbit keyM_D=P27;sbit keyM_A=P26;sbit pwm= P12;sbit keya=P23;sbit f1= P10;sbit key_9=P25;sbit key_8=P24;unsigned char i=0;unsigned char wu=1,Vo2,Vo3;bit change;unsigned char g_hour=0,s_hour=1,g_minute=0,s_minute=3,second,g_day=0,s_day=2,s_mouth=0,g_mouth=6,g_year=1,s_year=1,Modle=0;/sbit Vo1=P11;unsigned char str_temp03='0','0','0'unsigned char str_temp5='0','0','0','0','0'unsigned char str_Modle2='0','0'unsigned char str_date9='0','0','/','0','0','/','0','0','0'unsigned char str_time9='0','0',':','0','0',':','0','0','0'/用于装载要在LCD上显示的时间的ASCALL码unsigned char code table = 0,0,1,2,3,4,5,6,7,8,9,0; void DelayXus(int x) unsigned char j; while (x-

    注意事项

    本文(毕业设计(论文)基于单片机的智能电风扇控制系统.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开