湖南大学 基于IAP15f2k61s2设计模拟风扇控制

发布于 2021-06-01  86 次阅读


摘要

  单片机具有体积小、可靠性高、功能强、灵活方便等的优点,故广泛应用于国民经济的各个领域。目前单片机已用于工业控制、机电一体化设备、仪器仪表、信号处理、现代兵器、交通能源、商用设备、医疗设备及家用电器等各个领域,随着单片机性能的不断提高,它的应用将会更加广泛。单片机技术发展特别快,所以目前的产品都致力于在功能全面、技术先进、操作方便、安全可靠、价格合理等方面进行仔细研究,精心设计;及时掌握最新的单片机技术,在条件允许的情况下,尽可能地利用最新的单片机技术来研制其应用系统,在利用单片机体积小、价格低、功能强等特点,以保证所设计的产品在未来的一段时间内仍具生命力。

  IAP15f2k61s2单片机是STC公司最新生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,使用经典的MCS-51内核。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得IAP15f2k61s2为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。单片机又称微控制器,其中最基本的结构是将CPU和计算机外围功能单元,如存储器、I/O口、定时器/计数器、中断系统等集成在一个芯片上构成的。

  随着气温升高,物美价廉的家用多功能风扇市场逐步打开,每一套风扇都可以通过单片机的CPU控制其功能,虽然目前有点大材小用,但是,随着单片机成本的下降和风扇功能的增多,智能设备控制家居的前景越来越光明。本课题小组现进行一个模拟的多功能风扇设计。

  本设计主要研究的是基于IAP15f2k61s2单片机的模拟风扇设计。采用IAP15f2k61s2芯片组成的最小系统,结合DS1302时钟芯片,多个独立按键,使被控制风扇实现睡眠风,自然风和常风三种功能并且能够做到定时。用数码管显示其工作模式和剩余工作时间,同时还利用DS18B20数字温度传感器增加了室内温度显示功能。

绪论

设计背景

  随着电子科学技术的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作等等许多方面,因此开发本系统希望能够给人们带来更多的生活乐趣。

  当前市场上的智能家居需求量增大,其中智能风扇就是一个很好的应用方面。单片机技术使我们可以利用软硬件来实现能风扇的功能,从而可以实现能风扇的多功能化。该设计通过单片机实现了风扇强度的控制和时间的定时,并用LED液晶显示屏进行显示,另外添加了电子时钟功能,使风扇的功能更加完善。

设计任务

实现模拟风扇控制系统,要求:
- 1)具有一般风扇送风的功能;
- 2)可切换风扇的三种状态,并用数码管显示;
- 3)环境的温度的显示;
- 4)有定时功能,可记录剩余时间,并用数码管显示;
- 5)具有简单电子表功能,可显示年、月、日、星期、时、分、秒等(根据实际显示方式的不同,可选择部分或全部功能);

实现功能

  本次设计智能风扇,采用IAP15f2k61s2芯片组成的最小系统控制电路,能够模拟电风扇工作,通过按键控制风扇的转动速度和定时时间,数码管实时显示风扇的工作模式,动态倒计时显示剩余的定时时间,系统主要由数码管显示,单片机最小系统,按键输入和电机控制保护电路组成。
功能介绍如下:

  • 1)设备有“睡眠风”、“自然风”和“常风”三种工作模式可通过按键切换;
  • 2)数码管实时显示设备当前工作模式和剩余工作时间(倒计时);
  • 3)四个独立按键分别实现不同的按键控制功能;
  • 4)具有简单电子表功能,可显示年、月、日、星期、时、分、秒等(根据实际显示方式的不同,可选择部分或全部功能);

总体设计

按键模块

独立连接式键盘

  按键在单片机应用系统中是一个关键的部件,它能实现计算机输入数据、传送命令等功能,是人工干预计算机的主要手段。键盘分为独立连接式键盘和矩阵式键盘两类,本次设计采用的是独立连接式键盘。

  独立式按键是直接用I/0口线构成的单个按键电路,其特点是每个按键单独占用一根I/0口线,每个按键的工作不会影响其它I/0口线的状态。独立式按键 电路配置灵活,软件结构简单,但每个按键必须占用一根I/0口线,然而,在按键较多时,I/0口线浪费较大,不宜采用。独立式按键软件常采用查询式结构。先逐位查询每根I/0口线的输入状态,如某一根I/0口线输入为低电平,则可确认该I/0口线所对应的按键已按下,然后,再转向该键的功能处理程序。下图为独立式键盘电路图(S4-S7):



去抖动

  键盘编程过程中需要考虑去抖动的问题。

  当测试表明有键被按下之后,紧接着就进行去抖动处理。因为键是机械开关结构,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动。为保证键识别的准确,在电压信号抖动的情况下不能进行行状态输入。为此需进行去抖动处理。去抖动有硬件和软件两种方法。硬件方法就是加去抖动电路,从根本上避免抖动的产生。软件消抖,在第一次检测到有键按下时,执行一段延时程序之后,再检测此按键,如果第二次检测结果仍为按下状态,CPU便确认此按键己按下,消除了抖动。

8位8段共阳极数码管

  8位8段共阳数码管是用来显示数字的模块。共阳极数码管的8个发光二极管的阳极连接在一起。通常,公共阳极接高电平,其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。电路如图所示:



DS18B20温度传感器

  DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。

  DS18B20测温原理如图3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号发送给计数器1。高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值.



