单片机课程设计报告智能电风煽.doc

上传人:laozhun 文档编号:2390477 上传时间:2023-02-17 格式:DOC 页数:17 大小:400.50KB
返回 下载 相关 举报
单片机课程设计报告智能电风煽.doc_第1页
第1页 / 共17页
单片机课程设计报告智能电风煽.doc_第2页
第2页 / 共17页
单片机课程设计报告智能电风煽.doc_第3页
第3页 / 共17页
单片机课程设计报告智能电风煽.doc_第4页
第4页 / 共17页
单片机课程设计报告智能电风煽.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《单片机课程设计报告智能电风煽.doc》由会员分享,可在线阅读,更多相关《单片机课程设计报告智能电风煽.doc(17页珍藏版)》请在三一办公上搜索。

1、 课题名称 智能电风煽 专 业 电子信息工程 班 级 学生姓名 学 号 指导老师 _ _ 摘 要本设计以80C52单片机作为智能电风扇控制系统的测量和控制核心。采用霍尔集成芯片测量电风扇的转速,PWM脉宽调制技术控制电机的转速,用DS18B20温度传感器来完成温度的采集,单片机通过串行通信来完成电风扇转速数据处理及转速控制,用液晶12864LCD显示来实现人机交互,采用红外遥控与接收装置来完成遥控功能。该系统风速调节范围宽、精度高且风的舒适度良好、使用起来非常方便。关键字:电风扇、单片机、LCD、无线遥控、DS18B20目 录一、题目的意义及功能要求.二、系统框架设计.三、硬件电路设计及描述四

2、、软件流程及描述.五、源代码六、测试与分析.七、设计体会与总结.一、 题目意义及功能要求作为一种老式家电,电风扇具有价格便宜、摆放方便、体积轻巧等特点。由于大部分家庭消费水平的限制,电风扇作为一个成熟的家电行业的一员,尤其在中小城市,以及乡村将来一段时间内仍然会占有市场的大部分份额。 面临庞大的市场需要的同时,也要提高电风扇的市场竞争力。使之在技术含量上有所提高,应使风扇不仅功能多样,操作简便,而且更加安全可靠。 本设计主要目标是使普通的电风扇的功能更加强大,使操作简单化、智能化,主要实现以下几个部分的功能:1 温度智控功能:风扇可以感知环境的温度,以调节风扇的转速,达到更好的工作效果。用户可

3、以选择这种智能调速方式,也可以选择手动设定方式来控制转速。当选择手动设定方式时,该功能不发挥作用。2多级调速功能:提供更多的风力级别和风型,提高用户的舒适度。3液晶显示功能:使用液晶屏显示当前室温,风扇的转速,风扇的工作模式,当前时间,风扇工作时间等参数,美观大方。4红外遥控功能:提供远距离非接触式的风扇控制操作。二、 系统框架设计1、方案比较a、风速转速测量方案一:采用脉冲调制的红外发射接收器。通过在电风扇一边用红外管发射脉冲信号,另一边接收信号,在脉冲被挡和通过的情况下,接收端分别对应低电平和脉冲串,可检出此信号的包络,其频率的三分之一即相当于单位时间内接收到信号的次数,也即电风扇的转速。

4、但此方法接收到的脉冲会产生抖动,容易引起误判,从而导致处理接受信号次数出现较大误差,是电风扇转速计算不准确,故不采用此方案。方案二:采用霍尔集成传感器。霍尔集成传感器是将霍尔元件、放大器、施密特触发器以及输出电路集成在一块芯片上,为用户提供了一种简化和较完善功能的磁敏传感器。将磁片贴在电风扇叶上,将霍尔集成传感器固定在扇叶前的保护架上,由于霍尔效应,每当磁片通过传感器时,在输出端就会产生一个脉冲,对该输出脉冲计数,即可测出电风扇转速。此输出信号明快,传送过程中无抖动现象,且功耗低,对温度的变化稳定,灵敏度于磁场移动速度无关,用此方法测出的电风扇转速较准确,故采用此方案。b、转速控制转速控制既是

