ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:297.06KB ,
资源ID:21492821      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21492821.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计智能电风扇Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

课程设计智能电风扇Word文档下载推荐.docx

1、采用SPCE061A单片机采用凌阳16位的SPCE061A单片机,处理速度较慢,内置2K SRAM,32K FLASH,要实现稍大的存储量 受到限制,而如果扩展大量的外围电路的话,则降低了系统的可靠性,消耗了大量的CPU资源。采用STC89C52此方案采用STC89C52八位单片机实现。单片机软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制。而且体积小,硬件实现简单,安装方便。可以实现对DS18B20和直流电机的控制工作,编程技术及外围功能电路的配合使用都很成熟。综合考虑,选择STC89C52作为主控制器。2.3调速方式的选择采用PWM控制PWM是利用数字输出对模拟电路进行控制的

2、一种有效技术,尤其是在对电机的转速控制方面,可大大节省能量。PWM 具有很强的抗噪性,且有节约空间、比较经济等特点。采用可控硅控制实际中通过控制双向可控硅的导通角,使输出端电压发生改变,从而使施加在电风扇的输入电压发生改变,以调节风扇的转速,实现各档位风速的无级调速。从本设计要求综合考虑实际中选择方案一。2.4温度控制模块设计采用红外遥控器+红外遥控解码:红外遥控器的使用大大方便了用户,使他们可以在一定范围内实现对本系统的远程控制,符合当代人的生活习惯,而且红外遥控器的技术已经相当成熟,使用也比较方便。选用键盘:假如使用键盘,用户就只能走进本控制系统去控制该系统已完成自己想要的操作。此方案设计

3、与制作比较简单,且能完全完成既定功能。综合各方面因素,采用方案二。2.5显示电路的设计LCD1602液晶屏:LCD1602液晶屏是16*2的字符型液晶,可以显示英文26个字母的大小写,阿拉伯数字09,及一些简单的符号。该液晶屏操作简单,显示功能强大。数码管:虽然数码管的显示位数有限,且只能显示一些简单的字符。但是在本课程设计中,所需要的数码管不多,少量数码管即可符合设计要求,估可采用。方案三:LCD12864液晶屏:该液晶屏是比LCD1602液晶屏更先进的液晶,可以显示图片信息,同样可以完成本设计系统的需要。但是该液晶屏相对比较贵。综上所述,我们选择了数码管作为显示模块。3 系统简述本系统由集

4、成温度传感器、单片机、LED数码管、发光二极管、ULN2803驱动芯片、直流电机及一些其他外围器件组成。使用具有价廉易购的AT89S52单片机编程控制,通过修改程序可方便实现系统升级。系统的框图结构如下:人工控制图1 系统原理框图4 硬件设计系统主要部件包括DS18B20温度传感器、AT89S52单片机、ULN2803驱动芯片、四位LED数码管和直流电机。辅助元件包括发光二极管、电阻、晶振、电源、按键等。41、本系统各器件简介4、DS18B20 单线数字温度传感器简介DS18B20 单线数字温度传感器是Dallas 半导体公司开发的世界上第一片支持“一线总线”接口的温度传感器。它具有3 引脚T

5、O92 小体积封装形式。温度测量范围为-55+125,可编程为9 位12 位A/D 转换精度,测温分辨率可达0.0625。被测温度用符号扩展的16 位数字量方式串行输出。工作电压支持3V5.5V 的电压范围,既可在远端引入,也可采用寄生电源方式产生。DS18B20 还支持“一线总线”接口,多个DS18B20可以并联到3 根或2 根线上,CPU 只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。它还有存储用户定义报警温度等功能。DS18B20 内部结构及管脚DS18B20 内部结构如图所示,主要由4 部分组成:64 位ROM、温度传感器、非挥发的温

6、度报警触发器TH 和TL、配置寄存器。其管脚排列如图所示,DQ 为数字信号端,GND 为电源地,VDD 为电源输入端。412 AT89C52 单片机简介AT89C52 是一种带4K字节闪存可编程可擦除只读存储器(FPEROM)256B片内RAM的低电压,高性能CMOS8 位微处理器。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51 指令集和输出管脚相兼容。由于将多功能8 位CPU 和闪烁存储器组合在单个芯片中,ATMEL 的AT89C52 是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C52 单片机管脚AT89C52单片机管脚如图

7、3所示。图3 AT89C52单片机管脚各管脚功能:VCC:供电电压。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 口被外部下拉为低电平时,将输出电流,这是由于

