您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 电风扇模拟控制系统设计-(2)
1单片机原理与应用课程设计院(系):工业中心班级:106001姓名:王永安100203120路体力100201114指导老师:王党利时间:2013.07.072目录一、设计题目............................................................4二、总体方案设计及分析..................................................4三、硬件原理图设计......................................................4四、软件流程图及程序设计................................................6五、设计总结和心得体会..................................................133摘要本次课程设计通过keilC软件和Proteus软件设计一个电风扇模拟控制系统设计。基于AT89C51芯片实现了用四位数码管实时显示电风扇的工作状态,最高位显示风类:“自然风”显示“1”、“常风”显示“2”、“睡眠风”显示“3”。后3位显示定时时间:动态倒计时显示剩余的定时时间,无定时显示“000”。设计一个“定时”键,用于定时时间长短设置;设置一个“摇头”键用于控制电机摇头。设计过热检测与保护电路,若风扇电机过热,则电机停止转动,电机冷却后电机又恢复转动。最终完成了设计任务。关键词:AT89C51keilC软件Proteus软件4一、设计题目:电风扇模拟控制系统设计1、用4个LED显示电风扇的工作状态(1,2,3,4四档风力),显示风类:“自然风”、“常风”和“睡眠风”。2、设计“自然风”、“常风”和“睡眠风”三个风类键用于设置风类;设计一个“摇头”键用于控制电机摇头。3、设计一个“定时”键,用于定时时间长短设置;4、设计过热检测与保护电路,若电风扇电机过热,则电机停止转动,蜂鸣器报警,电机冷却后电机又恢复转动。5、用LCD作为用户界面显示风扇运行模式等信息。6、其他功能。二、总体方案设计分析、讨论1、程序说明:为了提高单片机的工作效率,不让单片机的工作消耗在延时上,所以在考虑单片几需要延时的时间里,单片机并不是做的无用功,仅仅是在执行消耗时间的“空指令”,而根据实际考虑出发,从本程序设计的思路来看,电机除了数码管显示和PWM调速部分需要一定延时外,其他指令都是uS级的,可以忽略不计,所以可以将数码管显示和PWM调速部分做在一起,即数码管每一位显示需延时的几个毫秒的时间可以用来做处理PWM调速功能使用,通过设定,改变脉宽从而调速!经过实验,本方法能够十分有效的节约单片机的资源,并且各项功能能够很好的工作!2、程序功能说明:功能总共有三个按键控制“功能键/加”、“定时”、“摇头/减”,其中“功能键”“摇头”为多功能键。初始状态时:风扇不转;数码管显示POFF;当第一次按“功能/加”时风扇处于“自然风”电机转速最快;当第二次按“功能/加”时风扇处于“常风”电机转速为中速;当第三次按“功能/加”时风扇处于“睡眠风”电机转速为低速;当风扇处于停止状态时不可进入定时状态,只有当风扇运转时才能进入定时状态,当按下“定时”键进入定时状态后(定时指示灯亮),功能键/加键为定时时间加,当按下“摇头/减键时,为定时时间减,再次按下定时键时,定时功能启动,时间到停止,并显示“POFF”风扇运转时按下摇头,即电机开始摇头。5三、硬件原理图:该图是通过proteus7.0仿真设计和模拟的结果P0P1P2P3P0P1P2P3d1d2d3d4d5d6d7d8d1d2d3d4weiweiduand2d3d4d5d6d7d8duanXTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C521B11C162B22C153B33C144B44C135B55C126B66C117B77C10COM9U4ULN2003AD03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE11U274HC373D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE11U374HC373R110kR210kR310kR4500R5500R610kR710kR810k6电风扇硬件控制系统四、软件流程图及程序设计*************************************************************************/#includereg52.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintsbitled=P1^0;sbitduan=P2^6;sbitwei=P2^7;sbitk1=P3^6;//功能键/加键(3)sbitk2=P3^4;//定时功能键(1)sbitk3=P3^5;//摇头键/减键sbitpwm=P2^1;sbitzz=P2^1;sbitfz=P2^2;uintt=50000,g=1;//g用来表是选的风功能,tt定时的时间ucharf,biao1=0,sudd;inttt=0;ucharkk=1;7uintaa=5;/************才初始化函数**************************************/voidinit(){EA=1;ET0=1;//TR0=1;TMOD=0X01;//定时器0工作方式116位TH0=(65536-t)/256;TL0=(65536-t)%256;}/***************************************************/ucharcodesz[]={0x3F,/*0*/0x06,/*1*/0x5B,/*2*/0x4F,/*3*/0x66,/*4*/0x6D,/*5*/0x7D,/*6*/0x07,/*7*/0x7F,/*8*/0x6F,/*9*/0x71,/*F*///100x5C,/*o*///110x73//p12};voiddelay(uintxms){uinti,j;for(i=xms;i0;i--)for(j=50;j0;j--);}/********pwm调速兼作延时**************************/voidpwmdelay(ucharqq){pwm=1;8delay(1);pwm=0;delay(qq);pwm=1;}/************当风扇停止时显示的函数*******************************/voiddisplay2(){P0=sz[12];duan=1;duan=0;P0=0xfe;wei=1;wei=0;delay(10);//pwmdelay(sudu);P0=sz[0];duan=1;duan=0;P0=0xfd;wei=1;wei=0;delay(10);//pwmdelay(sudu);P0=sz[10];duan=1;duan=0;P0=0xfb;wei=1;wei=0;delay(10);//pwmdelay(sudu);P0=sz[10];duan=1;duan=0;P0=0xf7;wei=1;9wei=0;delay(10);//pwmdelay(sudu);P0=0xff;wei=1;wei=0;P0=0x00;//关闭数码管显示防止闪烁duan=1;duan=0;}/**************显示函数*****************************/voiddisplay(uintshu){ucharqian,bai,shi,ge;qian=biao1;bai=shu/100;shi=(shu%100)/10;ge=(shu%10);P0=sz[qian];duan=1;duan=0;P0=0xfe;wei=1;wei=0;//delay(1);pwmdelay(sudu);P0=sz[bai];duan=1;duan=0;P0=0xfd;wei=1;wei=0;//delay(1);pwmdelay(sudu);10P0=sz[shi];duan=1;duan=0;P0=0xfb;wei=1;wei=0;//delay(1);pwmdelay(sudu);P0=sz[ge];duan=1;duan=0;P0=0xf7;wei=1;wei=0;//delay(1);pwmdelay(sudu);P0=0x00;//关闭数码管显示防止闪烁duan=1;duan=0;P0=0xff;wei=1;wei=0;}/**************************************************//***************键盘程序***********************************/voidkescan(){ucharbiao2;//一键多功能的标号/**************************************/if(k1==0)//功能键一键多功能键自然风常风睡眠风停止{delay(50);if(k1==0){pwm=0;//关闭电机while(!k1);//等待释放按键biao1++;//功能选择if(biao1==4)//只允许四种状态biao1=0;}11}/***********************************************/if(biao1!=0)//功能0时不可以设置定时功能{if(k2==0)//定时功能键按一次设置第二次确认{delay(50);if(k2==0){tt=000;//如果进入定时功能则显示全部清零TR0=0;//确认按键俺下后关闭定时器while(!k2);//等待释放按键biao2=1;while(biao2)//如果不再次按下K2则将一直保持设置状态{led=0;if(k1==0){delay(50);if(k1==0){while(!k1);tt=tt+10;if(tt990)//tt=0;}}if(k3==0){delay(50);if(k3==0){while(!k3);tt=tt-10;if(tt0)//tt=990;}}display(tt);//刷新设置的时间12if(k2==0)//k2是否再次按下{delay(50);if(k2==0){while(!k2);if(tt0)//如果进入定时设置后没有设置时间则不能退出定时功能biao2=0;}}}TR0=1;//设置好定时功能后开启定时器led=1;}TR0=1;//开启定时器}}}/************功能函数**********************/voidgongnen(){while(biao1==0){pwm=0;tt=0;kescan();display2();}if(biao1==1)//功能1自然风{sudu=0;}if(biao1==2)//功能2常风{sudu=4;}if(biao1==3)//功能3睡眠风{sudu=1
本文标题:电风扇模拟控制系统设计-(2)
链接地址:https://www.777doc.com/doc-5806657 .html