《基于.STM32自动洗衣机的课程设计的报告报告.docx》由会员分享,可在线阅读,更多相关《基于.STM32自动洗衣机的课程设计的报告报告.docx(14页珍藏版)》请在优知文库上搜索。
1、?嵌入式系统原理?课程设计报告题目学院(部)专业班级学生姓名学号指导教师(签字)目录题目3摘要3关键字3设计要求3第一章系统概述31总框图设计42实物图4第二章单元电路设计与分析51显示局部52PWM输出局部73按键控制局部8第三章主体代码12第四章完毕语18全自动洗衣机控制程序设计摘要:STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCorteX-M3内核。本次使用的是STM32F103“增强型”系列。增强型系列时钟频率到达72MHz,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mAMHz。工作原理:是通过改变输出方波的占空比
2、使负载上的平均电流功率从O-IO0%变化,从而改变直流减速电机速度。利用脉宽调制(PwM)方式,实现调速,它的优点是电源的能量功率,能得到充分利用,电路的效率高。关键字:占空比PWM输出控制STM32电机人机交互设计概述及基本要求用单片机编程实现洗衣机的控制过程,要求:1具有进水洗涤脱水等功能。2程序可选择其中一个功能执行。3通过电机转动时间比例实现洗涤强度控制功能。4通过洗涤时间和冲洗次数实现标准和经济选择功能。第一章系统概述1.1总框图设计根据设计要求,我们把设计主要分为四个模块:显示模块,直流减速电机转动模块,操控模块,安全响应模块。其原理图如下:实物图:系统简介:制开电源之后,电源指示
3、灯亮,屏幕显示:(SMARTWASHINGMACHINE);此时,按下KEYO进入标准洗涤模式(CLASSlcALMODEL),洗涤两遍.按下WKJP进入经济型洗涤模式.按下KEY1进入手动选择模式(HANDLEIloDEL),在此模式下,KEYO为选择遥控控制,遥控器上,3:进水(WATERIN),2:洗涤(WASHINGTlME),1,脱水(DEWATERING);同时,在手动控制中,也可以用按键操作:KEYl为洗涤;WK_UP为脱水.RESET为安全按钮,用于在高速脱水时的紧急停顿.全自动模式流程:1.EDI(Mt灯)亮,显示进水(WATERIN),进水大约20秒;进水完毕后LEDl熄灭
4、,电机间歇转动(WASHlNGTlIIE),显示洗涤;洗涤完毕后进展脱水,LED1闪烁且电机持续快速转动,显示脱水(DEWATERlNG);脱水完毕LEDl熄灭,洗衣过程完毕(FINlSHED),LED1短的亮起后熄灭表示洗衣完毕,屏幕显示(FINISHED).经济型模式与标准模式比照:标准模式共洗涤两遍.进水量,洗涤时间,在洗涤时电机转动时间以及脱水时间都较长.经济型模式只洗涤一遍,进水量小于标准模式,占空比大于标准模式,脱水时间小于标准模式,从而实现经济型洗涤模式.第二章单元电路设计与分析显示局部:此时为手动模式下进展脱水操作经济型洗涤中的洗涤操作相关代码:ul6POINT-COLOR=0
5、x0000,BACK_COLOR=OxFFFF;ul6DeviceCode;#ifLCD-FASTJO=1快速IO写存放器函数voidLCD_WR_REG(u8data)(1.CD_RS_CLR;写地址1.CD_CS_CLR;DATAOUT(data);1.CD_WR_CLR;1.CD_WR_SET;1.CD_CS_SET;)#else正常IO写存放器函数voidLCD_WR_REG(u8data)(1.CD_RS=0;写地址1.CD_CS=0;DATAOUT(data);1.CD_WR=0;1.CD_WR=1;1.CD_CS=1;)voidLED_Init(void)(RCC-APB2ENR
6、=1APB2ENR=1CRH&=OXFFFFFFFO;GPIOA-CRH=0X0000()003P8推挽输出GPIOA-ODR=1CRL&=OXFFFFFOFF;GPIOD-CRL=0X00000300PD.2推挽输出GPIOD-ODR=1APB1ENR=1CRL&=OXOFFFFFFF;/PA7输出GPIoACRL=0XB0000000;/复用功能输出GPIOA-ODR|=17;/PA7上拉TIM3-ARR=air;/设定计数器自动重装值TlM3-PSC=psc;预分频器不分频TIM3-CCMR1=7CCMR1=1CCER=1CRl=0x8000;/ARPE使能TIM3-CRl=0x01;使
7、能定时器3)控制局部:红外遥控:按键:相关代码:voidEXTIlJRQHandIer(VOid)u8res=O;u8OK=O;u8RODATA=O;while(l)(if(RDATA)W高脉冲出现(res=Pulse_Width_Check();获得此次高脉冲宽度if(res=250)break;/非有用信号if(res=200&resv250)0K=1;/获得前导位(4.5ms)elseif(res=85&res=50&res=10&resPR=11;去除中断标志位)处理红外键盘返回相应的键值u8Remote_Process(void)u8tl,t2;tl=Remote_Odr24;得到地
8、址码t2=(Remote_Odr16)&Oxff;得到地址反码RemOte_Rdy=0;去除标记if(tl=(u8)t2&tl=REMOTED)检验遥控识别码(ID)及地址(11=Remote_Odr8;t2=Remote_Odr;if(tl=(u8)-t2)returntl;处理键值)return0;)voidKEYJnit(Void)(RCC-APB2ENR=1CRL&=OXFFFFFFFO;/PAO设置成输入GPIOA-CRL=0X00000008;GPIoA-CRH&=OXOFoFFFFF;/PA13,IS设置成输入GPIOA-CRH=0X80800000;GPIOA-ODR=1ODR
9、=1KEY1KEY2!u8KEY-Scan(Void)(staticu8key_up=l;/俵键按松开标志JTAG_Set(JTAG_SWD_DISABLE);if(key_up&(KEY0=0|KEYl=0|KEV2=l)delay_ms(IO);去抖动key_up=O;if(KEYO=O)(JTAG_Set(SVVD_ENABLE);return1;)elseif(KEYl=O)(JTAG_Set(SWD_ENABLE);return2;)elseif(KEY2=l)(JTAG-Set(SVVD-ENABLE);return3;)elseif(KEYO=1&KEY1=1&KEY2=0)ke
10、y_up=1;JTAG_Set(SWD_ENABLE);returnO;/无按键按下)第三章主体代码intmain(void)u8key;u8t=0;u8dir=O;intn=2630,m=1000,p=500,i=100,w=l;ul6IedOpwmval=O;Stm32_Clocknit(9);系统时钟设置delay.init(72);延时初始化uart_init(72,9600);串口1初始化1.CDJnitO;初始化液晶1.EDJnitO;LED初始化Remote_Init();初始化红外接收PWMJnit(900,0);不分频。PWM频率=72000/900=8KhZKEYJnitO
11、;初始化与按键连接的硬件接口1.ED0_PWM_VAL=0;P0INT.C0L0R=RED;设置字体为红色1.CD.ShowString(30,70,*SMARTWASHINGMACHINE*);while(l)(t=KEY_Scan()/得到键值if(t)switch(t)1.CD.ShowString(60,120,CLASSICALMODEL*);1.CD.ShowString(60,150/*);while(m)delay.ms(10);LEDl=!LEDl;m;LCD.ShowString(60,190,*WATERIN);m=1000;dir=l;LEDO_PWM_VAL=ledO
12、pwmval=O;while(n)1.CD.ShowString(60,190,WASHINGTIME*);delay_ms(10);if(dir)IedOpwmval+;IedOpwmval+;IedOpwmval+;)elseIedOpwmval;IedOpwmval;IedOpwmval;if(IedOpwmval700)dir=0;if(IedOpwmval=O)dir=l;1.EDO_PWM_VAL=ledOpwmval;nn=2330;/while(i)LCD.ShowString(60,190,DEWATERING*);delay_ms(200);LEDl=!LED1;LEDO=!LEDO;LED0_PWM_VAL=900;while(i)delay-ms(10);LED0_PWM_VAL=led0pwmval=900;i;LCD_ShowString(60,190,*DEWATERING*);delay_ms(100);LEDl=!LEDl;i=100;脱水1000while(m)delay.ms(10);LEDl=!LEDl;m;LCD_ShowString(60,190,*WATERIN);m=1000;dir=l;LEDO_PWM_VAL=ledOpwmval=O;while(n)1.CD-ShowString(60,190JWASHINGTIME*