8、内部上拉的缘故。在FLASH 编程和校验时,P1 口作为第八位地接收。P2 口:P2 口为一个内部上拉电阻的8 位双向I/O 口,P2 口缓冲器可接收,输出4 个TTL 门电流,当P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在FLASH 编程和校验时接收高八位地址信号和控制信号。P3 口

9、:P3 口管脚是8 个带内部上拉电阻的双向I/O 口,可接收输出4 个TTL 门电流。当P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3 口也可作为AT89C51 的一些特殊功能口。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 口同时为闪烁编程和编程

10、校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST 脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE 脉冲。如想禁止ALE 的输出可在SFR8EH 地址上置0。此时,ALE 只有在执行MOVX,MOVC 指令是ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE

11、禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。/EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1 时,/EA 将内部锁定为RESET;当/EA 端保持高电平时,此间内部程序存储器。在FLASH 编程期间,此引脚也用于施加12V 编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。41.3 八段LED 数码管本系统使用四个七

12、段LED数码管作为温度和风扇档位显示,公共阳极。41.4驱动芯片ULN2803 ULN2803, 8个NPN达林顿晶体管,连接在阵列非常适合逻辑接口电平数字电路(例如TTL,CMOS或PMOS上/ NMOS)和较高的电流/电压,如电灯,电磁阀,继电器,打印锤或其他类似的负载,广泛的使用范围:计算机,工业和消费应用。所有设备功能由集电极输出和钳位二极管瞬态抑制。 该ULN2803是专为符合标准TTL,而制造ULN2804适合6至15V的高级别CMOS或PMOS上。该电路为反向输出型,即输入低电平电压,输出端才能导通工作。42 各部分电路设计421 电源电路电源电路采用LM7805集成稳压器作为稳

13、压器件,用典型接法,220V电源整流滤波后送入LM7805稳压,在输出端接一个470U和0.1U电容进一步滤除纹波,得到5V稳压电源。电路如图4所示。图4 电源422 数码管显示电路数码管显示电路采用共阳极四位数码管以及9012三极管作为驱动数码管发亮。其连接方式如下:应用单片机P0口连接八段数码管,用P1口的P1.0P1.3四个端口作为数码管的片选信号输出端口,其中要用9012(PNP型)三极管做驱动。为了防止烧坏数码管,所以给数码管各段各加一个50k的限流电阻。要显示的数据通过P0口送给数码管显示,通过P1口的P1.0P1.3四个端口分别对数码管进行位选,事实上数码管是间断被点亮的,只是其

14、间断时间十分短,扫描周期在20ms以下,利用人眼视觉暂留,我们基本看不出它们的闪烁。图5 数码管显示电路423温度采集、控制模式设定以及复位电路电路如图6所示,这一部分主要是由DS18B20,四个按键。温度采集电路主要是由DS18B20构成,它可以把采集的温度数据转化成二进制数,经过单片机处理后输出送数码管显示。图6温度采集、控制模式设定以及复位电路 开关设定主要是通过按键K1来设定的。模式转换键由K2来完成,可以实现温度控制风速和手动设定风速的功能。手动设定风扇档位由K3、K4来完成,按一下K3键可以实现档位增一,而按下K4键可以实现档位减一。424 电机驱动电路驱动模块主要采用驱动芯片UL

15、N2803,PWM脉冲信息通过IO口P34输出,然后经过ULN2803时由1B7B输入至7C输出以驱动电机转动。电路如图7 电机驱动电路425开关、模式指示灯电路 分别通过P10P12作为开关、两个模式指示灯,按下开关键K1时,开关指示灯亮,表明DS18B20一开始工作,此时后三位显示相应温度;若此时按下模式一键K2,转为到温度控制风速功能,当达到相应温度范围,电机转速作相应改变;若按下模式二键K3,转为手动控制风速,此时可以分别按K3或者K4键,以控制档位。图8 开关、模式指示灯电路本系统的总电原理图为:图9 总电原理图5 软件设计程序实现的功能是按下开关键是,只有DS18B20工作,并在四

16、位数码管中的三位显示实时温度,精确度为小数点后一位。按下模式模式转换键K2时,开始运行温度自动控制风速功能,小于25度时电机不转,25度至27度时为一档,27至30度时为二档,30度至32度时为三档,32度以上时为四档。温度和档位对应的电机转速可以根据具体情况再作调整。温度显示由display_temp()子程序来完成。要实现根据当前温度实时的控制风扇的状态,需要在程序中不时的判断当前温度值是否超过设定的动作温度值范围,此部分功能由比较控制子程序DEAL(TEMP)来完成。由于单片机的工作频率高达12MHz,在执行程序时不断将当前温度和设定动作温度进行比较判断,当超过设定温度值范围时及时的转去