5、通过控制功率来实现的。输入功率大转速快,输入功率小转速慢。通常调节功率的途径有两条:一是改变电压波形的导通角,称之为调相:另一个是波形不变改变其电压波出现的次数,常称为脉冲调功。方案一:采用调相方式。此方法的优点是输出相对的连续、均匀而且调节精细。但有一个很大的缺点就是不规则的脉冲电流会引起输出畸变及对负载产生干扰。方案二:采用脉冲调功方式。此方法的优点是线性度好、抗噪性能强、输出稳定便于微控制器控制。通过比较分析以及综合考虑系统的要求我们选择第二种方案。c、显示界面方案本系统要能够切换显示电风扇的转速、当前温度、当前挡位、工作模式等,要显示的内容较多。方案一:采用LED显示。LED只能显示非

6、常有限的符号和数字,对于本系统如此复杂的功能是难以实现的。方案二:采用液晶12864LCD显示器。可以用中文显示较为清晰的内容,界面良好、直观。采用此方案来实现。d、无线控制方案一: 315无线模块采用平衡传输方式,可以实现多点通信,遥控距离远,但价格昂贵。方案二: RS-232是低速率串行单端标准,采取不平衡传输方式(即所谓单端通信),收、发端的数据信号是相对于信号地的电平而言,其共模抑制能力差,传送距离短,其为点对点的通信方式。方案三: 红外遥控体积小,灵敏度高,外接元件少,抗干扰能力强,使用十分方便.且价格便宜,缺点是遥控距离短,经综合考虑用在本系统上完全能够满足要求,所以我们选择此方案

7、。2、系统总体框图设计 图1、系统总体框图三、硬件电路设计及描述:硬件电路主要分为主控电路及显示电路、红外接收电路、电机驱动电路、温度检测电路等四个部分。相关电路可以分为如下几个部分:3.1主控电路及显示电路 采用STC89s52单片机作为本系统的核心控制部分,既充分的利用了单片机的各引脚资源基础,又控制了成本。外加振荡电路采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。复位电路采用按键电平复位电路。P0口作为液晶显示的数据口。具体电路如下图所示: 图2、主控电路及显示电路3.2红外接收电路 红外接收电路采取红外接收器件HS0038,一体化红外接收头HS0038价格便宜,外围电

8、路简单,只有三个引脚,分别为电源、地、数据脚,其中数据脚与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、温度检测电路四、

9、软件流程及描述智能电风煽支持手动和自动两种工作模式,开机时默认的工作模式为自动但总开关为关,我们可以通过红外遥控进行控制,当按下遥控器开关键把总开关打开时,电风扇进入自动工作模式,通过感知环境的温度,以调节风扇的转速,达到更好的工作效果。用户可以选择这种智能调速方式,也可以选择手动设定方式来控制转速。当选择手动设定方式时,该功能不发挥作用。系统在开机的同时LCD能显示出当前温度、工作模式、当前挡位等,让使用者及时了解系统运行前况。4.1系统软件框图 图6、系统软件框图4.2、DS18B20测温程序 DS18B20采用单线制数据传输,其内部数据采用两字节存储,其中高字节的低三位和低字节为温度数值

10、大小,高字节的高五位为符号位。单片机温度采集程序流程图如下图。单片机不断通过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; /

11、 电机引脚定义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 cod

12、e 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 de

13、layus(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); /开显示dela

14、y_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 v

15、alue; 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=

16、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信号中高电平持续

17、时间标志为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; /实现

18、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

19、);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_w

20、cmd(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_m

21、s(5); Clear_GDRAM();六、 测试与分析1、 测试仪器示波器:Tektronix TDS1002万用表:Fluke 17B2、 指标测试转速测量转速设定值 转/分钟实测转速平均值转速跳变值9008901017001678122500248317330032792141004064364900486139570056554565006451497300724852以900转/分钟为起始转速,以800转/分钟为变化步长,经反复测量取平均值并记录9组数据,从表中数据我们可以发现,误差随着转速的增大而变大。经本组成员的反复分析计算,最后发现引起误差的原因可能是因为霍尔传感器的不对秤以及

22、磁场变化等,并且误差比较小完全处于可接受范围之内,不会引响本系统的正常工作,没必要再加以改进。七、 设计体会与总结 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。回顾起此次单片机课程设计,我们感慨颇多,从选题到定稿,从理论到实践,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对红外发射与接收的不熟悉虽然遇到的困难很多,但经过我们组员之间的默契配合与合作最终都被一一解决,课程设计最终顺利完成了,从中我们也学到了合作的重要性。通过这次课程设计可谓从中受益匪浅,不知不觉地使我们的实践能力提高,为以后学习、工作打下基础!。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号