单片机课程设计报告-智能电风煽.doc_第1页
单片机课程设计报告-智能电风煽.doc_第2页
单片机课程设计报告-智能电风煽.doc_第3页
单片机课程设计报告-智能电风煽.doc_第4页
单片机课程设计报告-智能电风煽.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课题名称 智能电风煽 专 业 电子信息工程 班 级 学生姓名 学 号 指导老师 _ _ 摘 要本设计以80c52单片机作为智能电风扇控制系统的测量和控制核心。采用霍尔集成芯片测量电风扇的转速,pwm脉宽调制技术控制电机的转速,用ds18b20温度传感器来完成温度的采集,单片机通过串行通信来完成电风扇转速数据处理及转速控制,用液晶12864lcd显示来实现人机交互,采用红外遥控与接收装置来完成遥控功能。该系统风速调节范围宽、精度高且风的舒适度良好、使用起来非常方便。关键字:电风扇、单片机、lcd、无线遥控、ds18b20目 录一、题目的意义及功能要求.二、系统框架设计.三、硬件电路设计及描述四、软件流程及描述.五、源代码六、测试与分析.七、设计体会与总结.一、 题目意义及功能要求作为一种老式家电,电风扇具有价格便宜、摆放方便、体积轻巧等特点。由于大部分家庭消费水平的限制,电风扇作为一个成熟的家电行业的一员,尤其在中小城市,以及乡村将来一段时间内仍然会占有市场的大部分份额。 面临庞大的市场需要的同时,也要提高电风扇的市场竞争力。使之在技术含量上有所提高,应使风扇不仅功能多样,操作简便,而且更加安全可靠。 本设计主要目标是使普通的电风扇的功能更加强大,使操作简单化、智能化,主要实现以下几个部分的功能:1 温度智控功能:风扇可以感知环境的温度,以调节风扇的转速,达到更好的工作效果。用户可以选择这种智能调速方式,也可以选择手动设定方式来控制转速。当选择手动设定方式时,该功能不发挥作用。2多级调速功能:提供更多的风力级别和风型,提高用户的舒适度。3液晶显示功能:使用液晶屏显示当前室温,风扇的转速,风扇的工作模式,当前时间,风扇工作时间等参数,美观大方。4红外遥控功能:提供远距离非接触式的风扇控制操作。二、 系统框架设计1、方案比较a、风速转速测量方案一:采用脉冲调制的红外发射接收器。通过在电风扇一边用红外管发射脉冲信号,另一边接收信号,在脉冲被挡和通过的情况下,接收端分别对应低电平和脉冲串,可检出此信号的包络,其频率的三分之一即相当于单位时间内接收到信号的次数,也即电风扇的转速。但此方法接收到的脉冲会产生抖动,容易引起误判,从而导致处理接受信号次数出现较大误差,是电风扇转速计算不准确,故不采用此方案。方案二:采用霍尔集成传感器。霍尔集成传感器是将霍尔元件、放大器、施密特触发器以及输出电路集成在一块芯片上,为用户提供了一种简化和较完善功能的磁敏传感器。将磁片贴在电风扇叶上,将霍尔集成传感器固定在扇叶前的保护架上,由于霍尔效应,每当磁片通过传感器时,在输出端就会产生一个脉冲,对该输出脉冲计数,即可测出电风扇转速。此输出信号明快,传送过程中无抖动现象,且功耗低,对温度的变化稳定,灵敏度于磁场移动速度无关,用此方法测出的电风扇转速较准确,故采用此方案。b、转速控制转速控制既是通过控制功率来实现的。输入功率大转速快,输入功率小转速慢。通常调节功率的途径有两条:一是改变电压波形的导通角,称之为调相:另一个是波形不变改变其电压波出现的次数,常称为脉冲调功。方案一:采用调相方式。此方法的优点是输出相对的连续、均匀而且调节精细。但有一个很大的缺点就是不规则的脉冲电流会引起输出畸变及对负载产生干扰。方案二:采用脉冲调功方式。此方法的优点是线性度好、抗噪性能强、输出稳定便于微控制器控制。通过比较分析以及综合考虑系统的要求我们选择第二种方案。c、显示界面方案本系统要能够切换显示电风扇的转速、当前温度、当前挡位、工作模式等,要显示的内容较多。方案一:采用led显示。led只能显示非常有限的符号和数字,对于本系统如此复杂的功能是难以实现的。方案二:采用液晶12864lcd显示器。可以用中文显示较为清晰的内容,界面良好、直观。采用此方案来实现。d、无线控制方案一: 315无线模块采用平衡传输方式,可以实现多点通信,遥控距离远,但价格昂贵。方案二: rs-232是低速率串行单端标准,采取不平衡传输方式(即所谓单端通信),收、发端的数据信号是相对于信号地的电平而言,其共模抑制能力差,传送距离短,其为点对点的通信方式。方案三: 红外遥控体积小,灵敏度高,外接元件少,抗干扰能力强,使用十分方便.且价格便宜,缺点是遥控距离短,经综合考虑用在本系统上完全能够满足要求,所以我们选择此方案。2、系统总体框图设计 图1、系统总体框图三、硬件电路设计及描述:硬件电路主要分为主控电路及显示电路、红外接收电路、电机驱动电路、温度检测电路等四个部分。相关电路可以分为如下几个部分:3.1主控电路及显示电路 采用stc89s52单片机作为本系统的核心控制部分,既充分的利用了单片机的各引脚资源基础,又控制了成本。外加振荡电路采用12mhz高精度的晶振,以获得较稳定时钟频率,减小测量误差。复位电路采用按键电平复位电路。p0口作为液晶显示的数据口。具体电路如下图所示: 图2、主控电路及显示电路3.2红外接收电路 红外接收电路采取红外接收器件hs0038,一体化红外接收头hs0038价格便宜,外围电路简单,只有三个引脚,分别为电源、地、数据脚,其中数据脚与p3.2口相接,通过外部中断接收红外遥控信号。电路图如下: 3.3电机驱动电路 l298是sgs公司的产品,可驱动2个电动机,out1,out2和out3,out4之间可分别接电动机,本实验装置我们选用驱动一台电动机。5,7脚分别接单片机的p1.1和p1.2口,控制电机的正反转。ena,enb接控制使能端,由于我们只用来驱动一个电风扇的停转。所以用ena接单片机的p1.0口。电路图如下所示: 图4、电机驱动电路3.4温度检测电路 单线数字温度传感器ds18b20 采用一线总线接口,大大节省了系统的i/o 资源。 图5、温度检测电路四、 软件流程及描述智能电风煽支持手动和自动两种工作模式,开机时默认的工作模式为自动但总开关为关,我们可以通过红外遥控进行控制,当按下遥控器开关键把总开关打开时,电风扇进入自动工作模式,通过感知环境的温度,以调节风扇的转速,达到更好的工作效果。用户可以选择这种智能调速方式,也可以选择手动设定方式来控制转速。当选择手动设定方式时,该功能不发挥作用。系统在开机的同时lcd能显示出当前温度、工作模式、当前挡位等,让使用者及时了解系统运行前况。4.1系统软件框图 图6、系统软件框图4.2、ds18b20测温程序 ds18b20采用单线制数据传输,其内部数据采用两字节存储,其中高字节的低三位和低字节为温度数值大小,高字节的高五位为符号位。单片机温度采集程序流程图如下图。单片机不断通过ds18b20获取外界的温度值。 ds18b20温度采集程序流程图五、 源代码#include#include #define uchar unsigned char#define uint unsigned int#define lcd_data p0 / 液晶引脚定义sbit lcd_rs = p27; sbit lcd_rw = p26; sbit lcd_en = p25; sbit lcd_psb = p24; sbit dq=p16; / ds18b20引脚定义bittflag;sbit en=p10; / 电机引脚定义sbit c=p11;sbit d=p12;sbit jia_key=p30;/加速键sbit jian_key=p31;/减速键sbit zongza=p34; /总控制开关sbit xuan=p36; /模式选择按钮uint aa=0;uchar ms=0,temp,num=0,show_num=0,gao_num=1,di_num=3;ucharcodetable=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39 ;uchar code hang1=欢迎您使用;uchar code hang2=智能电风扇;uchar code hang3=当前温度:;uchar code hang4=度;uchar code hang5=当前档位:;uchar code hang6=档;uchar code hang7=开关状态:;uchar code hang8=开;uchar code hang9=关;uchar code hang10=工作模式:;uchar code hang11=自动;uchar code hang12=手动;void delay_ms(unsigned int ms)/延时函数 1msunsigned int i,j;for(j=0;j=ms;j+)for(i=0;i=120;i+); void delayus(uint t) while(t-);/*欢迎界面*void welcom(void) uchar i; lcd_wcmd(0x91);for(i=0;i10;i+) lcd_wdat(hang1i);delay_ms(100);delay_ms(100);lcd_wcmd(0x89);for(i=0;i10;i+) lcd_wdat(hang2i);delay_ms(100); delay_ms(100); delay_ms(1000); for(i=0;i2;i+)lcd_wcmd(0x08); /关显示delay_ms(700);lcd_wcmd(0x0c); /开显示delay_ms(700); /* ds18b20函数*void init_ds18b20(void) / 初始化ds18b20uchar n;dq=1;delayus(8);dq=0;delayus(80);dq=1;delayus(8);n=dq;delayus(4);void write_byte(uchar dat) /*写入一个字节 */uchar i;for(i=0;i=1;delayus(4); uchar read_byte(void) /读一个字节uchar i,value;for(i=0;i=1;dq=1;if(dq) value|=0x80;delayus(4);return value; uchar readtemperature(void)uchar a,b;uchar y1,y2,y3;init_ds18b20(); write_byte(0xcc);/跳过romwrite_byte(0x44);/启动温度测量delayus(300); init_ds18b20();write_byte(0xcc);/跳过romwrite_byte(0xbe); /读温度命令delayus(300);a=read_byte();/读低8位b=read_byte();/读高8位if(b&0x80)=0x80) /判断温度正负b=b; /负温度处理(ds18b20的负温度是正的a=a+1;y1=a4;/降低精度(去掉小数点)y2=b4;/降低精度(去掉小数点)y2=b4; /减小测量范围(-55c-99c)y3=y2|y1;tflag=1; return y3;/* 电机控制模块*void su_du_zhuan_huan() /根据速度标志进行数据处理switch(num)case 0: show_num=1;/数码管第一位显示的数据 gao_num=2;/pwm信号中高电平持续时间标志为1 di_num=6;/pwm信号中低电平持续时间标志为3, break;case 1: show_num=2;/数码管第一位显示的数据 gao_num=4;/pwm信号中高电平持续时间标志为2 di_num=4;/pwm信号中低电平持续时间标志为2 break;case 2: show_num=3;/数码管第一位显示的数据 gao_num=6;/pwm信号中高电平持续时间标志为3 di_num=2;/pwm信号中低电平持续时间标志为1 break;case 3: show_num=4;/数码管第一位显示的数据 gao_num=8;/pwm信号中高电平持续时间标志为4 di_num=0;/pwm信号中低电平持续时间标志为0 break;void qudong() /控制电机程序uchar i;if(di_num!=0)for(i=0;idi_num;i+)c=0; /实现pwm信号低电平输出display(); /利用显示函数起延时作用,这样也不影响数for(i=0;i38) num=3;else if(temp32) num=2;else if(temp26) num=1;else if(temp20) num=0;else en=0;/* 总开关控制*void sw(void)uchar i;if(zongza=0) delay_ms(5); /消抖if(zongza=0)aa+; while(zongza=0) ; /等待按键松开if(aa%2!=0) en=1;lcd_wcmd(0x8f); for(i=0;i2;i+) lcd_wdat(hang8i);delay4us(); if(aa%2=0) en=0;lcd_wcmd(0x8f); for(i=0;i2;i+) lcd_wdat(hang9i);delay4us(); /* 模式选择*void chose(void)if(xuan=0) delay_ms(5); /消抖if(xuan=0)ms+;if(ms=2) ms=0; while(zongza=0) ; /等待按键松开void main()/ 主函数uchar i;en=0;d=0; lcd_psb=1; / 选择显示模式为串行通信模式lcd_init(); /初始化液晶,清屏ddramwelcom();/欢迎界面lcd_wcmd(0x01);/清屏while(1)lcd_wcmd(0x01);/清屏temp=readtemperature(); /读取温度delay_ms(5);sw();chose();if(ms=0)wendu();lcd_wcmd(0x9e); for(i=0;i4;i+) lcd_wdat(hang11i);delay4us(); if(ms=1)key();lcd_wcmd(0x9e); for(i=0;i4;i+) lcd_wdat(hang12i);delay4us(); su_du_zhuan_huan();qudong();display(); /送12864显示delay_ms(5); clear_gdram();六、 测试与分析1、 测试仪器示波器:tektronix tds1002万用表:fluke 17b2、 指标测试转速测量转速设定值 转/分钟实测转速平均值转速跳变值9008901017001678122500248317330032792141004064

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论