项 目 立 项 书
项目名称: 模拟电风扇控制系统设计
承担部门: 天津农学院机电工程系测控一班
项目负责人: 王想、罗宇、张志东 立项时间: 2012.5
3
摘 要
本项目主要研究内容为电风扇控制系统。电扇作为降温的工具有着自己本身的特点,虽然没有空调那样的直接效果,但是它有着自己的有点,仍然是不可替代的。 本项目以8051单片机为主体控制电风扇的各项功能,其中还用到数码晶体管、矩阵键盘、直流小电机等。
4
一、绪论
1、研 究 内 容 提 要
电风扇的主要部件是:交流电动机。其工作原理是:通电线圈在磁场中受力而转动。能量的转化形式是:电能主要转化为机械能,同时由于线圈有电阻,所以不可避免的有一部分电能要转化为热能。
电风扇曾一度被认为是空调产品冲击下的淘汰品,其实并非如此,市场人士称, 家用电风扇并没有随着空调的普及而淡出市场,近两年反而出现了市场销售复苏的态势。其主要原因:一是风扇和空调的降温效果不同——空调有强大的制冷功能,可以快速有效地降低环境温度,但电风扇的风更温和,更加适合老人儿童和体质较弱的人 使用;二是电风扇有价格优势,价格低廉而且相对省电,安装和使用都非常简单。如今的电风扇已一改人们印象中的传统形象,在外观和功能上都更追求个性化,而电脑控制、自然风、睡眠风、负离子功能等这些本属于空调器的功能,也被众多的电风扇厂家采用,并增加了照明、驱蚊等更多的实用功能。这些外观不拘一格并且功能多样的产品,预示了整个电风扇行业的发展趋势。
图1
3
2、主要研究内容
2.1 、用4位数码管实时显示电风扇的工作状态,最高位显示风类:“自然风” 显示“ 1”、 “常风” 显示“2”、“睡眠风” 显示“3”。后3位显示定时时间:动态倒计时显示剩余的定时时间,无定时显示“000”。
2.2、设计 “自然风”、 “常风”和“睡眠风” 三个风类键用于设置风类; 设计一个“定时”键,用于定时时间长短设置; 设计一个“摇头” 键用于控制电机摇头。
3、主要要求
3.1、用一个直流小电机模拟电风扇电机,按下相应的风类键,电机工作在相应状态:“自然风”运行时PWM的占空比为1:3;“睡眠风”运行时PWM的占空比为1:5;“常风”运行时PWM的占空比为3:1。
3.2、每按一次“定时”键,定时时间增加2分钟,工作过程如下:
图2
3.3、 用直流小电机模拟风扇摇头机构,按下“摇头” 键,“摇头”电机先正转30ms,再反转30ms,如次往复。
二、系统设计总体方案
1、 设计方案特点
1.1、初始加电时,电风扇不加电,四位数码显示器不显示,只有按下“自然风”、 “常风”和“睡眠风”任一按键,电风扇开始工作。同时,定时器只要不进行新的时间设置,电路就将按系统默认控制负载定时工作的时间方式自动开始运行。
1.2、电路允许用户随时通过按键开关自行输入设置新的定时时间参数,每按一次自动增加2分钟。
1.3、在进行时间参数设置和整个定时过程中,系统采用四位数码管显示,最高位显示风类,后三位显示定时时间,做“百位、十位、个位”的倒计时显示,同时用数码管上小数点的同步闪亮作为秒显示,显示直观、准确。
4
1.4、在整个定时状态下,电路具有允许用户随时自行选择使用“自然风”状态,也可选择使用“常风”和“睡眠风”状态。
1.5、按下“摇头”键,“摇头”电机先正转30ms,再反转30ms,如此往复。
2、 关于最小系统ATC51
ATC51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位处理器和ISP Flash存储单元,功能强大的微型计算机的ATS51可为许多嵌入式控制应用系统提供高性价比的解决方案。
ATS51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,ATS51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。ATS51单片机的基本结构和外部引脚如图3所示
图3
ATS51单片机的各引脚功能如下: VCC:供电电压。
3
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
I/O口作为输入口时有两种工作方式即所谓的读端口与读引脚读端口时实际上并不从外部读入数据而是把端口锁存器的内容读入到内部总线经过某种运算或变换后再写回到端口锁存器只有读端口时才真正地把外部的数据读入到内部总线上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作这是由硬件自动完成的不需要我们操心1然后再实行读引脚操作否则就可能读入出错为什么看上面的图如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q^为1加到场效应管栅极的信号为1该场
4
效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1若先执行置1操作则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入由于在输入操作时还必须附加一个准备动作所以这类I/O口被称为准双向口S51的P0/P1/P2/P3口作为输入时都是准双向口接下来让我们再看另一个问题从图中可以看出这四个端口还有一个差别除了P1口外P0P2P3口都还有其他的功能
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
三、系统硬件设计
该系统已ATC51单片机为核心,由电源电路,时钟电路,复位电路,显示电路,键盘,电机组成。图4是系统硬件电路图。
3
GNDVCCC1U222p191P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617234567XTAL1RP1X1C222pVCCCRYSTAL18XTAL2R110k9RSTC310u293031k2k3PSENALEEAp1.4p1.5p1.6p1.7k0k1p1.0k4k5k6k7p1.0p1.1p1.2p1.3p1.4p1.5p1.6p1.712345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7ATC51VCC9571012611115IN1IN2IN3IN4ENAENBVCC4VSOUT1OUT2OUT3OUT4GND8U1231314+88.8p1.1k8k9kAkBVCCp1.2kCkDkEkFp1.3R21kR31kR41kR51kVCCSENSASENSBL298 图4
3.1、单片机复位电路和时钟电路 复位电路:
首先形成单片机最小系统,在C51单片机芯片XTAL1、XTAL2加入时钟电路,RST加入复位电路,EA加入高电平。
80C51的复位是由外部的复位电路来实现的。复位电路分为上电复位和手动复位,我们采用的是上电+手动复位,正常工作时按下S1键,9脚变成高电平,单片机复位,按键松开,通过电容放电,9脚回到低电平。 时钟电路:
80C51单片机的时钟信号通常有两种方式产生:一是内部时钟方式,二是外部时钟方式。
采用内部时钟方式:80C51单片机各功能的运行都是时钟控制信号为基准,有条不紊的工作。因此,时钟频率直接影响单片机的速度,始终电路的质量也直接影响单片机系统的稳定性。
4
外部时钟方式时把外部已有的时钟信号引入到单片机内,此方式常用与多片80C51单片机同时工作,以便于各单片机的同步。
3.2、L298芯片
L298是SGS公司的产品,比较常见的是15脚Multiwatt封装的L298N,内部同样包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7 V电压。4脚VS接电源电压,VS电压范围VIH为+2.5~46 V。输出电流可达2.5 A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。EnA,EnB接控制使能端,控制电机的停转。实物如图5。
图5
3.3、直流电机
直流电机是一种能实现机电能量转换的电磁装置,它能使绕组在气隙磁场中旋转感生出交流电动势,并依靠换向装置,将此交流电变为直流电。其产生交流电的物理根源在于,电机中存在磁场和与之有相对运动的电路,即气隙磁场和绕组。旋转绕组和静止气隙磁场相互作用的关系可通过电磁感应定律和电磁力定律来分析。
3
四、系统软件设计
程序框图
主程序
初始化
显示
自然风键按 下吗? N
常风键按下
吗?
N
睡眠风键按
下吗?
N 定时键按下吗? Y 置占空比1:3 Y 置占空比3:1 Y 置占空比1:5 4
开定时器0中断 定时键计数器加1 定时时间加10MS 定时计数器=100S? 定时计数器清0 定时时间清0 清标志位
3
定时器T0中断程序
关中断 置初值
置初值
1S到了吗 Y
定时时间减1秒
定时时间到了吗
Y
关中断
开中断 电机停 显示— 中断返回 4
定时器T1中断程序
关中断
电机控制位高电平吗 N 标志位为1 N
置标志位
Y Y 标志位为1 N Y 置标志位
中断返回 开中断 置定时器1初值 置定时器1初值 清标志位 清标志位 电机控制位取反 电机控制位取反 占空比的要求达到 占空比的要求达到 3
附录: 程序清单
#include #define uint unsigned int #define uchar unsigned char uchar code {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code wind_pwm[3][2]={{3,9},{2,10},{9,3}}; uchar m=0,wind_kind=0,shake=0,z=0,x=0; uint time=0,n=0; sbit shake_left=P3^6; sbit shake_right=P3^7; sbit fan=P3^5; sbit Y1=P2^3; sbit Y2=P2^2; sbit Y3=P2^1; sbit Y4=P2^0; ///////////////////////////////延时 4 led[10]= void delay(void) { uchar i,j; for(i=0;i<125;i++) j=i; } ////////////////////////// void delays(void) { uchar a,b; for(a=0;a<250;a++) b=a; } ///////////////////////////////键盘扫描 uchar key_scan() { uchar sccode,recode; P1=0XF0; if((P1&0xf0)!=0xf0) { delay(); if((P1&0xf0)!=0xf0) { sccode=0xfe; 3 while((sccode&0x10)!=0) { P1=sccode; if((P1&0xf0)!=0xf0) { recode=(P1&0xf0)|0x0f; while((P1&0xf0)!=0xf0) ; return((~sccode)+(~recode)); } else sccode=(sccode<<1)|0x01; } } } return(0); } /////////////////////////////显示 void display() { uint ge,shi,bai; ge=time%10; 4 shi=(time%100)/10; bai=time/100; P0=led[ge];Y1=0;Y2=1;Y3=1;Y4=1;delays(); P0=led[shi];Y1=1;Y2=0;Y3=1;Y4=1;delays(); P0=led[bai];Y1=1;Y2=1;Y3=0;Y4=1;delays(); P0=led[wind_kind];Y1=1;Y2=1;Y3=1;Y4=0;delays(); } ////////////////////////////////////////主程序 main() { P2=0Xff; P1=0xf0; P3=0xff; TMOD=0x11; TH0=0xdc; TL0=0x00; TH1=0xdc; TL1=0x00; TR0=0; EA=1; 3 ET0=1; TR1=0; ET1=1; while(1) { switch(key_scan()) { case 0x11:wind_kind=1;break; case 0x21:wind_kind=2;break; case 0x41:wind_kind=3;break; case 0x81:{x=(x+1)%6;time=x*120;}break; case 0x12:shake=(shake+1)%2;break; default:break; } if(time!=0) { TR0=0; TR1=1;} else{TR0=1; TR1=0; } display(); } } 4 ////////////////////////////////////////// 显示定时中断 void xianshi() interrupt 3 using 3 { TH1=0XDC; TL1=0X00; z++; m=(m+1)%12; n=(n+1)%1000; if(z==100) { time--; z=0; } if(m 3 else {shake_left=1;shake_right=0;} } /////////////////////////////////////////电机非定时中断 void dianji() interrupt 1 using 1 { TH0=0XDC; TL0=0X00; m=(m+1)%12; n=(n+1)%1000; if(m if(n<500){shake_left=1 ;shake_right=0;} else {shake_left=0;shake_right=1;} } else {shake_left=1;shake_right=0;} } 4 3 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- jqkq.cn 版权所有 赣ICP备2024042794号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务