17、执行相应子程序,控制电机转速。显示驱动程序以查七段码取得各数码管应显数字,逐位扫描显示。而手动设置功能通过KEY()以及QUDONG()两个子程序来实现,先由KEY()程序来检测按下键位,转而检测到NUM记录的按键次数,次数又与相应档位对应,由档位控制QUDONG()程序,改变PWM占空比,控制电机转速。6 安装调试将本电路用硬件做出来,用编程器将KEIL软件对源程序编译生成的.HEX文件烧入AT89C52单片机,将单片机插入到目标板中,连好线。将“控制模式”开关选择在“温控”,打开电源,风扇工作在3档,数码管正常显示当前的温度31.6摄氏度,第四位数码管闪烁显示档位“3”,表示当前温度在30

18、和32值之间,没有欠温或超温。按手动设置键及“加”“减”键,档位能够相应作出变化,在1至4档之间自由转换,PWM占空比也相应发生变化,电机转速改变。测试结果表明,本系统实现了预期功能。附录1 程序流程图主程序流程图进入手动模式图11 主程序流程图附录2 源程序智能电风扇程序/*温控变速部分*/#includestdio.h#define uint unsigned int#define uchar unsigned charfloat f_temp;uint temp;uchar bai,shi,ge; /温度显示百、十、个位;uchar num=0,show_num=1,gao_num=1,

19、di_num=3;uint warnl1=270; /温度警示值;uint warnl2=250;uint warnh1=300;uint warnh2=320;uint flag,mode; /开关、模式转换标志;sbit wx1=P10; /温度显示位选;sbit wx2=P11;sbit wx3=P12;sbit wx_dang=P13; /风扇档位显示数码管位选;sbit led0=P20; /相关模式指示灯;sbit led1=P21;sbit led2=P22;sbit led3=P23;sbit modeswitch=P30; /模式转换标志;sbit on_off=P31; /

20、开关;sbit jia_key=P32; /档位增;sbit jian_key=P33; /档位减;sbit dianji=P34; /电机驱动端;sbit ds=P35; /DS18B20的DQ端;uchar code table= /共阴数码管;0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar code table_dot= /带小数点共阳数码管0x40,0x79,0x24, 0x30,0x19,0x12,0x02,0x78,0x00,0x10;uchar code table_dang= /风扇档位数码管;0xc0,0xcf,

21、0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void delay(uint z) /延时函数; uint x,y; for(x=z;x0;x-) for(y=20;yy-);void dsreset(void) /DS18B20复位,初始化函数 uint i; ds=0; i=103; while(i0) i-; ds=1; i=4;bit tempreadbit(void) /读一位数据函数 bit dat;i+; dat=ds; i=8; return(dat);uchar tempread(void) /读1个字节数据函数 uchar i,j,dat;

22、 dat=0; for(i=1;i=8;i+) j=tempreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在dat里 void tempwritebyte(uchar dat) /写入温度字节; uchar j; bit testb; for(j=1;j1; if(testb) ds=0; i+; ds=1; i=8;while(i else void tempchange(void) /DS18B20开始获取温度并转换 dsreset(); delay(1); tempwritebyte(0xcc); /写跳过读ROM指令 tempwritebyte(

23、0x44); /写温度转换指令uint get_temp() /读取寄存器中存储的温度数据 uchar a,b; tempwritebyte(0xbe); a=tempread(); /读取低8位 b=tempread(); /读取高8位 temp=b; temp temp=temp|a; f_temp=temp*0.0625; temp=f_temp*10+0.5; return temp;void display_dang() /档位显示函数; /wx_dang=1; P1 = 0x07; P0=table_dangshow_num; delay(2);display(uint temp)

24、 /显示温度; bai=temp/100; shi=temp/10%10; ge=temp%10; /wx1=1; P1 = 0x01; P0=tablebai; /显示百位; delay(3); wx1=0; P1 = 0x02; /wx2=1; P0=table_dotshi; /显示十位; wx2=0; P1 = 0x04; /wx3=1; P0=tablege; /显示个位; wx3=0;void dispose() /根据键盘按下情况决定档位数; switch(num) case 0: display(get_temp(); show_num=1; /一档,电机最慢; gao_num=0; di_num=4; break; case 1: display(get_temp(); show_num=2; gao_num=2; di_num=2; break; case 2: show_num=3; gao_num=3; d

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1