DS1302时钟芯片

  DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。电路图如下示:

总体设计

  本系统由主控芯片IAP15f2k61s2、数码管显示、LED指示灯、PWM输出、按键输入模块和DS18B20温度传感器组成。系统原理框图如下所示:

硬件设计

最小系统及元器件清单

  单片机加上适当的外围器件和应用程序,构成的应用系统称为最小系统。
本设计需要的具体元器件清单:

  • 1)CT107S开发板;
  • 2)STC15F2K60S2单片机;
  • 3)LCD1602液晶显示屏;
  • 4)DS1302时钟芯片;
  • 5)独立按键若干个;
  • 6)DS18B20温度传感器;

复位电路

  单片机小系统常采用上电自动复位和手动按键复位两种方式实现系统的复位操作。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。其结构如下图,上电自动复位通过电容C3 充电来实现。手动按键复位是通过按键将电阻 R1 与VCC接通来实现。

整体电路

软件设计

程序流程图

按键控制

使用S4、S5、S6、S7四个按键完成按键控制功能

  • 1)按键S4定义为工作模式切换按键,每次按下S4,设备切换三种工作模式,工作过程如下:

  • 2)按键S5定义为“定时按键”,每次按下S5,定时时间增加1分钟,设备的剩余工作时间重置为当前定时时间,重新开始倒计时,工作过程如下:

  • 3)按键S6定义为“停止”按键,按下S6按键,立即清零剩余工作时间,PWM信号停止输出,知道通过S5重新设置定时时间。

  • 4)按键S7定义为“室温”按键,按下S7,通过数码管显示当前室温,再次按下S7,返回1)中的工作模式和剩余工作时间。

程序设计

  • (1)PWM输出模块:
void pwm()
{
    static int time_duty = 0, time_temp = 0;
    if(timeout)
        if(time_duty < duty)
            P34 = 1;
            //P07 = 0;
        else
            //P07 = 1;
            P34= 0;
    else
        P34 = 0;
    //P2 = 0x80;
    if(timeout)
        time_temp++;
    if(time_temp == 10000)
    {
        timeout--;
        time_temp = 0;
    }
    if(timeout == 0)
        duty = 0;
    else 
        timeout = timeout;
    time_duty++;
    if(time_duty == 10)
        time_duty = 0;
}

  • (2)按键控制模块
void menu(char keyvalue, uchar tempr)
{
    if(mode == 1)
        duty = duty1;
    else if(mode == 2)
        duty = duty2;
    else if(mode == 3)
        duty = duty3;

    if(keyvalue == 4)
    {
        mode++;
        if(mode > 3)
            mode = 1;
    }
    else if(keyvalue == 5)
    {
        timeout = timeout + 60;
        if(timeout > 60 && timeout < 120)
            timeout = 120;
        if(timeout > 120)
            timeout = 0;
    }
    else if(keyvalue == 6)
    {
        timeout = 0;
        duty = 0;
    }

    switch(state)
    {
        case s0:
        {
            semg_temp[0] = 10;
            semg_temp[1] = mode;
            semg_temp[2] = 10;
            semg_temp[3] = 12;
            semg_temp[4] = 0;
            semg_temp[5] = timeout / 100;
            semg_temp[6] = (timeout - semg_temp[5] * 100) / 10;
            semg_temp[7] = timeout % 10;
            if(keyvalue == 7)
                state = s1;
        }   break;

        case s1:
        {
            semg_temp[0] = 10;
            semg_temp[1] = 4;
            semg_temp[2] = 10;
            semg_temp[3] = 12;
            semg_temp[4] = 12;
            semg_temp[5] = tempr / 10;
            semg_temp[6] = tempr % 10;
            semg_temp[7] = 11;
            if(keyvalue == 7)
                state = s0;
        }   break;

        default: state = s0;    break;
    }
}


char keyscan()
{
    uchar keybefore, keycode, trg;
    static char keyvalue = -1;
    keycode = (P3 ^ 0xff)  & 0x0f;
    trg = keycode & (keycode ^ keybefore);
    keybefore = keycode;
    if(trg == 0x01)             keyvalue = 7;
    else if(trg == 0x02)    keyvalue = 6;
    else if(trg == 0x04)    keyvalue = 5;
    else if(trg == 0x08)    keyvalue = 4;
    else                                keyvalue = -1;
    return keyvalue;
}

系统操作说明

  设备具有“睡眠风”“自然风”和“常风”三种工作模式可以通过按键切换,通过单片机P34引脚输出脉宽调制信号控制电机运行状态,信号频率为1KHz。三种工作模式下对应PWM占空比分别为20%、30%、70%。

  S4、S5、S6、S7四个按键完成按键控制功能,按键S4定义为工作模式切换按键,每次按下S4,设备切换三种工作模式,按键S5定义为“定时按键”,每次按下S5,定时时间增加1分钟,设备的剩余工作时间重置为当前定时时间,重新开始倒计时,按键S6定义为“停止”按键,按下S6按键,立即清零剩余工作时间,PWM信号停止输出,知道通过S5重新设置定时时间。按键S7定义为“室温”按键,按下S7,通过数码管显示当前室温。

  三种模式下,分别对应LED指示灯L1、L2、L3的点亮,按下停止按键或者倒计时结束时,LED全部熄灭。

全部代码:

跳转到:

湖南大学 C语言IAP15f2k61s2设计模拟风扇控制


你知道雪为什么是白色的吗?因为她忘记了原来的颜色