基于at89s52智能风扇设计内容摘要:

,各位数码管的段选线相应并联在一起,由一个 8位的 I/O 口控制;各位的位选线(共阴极或共阳极)由另外的 I/O 口控制。 以动态方式显示时,各数码管分时轮流 选通。 要使其稳定显示,必须采用扫 描方式,即在某一时刻只选通一位数码管,并送出相应的段码。 依此规律循环,即可使各位数码管显示将要显示的字符,虽然这些字符是在不同的时刻分别显示的,但由于人眼存在视觉暂留效应,因此只要每一位显示时间足够短就可以同时显示的敢感觉。 下图为显示模块的电路原理图: 图 显示模块电路原理图 电机驱动模块设计 模拟调速电机设计 用单片机控制直流电机时,需要加驱动电路,为直流电机提供足够大的驱动电流。 使用不同的直流电机,其驱动电流不同,所以要根据实际需要选择合 适的驱动电路,通常有以下几种驱动电路:三极管电流放大驱动电路、电机专用驱动模块(如 L298)和达林顿驱动器等。 如果是驱动单个电机,并且电机的驱动电流大学毕业设计 2 驱动与硬件设计 不大时,可以用三极管搭建驱动电路,不过这样要稍微麻烦些。 如果电机所需的驱动电流较大,可直接选用市场上现成的电机专用驱动模块,这种模块接口简单,操作方便,并可为电机提供较大的驱动电流,不过它的价格要贵一些。 再设计中采用达林顿驱动器,它实际上是一个集成芯片,单块芯片同时可以驱动多个电机(如: ULN2803 可以驱动 8路, ULN2020 可以驱动 7路,等等),每个电机由单 片机的一个 I/O 口控制,当需要调节直流电机转速时,使单片机的相应 I/O 输出不同占空比的 PWM 波形即可。 图 为可以调速的电机驱动电路原理图: 图 调速电机驱动电路原理图 模拟摇头电机设计 由于模拟摇头电机要求的驱动电流不大,所以采用三极管来搭建驱动电路。 其中三极管全部采用 9014,续流二极管采用 IN4007。 当要求正转或反转时,标zz 和 fz 的两个控制端接在单片机的两个 I/O 口,按照摇头的时序输出 PWM 脉宽进行控制。 它们同时接通,且电平状态相反。 在电流反相时, 电机的感应电流起主导作用时,续流二极管会进行续流,同时反相的电源会接通,反相的电流会加强,电机进行制动,当速度为 0时,转动方向改变。 即实现摇头控制。 图 为摇头电机驱动电路原理图: 大学毕业设计 2 驱动与硬件设计 图 摇头电机驱动电路原理图 时间报警设计 中采用了蜂鸣器进行倒计时报警。 在设置的时间小于等于 10 秒时进行报警提醒。 采用 8550 三极管进行控制,低电平触发方式。 图 为蜂鸣器控制电路原理图: 图 蜂鸣器控制电路图 按键模块 按键模块是使用者与单片机交互的通道。 通过按键可以发出各种控制脉冲,来控制单片机的运行,从而实现不同的控制效果。 图 为按键模块电路原理图: 大学毕业设计 2 驱动与硬件设计 图 按键模块电路原理图 本章小结 简要介绍单片机各管脚的功能,以及单片机各 I/O 内部电路的特点, 时钟电路与复位电路的设计,显示电路模块的设计,调速电机驱动电路设计,摇头电机驱动电路设计,蜂鸣器报警模块设计,按键电路设计。 焦作大学毕业设计 3 智能风扇软件设计 14 3 智能风扇软件设计 软件设计思路 软件采用模块化设计。 分为:主程序、延时子程序、显示子程序、 按键子程序、 PWM 子程序、定时器子程序、摇头子程序。 程序前序 程序在运行之前,必须先定义单片机的头文件,如:“ include” ;时定义出现频率极高的数据变量,如:“ define uchar unsigned char”,“ define uint unsigned int”等;定义输入和输出I/O 口,如:“ sbit k1=P3^2; sbit k2=P3^3;”等等;以及要调用子程序的函数声明和使用的中间变量。 主程序流程图 主程序在“程序前序”后 ,也可以灵活安排,位置并没有严格要求。 下面是主程序的流程图: 大学毕业设计 3 智能风扇软件设计 图 主程序流程图 延时子程序 延时子程序主要用于使显示的效果能让人看得更好。 程序在执行时时间太短,如果时间太短,由于人眼反映时间长,就会使视觉上没有理想的显示效果。 下面是延时子程序流程图: 图 延时子程序流程图 显示子程序 由于风扇要在两种状态下运行,其显示的内容不同,所以采用两种显示子程序来完成显示效果。  显示方式 1程序流程图 这种状态下 ,要求同时显示“风类”和“倒计时时间”,且以动态方式显示。 在编写程序时,由于整体程序较长,所以必须考虑调用程序的运行时间大学毕业设计 3 智能风扇软件设计 对显示效果的影响。 如果由于“受调用程序”占用的时间长而影响显示效果时,可以考虑多次调用显示程序。 即在“受调用程序”中间的合适位置调用显示子程序。 经验说明,此思路是正确的。 下图是显示方式 1程序流程图: 图 显示方式 1程序流程图  显示方式 2程序流程图 与前一种显示方式的区别在于:在这种状态下,风扇处于非定时状态运行,要求显示“风类”和“ ”这些内容 ,同样采用动态显示。 在这种状态下大学毕业设计 3 智能风扇软件设计 工作时,要求风扇在选择的状态下运转,如果定时未选择时,风扇的工作状态不改变,一直运行;且在运行时可以任意改变风速状态,即选择不同的“档位”。 其显示效果影响的解决方法与前面介绍的思路一样。 下图是显示方式 2程序流程图: 图 显示方式 2程序流程图 按键子程序 按键子程序起着发出控制“命令”和控制“要求”的重要作用。 其中它要完成运行状态的选择,做出选择之后,还要按各个状态的要求进行控制。 即当对运行模式做出选择后,要使显示程序按 要求调用,是“显示方式 1子程序”还是大学毕业设计 3 智能风扇软件设计 “显示方式 2子程序”来进行显示。 而且必须保证当设定值达到上限时,可以重新设置。 下图是按键子程序流程图: 大学毕业设计 3 智能风扇软件设计 图 按键子程序流程图 PWM 子程序 PWM 子程序实现不同脉宽脉冲的输出,从而实现调速的目的。 设计中采用软件的方式来得到 PWM 控制信号。 即对 I/O 口取高电平,再延时;高电平延时到时,再对 I/O 口电平取反,如此反复就可得到 PWM 信号。 下图是 PWM 子程序流程图: 大学毕业设计 3 智能风扇软件设计 图 PWM子程序流程图 其中, PWM还有其它的方法可以取得:  利用定时器。 与软件控制方式相似,只是在这里利用单片机的定时器来定时进行高、低电平的翻转,而不再是软件。  利用单片机自带的 PWM 控制器。 STC12 系列单片机自身带有 PWM 控制器,STC89 系列单片机无此功能,其他型号的很多单片机也带有PWM控制器,如 PIC单片机、 AVR 单片机等。 定时器子程序 此程序主要用来实现倒计时和剩下 10s 时的报警。 下图是其程序流程图: 大学毕业设计 3 智能风扇软件设计 图 定时子程序流程图 摇头子程序 摇头程序采用定时器中断的方式来实现,主要是为了使这个“死程序”不影响主程序的运行,使整体的控制效果看起来更像是在独立运行一样,而互不干涉彼此的运行效果。 下图是摇头子程序流程图: 图 摇头子程序流程图 有了硬件之后,最重要就是控制程序了。 它直接影响 着风扇的控制运行效果和功能。 下面将程序的各个部分逐一介绍。 大学毕业设计 3 智能风扇软件设计 程序前序 程序前序主要是定义控制 I/O 口,调用子函数声明,全局变量的定义。 程序前序部分的 C语言程序如下: include //头文件 define uchar unsigned char //定义数据类型 define uint unsigned int //定义数据类型 sbit k1=P3^2。 //按键 1 调节风速 sbit k2=P3^3。 //按键 2 调节时间 sbit dell=P2^2。 //蜂鸣器 sbit ts=P2^3。 //调速控制端 sbit zz=P3^1。 //摇头正转 sbit fz=P3^0。 //摇头反转 sbit dula=P2^6。 //段锁存端 sbit wela=P2^7。 //位锁存端 uchar code table[]= //段码 {0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x40}。 void delay(uint x)。 //延时子程序声明 void display1(uchar,uchar,uchar,uchar)。 //显示子程序 1声明 void display2(uchar f,uchar t1,uchar t2,uchar t3)。 //显示子程序 2声明 void keyscan()。 //键盘子程序声明 void PWM(uint number)。 //风速子程序声明 uchar number,fl,mh,ml。 //定义变量 :中间值:风类、分、秒 uint temp。 //定义变量 :时间基数 uchar num0,num1,num2,num3。 //定义变量 :定时器中间参数 uchar t1,t2,t3。 //显示 2子程序中间参数 主程序 主程序是实 现各个子程序调用的,使程序多次循环运行,实现在一定时间内。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。