




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、智 能电风扇院 别: 电子信息学院 专 业: 应用电子 指导老师: 温锦辉 时 间:2014年8月27日 目录一、方案设计与论证31.1 整体方案比较和选择41.2 电源方案比较选择4二、MSP430F149单片机介绍61. 简单概述62、MSP430F149主要特点63 、MSP430F149 芯片引脚功能介绍7三、系统设计83.1 总体设计83.2 各单元模块功能介绍及电路设计;83.2.1接收电路模块83.2.2 电风扇驱动隔离电路93.2.3键盘模块103.2.4电源模块103.2.5 液晶模块11四、软件设计114.1 设计思路114.1.1 扫描键盘模块114.1.2 红外接收模块
2、124.2 软件流程图124.3 软件代码13五、 系统测试205.1 测试方法20六、谢 辞21七、附件227.1 MSP430开发板整体原理图227.3 实物图23八、参考文献24摘要本设计以MSP430F149单片机为核心控制模块,通过主从单片机之间的串行通信来完成电风扇转速数据处理、模式控制和转速控制等,采用PWM脉冲调制技术来控制风扇的转速,用键盘和LCD12864液晶显示来实现人机交互。该系统有电风扇的无级调速,并可以对电风扇的转速进行设置和转速的实时测试与显示、具有睡眠风、自然风等多种工作模式可以选择、能显示风扇转速、运行模式等等信息和实现定时自动开、关机等功能,系统结构简单,步
3、进小、精度高等优点。 关键词: 单片机 红外遥控 智能控制 风扇一、方案设计与论证 1.1 整体方案比较和选择 根据题目要求,智能电风扇需要u 温度智控功能:风扇可以调节风扇的转速,达到更好的工作效果。用户可以选择手动设定方式来控制转速。u 多级调速功能:提供更多的风力级别和风型,提高用户的舒适度。u 定时工作功能:该定时功能可以让用户自己定制风扇工作时间的长短,以提供更人性化的服务。u 液晶显示功能:使用液晶屏显示风扇的转速,风扇的工作模式。u 红外遥控功能:提供远距离非接触式的风扇控制操作。1.2 电源方案比较选择 根据要求,需要制作能够产生+5V和+3.3V的电压源。由于稳压芯 片的选择
4、不同有以下四种方案: 方案1: 采用LM7812、LM7805、LM7912稳压芯片,分别产生+12V、+5V、-12V的 恒定电压。+3.3V电压由TL431芯片,根据电阻分压产生。(如图1所示)。 方案优点:该方案硬件电路原理简单,在调试电路和使用电路时操作简单。都是独立输入电压后稳压到一定的值,所以电路相互干扰较小,灵活性高。 方案缺点:输出电流不是很大,所以驱动能力较弱。TL431输出电流较小,需要扩流电路,增加设计的工程量和复杂度。此外,消耗在各独立电路上的焦耳热很多,转换效率低。 图1 电源方案1电路设计框图方案2: 采用LM7912产生-12V电压,LT1805-5和LT1805
5、-3.3分别稳压达到+5V、 +3.3V。以LM7812的输出作为LM7805的输入,以LM7805的输出作为LT1805-3.3的输入。(如图5所示) 方案优点:该电路原理和制作都较简单,消耗的焦耳热较小,电流输出较大。 方案缺点:电路的独立性不强。需要四个散热片,在电路板上占用空间较大。 图5 方案2电路设计框图方案3: 使用MSP430开发板中的电源电路供电稳定,提供3V或5V。 方案优点:该方案中不需要外接电路,使用方便直接通过一根USB线就可以实现单片机下载,供电,通讯!操作简单,容易上手,输出功率足够大则带负载的能力强。消耗的焦耳热很少,提高了转换效率,而且灵活性很强。方案选定:基
6、于以上论证选择方案3 二、MSP430F149单片机介绍 1. 简单概述 MSP430F149芯片是美国TI公司推出的超低功耗微处理器,有60KB+256字节FLASH,2KBRAM,包括基本时钟模块、看门狗定时器、带3个捕获比较寄存器和PWM 输出的16位定时器、带7个捕获比较寄存器和PWM 输出的l6位定时器、2个具有中断功能的8位并行端口、4个8位并行端口、模拟比较器、12位AD转换器、2个串行通信接口等模块。2、MSP430F149主要特点 1)低功耗:电压1.83.6V低电压,RAM数据保持方式下耗电仅 0.1pA,活动模式下耗电 250pA/MIPS(MIPS:每秒百万条指令数),
7、I/O输入端口的漏电流最大仅50nA。 2)强大的处理能力:MSP430系列单片机采用了目前流行的精简指令集(RISC)结构,一个时钟周期可以执行一条指令,因此在8MHz晶振工作时,指令速度可达到8MIPS。 3)丰富的片上外围模块:MSP430系列单片机结合TI的高性能模拟技术,各成员都集成了较丰富的片内外设,具体到MSP430F149单片机有以下功能模块:看门狗(WDT),模拟比较器A,定时器A(Timer A),定时器B(Timer B),串口,1(USART0,1),硬件乘法器,液晶驱动器,12位ADC,直接数据存取(DMA),端口l-6(P1P6),基本定时器。 4)系统工作稳定:M
8、SP430系列单片机均为工业级器件,运行环境温度为-40一+85,运行稳定、可靠性高,所设计的产品适用于各种民用和工业环境。 5)方便高效的开发环境:因为器件片内有JTAG调试接口,还有可电擦写的FLASH存储器,因此采用先通过JTAG接口下载程序到FLASH内,再由JTAG接口控制程序运行、读取片内CPU状态,以及存储器内容等信息供设计者调试,整个开发(编译、调试)都可以在同一个软件集成环境中进行。 3 、MSP430F149 芯片引脚功能介绍 MSP430F149芯片设计时的封装方式为贴片式封装,64个引脚,引脚间距为0.5mm,单片机面积很小很难手工焊接,所以够买的是带有转接板的单片机,
9、贴片式的单片机转接成4列2*8排针的引脚,排针脚间距约为2.54mm,能与万能 板匹配。三、系统设计 3.1 总体设计 根据设计要求,电路的总体模块可以如下图3所示: 图3 总体设计电路模块框图人机接口包括红外遥控,键盘模块和LCD显示模块,实现电风扇与用户的信息交互; 液晶显示模块:用LCD12864作为显示部分,供电为3.3V; l时钟电路模块:由单片机MSP430F149高频8M定时器构成;3.2 各单元模块功能介绍及电路设计; 3.2.1接收电路模块 构成红外接收电路采取红外接收器件TL1838,通过遥控器的输入捕捉接收红外遥控信号。具体电路如下图4所示: 图4 红外接收模块3.2.2
10、 电风扇驱动隔离电路 由ULM2003驱动芯片构成电风扇的驱动电路。ULN2003A由7组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成,具有同时驱动7组负载的能力,为单片双极型大功率高速集成电路。驱动电路如下图2所示: 3.2.3键盘模块 独立键盘采用的是独立I/O口控制。3.2.4电源模块3.2.5 液晶模块LED显示接口电路LED显示模块接口与单片机通信采用模拟SPI方式,减少了单片机I/O口的消耗,同时使电路变的更简单。四、软件设计 4.1 设计思路 4.1.1 扫描键盘模块 键盘扫描程序就是扫描键盘看是否有键按下,如有键按下判断出是哪一个键,当确定按下某一个键后,即执行红外发
11、射程序。扫描的方法是判断P1口各位的电平,无按键按下时,各位均为高电平,当某一个按键按下以后,该位即为低电平。 4.1.2 红外接收模块 使用输入捕捉中断处理红外遥控信号,根据不同的红外编码,可以完 成调节风速,风型等功能。4.2 软件流程图 开始按键红外扫描是否有扫描信号执行功能结束4.3 软件代码#include #define uint unsigned int #define uchar unsigned char #define Ir_Pin (P1IN & 0X80) /定义红外接收头端口unsigned char Ir_Buf4; / 用于保存解码结果unsigned int I
12、r_Get_Low(); unsigned int Ir_Get_High();extern const unsigned char shuzi_table;#define LCD_DataIn P5DIR=0x00 /数据口方向设置为输入#define LCD_DataOut P5DIR=0xff /数据口方向设置为输出#define LCD2MCU_Data P5IN#define MCU2LCD_Data P5OUT#define LCD_CMDOut P4DIR|=0x0F /P3口的低三位设置为输出#define LCD_RS_H P4OUT|=BIT0 /P3.0#define L
13、CD_RS_L P4OUT&=BIT0 /P3.0#define LCD_RW_H P4OUT|=BIT1 /P3.1#define LCD_RW_L P4OUT&=BIT1 /P3.1#define LCD_EN_H P4OUT|=BIT2 /P3.2#define LCD_EN_L P4OUT&=BIT2 /P3.2#define LCD_PSB_P P4OUT|=BIT3#define LCD_PSB_S P4OUT&=BIT3 void hw(void);void ajxs(void);void Delay_1ms(void);void Delay_Nms(uint n);void D
14、elay(unsigned int n);void Write_Cmd(unsigned char cod);void Write_Data(unsigned char dat);void Ini_Lcd(void);void Disp_HZ(unsigned char addr,const unsigned char * pt,unsigned char num);void Disp_HZ1(uchar addr1,const uchar * pt1,uchar num1);void Disp_ND(unsigned char addr,unsigned int thickness);voi
15、d Draw_TX(unsigned char Yaddr,unsigned char Xaddr,const unsigned char * dp) ; void Draw_PM(const unsigned char *ptr);void Disp_HZs(void);unsigned int temp,delay;char i,j;uchar tme=0,s=0,s1=0,w,w1,sws,sw1s,gws,gw1s;int gw,sw,gw1,sw1,g=0,a=1;const uchar hang1 = 智能风扇 ; uchar hang2 = 模式: ; uchar hang3 =
16、 档位: ; uchar hang4 = 定时:00:00 ;const uchar hang5 = 0,1,2,3,4,5,6,7;/,8,9,a,b,c,d,e,f; /* 函数名称:main功 能:主函数 参 数:无 返回值 :无 */void main(void) volatile unsigned int i; WDTCTL = WDTPW + WDTHOLD; BCSCTL1 &= XT2OFF; / XT2on do IFG1 &= OFIFG; / Clear OSCFault flag for (i = 0xFF; i 0; i-); / Time for flag to s
17、et while (IFG1 & OFIFG); / OSCFault flag still set? BCSCTL2 |= SELM_2 + SELS; / MCLK= SMCLK= XT2 (safe) /*设置P1.01为中断引脚*/ P1DIR &=(BIT0+BIT1+BIT3+BIT4+BIT5+BIT6); / 输入设置 P1IE |=(BIT0+BIT1+BIT3+BIT4+BIT5+BIT6); / 允许P1的12可以中断 高到低设为1 P1IES |=(BIT0+BIT1+BIT3+BIT4+BIT5+BIT6); / 设置下降沿中断 LCD_PSB_P; /初始化液晶 I
18、ni_Lcd(); /开启全局中断 TBCCR0=0XFFFF; P1DIR=0X00; / 输入设置 /*设置定时器初始化*/ CCTL0 = CCIE; /设置捕获/比较控制寄存器中CCIE位为1,CCR0捕获/比较功能中断为允许。 CCR0 = 50000; /捕获/比较控制寄存器CCR0初值为5000。 TACTL = TASSEL_2 + MC_2; /设置定时器A控制寄存器TACTL,使时钟源选择为SMCLK辅助时钟。 /*设置pwm初始化*/ TACTL = TASSEL0 + TACLR; / ACLK, 清除 TAR CCR0 = 512-1; / PWM周期 CCTL1 =
19、 OUTMOD_7; CCR1 = 0; / 占空比 384/512=0.75 CCTL2 = OUTMOD_7; CCR2 = 128; / 占空比128/512=0.25 P1DIR |= 0x04; / P1.2 输出 P1SEL |= 0x04; / P1.2 TA1 P2DIR |= 0x01; / P2.0 输出 P2SEL |= 0x01; / P2.0 TA2 TACTL |= MC0; / Timer_A 增计数模式 Disp_HZ1(0x80,hang1,16); Disp_HZ(0x90,hang2,8); Disp_HZ(0x88,hang3,8); Disp_HZ1(
20、0x98,hang4,16); /_BIS_SR(LPM0_bits + GIE); /进入低功耗模式LPM0和开中断 _BIS_SR(GIE); / 只开开中断 /LPM4; /进入低功耗模式 while (1) restart: while(Ir_Pin)ajxs(); /等待红外信号 temp=Ir_Get_Low(); if(temp9500) continue; /引导脉冲低电平9000 temp=Ir_Get_High(); if(temp5000) continue; /引导脉冲高电平4500 for(i=0;i4;i+) /4个字节 for(j=0;j8;j+) /每个字节8位
21、 temp=Ir_Get_Low(); if(temp800) goto restart; temp=Ir_Get_High(); if(temp2000) goto restart; Ir_Bufi=1; if(temp1120) Ir_Bufi|=0x80; if(Ir_Buf2=0X43)tme=1; /如果按的是0按键则点亮LED if(Ir_Buf2=0X15)tme=2; /如果按的是CH-按键则关闭LED ajxs(); /*函数名称:Delay_1ms功 能:延时约1ms的时间参 数:无返回值 :无*/void Delay_1ms(void)uchar i; for(i = 1
22、50;i 0;i-) _NOP(); /*函数名称:Delay_Nms功 能:延时N个1ms的时间参 数:n-延时长度返回值 :无*/void Delay_Nms(uint n) uint i; for(i = n;i 0;i-) Delay_1ms();/* 函数名称:Init_Clk功 能:初始化系统钟为XT2 外部8M参 数:无 返回值 :无 */ void Init_Clk(void) uchar i; BCSCTL1&=XT2OFF; /打开XT振荡器 do IFG1 &= OFIFG; /清除振荡错误标志 for(i = 0; i 100; i+) _NOP(); /延时等待 wh
23、ile (IFG1 & OFIFG) != 0); /如果标志为1继续循环等待 IFG1&=OFIFG; BCSCTL2|=SELM1+SELS; /MCLK 8M and SMCLK 1M /*函数名称:Write_Cmd功 能:向液晶中写控制命令参 数:cmd-控制命令返回值 :无*/void Write_Cmd(uchar cmd) uchar lcdtemp = 0; LCD_RS_L; LCD_RW_H; LCD_DataIn; do /判忙 LCD_EN_H; _NOP(); lcdtemp = LCD2MCU_Data; LCD_EN_L; while(lcdtemp & 0x8
24、0); LCD_DataOut; LCD_RW_L; MCU2LCD_Data = cmd; LCD_EN_H; _NOP(); LCD_EN_L;/*函数名称:Write_Data功 能:向液晶中写显示数据参 数:dat-显示数据返回值 :无*/void Write_Data(uchar dat) uchar lcdtemp = 0; LCD_RS_L; LCD_RW_H; LCD_DataIn; do /判忙 LCD_EN_H; _NOP(); lcdtemp = LCD2MCU_Data; LCD_EN_L; while(lcdtemp & 0x80); LCD_DataOut; LCD
25、_RS_H; LCD_RW_L; MCU2LCD_Data = dat; LCD_EN_H; _NOP(); LCD_EN_L;/*函数名称:Ini_Lcd功 能:初始化液晶模块参 数:无返回值 :无*/void Ini_Lcd(void) LCD_CMDOut; /液晶控制端口设置为输出 Delay_Nms(500); Write_Cmd(0x30); /基本指令集 Delay_1ms(); Write_Cmd(0x02); / 地址归位 Delay_1ms(); Write_Cmd(0x0c); /整体显示打开,游标关闭 Delay_1ms(); Write_Cmd(0x01); /清除显
26、示 Delay_1ms(); Write_Cmd(0x06); /游标右移 Delay_1ms(); Write_Cmd(0x80); /设定显示的起始地址/*函数名称:Disp_HZ功 能:控制液晶显示汉字参 数:addr-显示位置的首地址 pt-指向显示数据的指针 num-显示字符个数返回值 :无*/void Disp_HZ(uchar addr,const uchar * pt,uchar num) uchar i; Write_Cmd(addr); for(i = 0;i (num*2);i+) Write_Data(*(pt+); /*函数名称:Disp_HZ1功 能:控制液晶显示汉
27、字参 数:addr-显示位置的首地址 pt-指向显示数据的指针 num-显示字符个数返回值 :无*/void Disp_HZ1(uchar addr1,const uchar * pt1,uchar num1) uchar i; Write_Cmd(addr1); for(i = 0;i (num1*1);i+) Write_Data(*(pt1+); /* 函数名称:INT_interrupt功 能:外部中断控制LED闪烁加速或减速参 数:无 返回值 :无 */中断程序#pragma vector = PORT1_VECTOR_interrupt void INT_interrupt(voi
28、d) if (P1IFG&0X7b)=BIT0) Delay_Nms(2000); tme=1; else if(P1IFG&0X7b)=BIT1) tme=2; else if(P1IFG&0X7b)=BIT3) tme=3; else if(P1IFG&0X7b)=BIT4) tme=4; else if(P1IFG&0X7b)=BIT5) tme=5; else if(P1IFG&0X7b)=BIT6) tme=6; P1IFG=0; /* 函数名称: Timer_A (void)功 能:定时器参 数:无 返回值 :无 */#pragma vector=TIMERA0_VECTOR_in
29、terrupt void Timer_A (void) w+; if(w=2) w=0; if(w1=1) if(gw1s=0) hang410- ; Disp_HZ1(0x98,hang4,16); if(hang410= 0) if(sws=1&gws=1&sw1s=1&hang410=0) gw1s=1; w1=0; CCR0 = 100; CCR1 = 0; hang410=9; if(gw1s=1) hang410=0; if(sw1s=0) hang49 -; Disp_HZ1(0x98,hang4,16); if(sws=1&gws=1&hang49=0) sw1s=1; if(
30、hang49=0) hang49=5; if(sw1s=1) hang49=0; if(gws=0) hang47 - ; Disp_HZ1(0x98,hang4,16); if(sws=1&hang47 =0) gws=1; hang47 =0; if(hang47 =0) / hang47= 9 ; if(gws=1) hang47 =0; if(sws=0) hang46 -; Disp_HZ1(0x98,hang4,16); if(hang46=0) / hang46=0 ; sws=1; /* 函数名称:Ir_Get_Low功 能:计算低电平持续的时间参 数:无 返回值 :TAR*/
31、unsigned int Ir_Get_Low() TBR=0X0000 ; TBCTL|=TBSSEL1 + TBCLR + ID0 +ID1 + MC0; while(!Ir_Pin & (TBR&0x8000)=0); /等待高电平到来 TBCTL=0X00; return TBR; /* 函数名称:Ir_Get_High功 能:计算高电平持续的时间参 数:无 返回值 :TAR*/unsigned int Ir_Get_High() TBR=0X0000; TBCTL|=TBSSEL1 + TBCLR + ID0 +ID1 + MC0; while(Ir_Pin & (TBR&0x8000)=0); TBCTL=0X00; return TBR; void ajxs(void) /按键显示处理功能函数 if (tme=1) tme=0; s+; if(s=2)s=0; if(s=0) uchar hang2 = 模式:自然风 * ; Disp_HZ(0x90,hang2,8); if(s=1) uchar hang2 = 模式:睡眠风 ; Di
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训公司托管合同协议
- 商铺物业服务协议合同
- 少儿保险合同协议
- 高空吊篮租赁合同协议
- 园林栽培土出售合同协议
- 工业气体销售合同协议
- 矿山工程收购合同协议
- 我的愿望小班课件
- 团队聚餐趣味互动指南
- 高端全屋定制合同协议
- 网络设备安全配置表
- GB/T 700-2006碳素结构钢
- GB/T 28732-2012固体生物质燃料全硫测定方法
- GB/T 17214.1-1998工业过程测量和控制装置工作条件第1部分:气候条件
- 猪生殖器官(课堂PPT)
- 2023年广东学位英语试题学位英语考试真题(含答案)
- 《旅行社经营管理》考试复习题库及答案
- 粤教版五年级下册科学知识点
- 危大工程巡视检查记录表(深基坑)
- 《最好的未来》合唱曲谱
- GB∕T 36765-2018 汽车空调用1,1,1,2-四氟乙烷(气雾罐型)
评论
0/150
提交评论