预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

福建农林大学机电工程学院 综合性、创新性实验报告 专业:车辆工程 姓名:吴载栩 学号:081268078 汽车电动座椅控制系统 摘要 本控制系统就是以单片机AT89C52为核心,附以外围电路,实现步进电机正反转及停止的系统;运用单片机的运算和处理能力和L298电机驱动芯片来实现步进电机的正转、反转、停止、加速、减速等功能,来模拟座椅的打开和关闭。并运用软件Proteus进行仿真来得到实验结果。 一、控制要求 (1)采用单片机控制 (2)所控制天窗由步进电机模拟驱动 (3)能实现步进电机的正转,反转,停止、加速、减速等功能 二、电路设计原理及原理图 1.设计方案 本设计通过AT89C52单片机的I/O口对L298电机驱动芯片赋值来控制电机,单片机的P0口的低四位作为步进电机的控制输出,P1.0,P1.1,P1.2,p1.3,p1.7连接五点动开关,作为电机运行模式的切换控制方式。 加速减速正反转开关控制===》单片机===》L298驱动===》步进电机2.电路原理 AT89C52是集成40个I/O口的单片机,拥有12MHZ的晶振周期,电路拥有可控复位电路。L298电机驱动电路可以实现电机的转向调整。本电路实现步进电机正反转主要利用了L298的引脚的电平控制,让其电平的高低变化可以跟据单片机程序来进行调节,本电路分别进行了设置,当正转开关闭合时,可以控制电机正转,当反转开关闭合时,可以控制电机反转,当关闭开关开时,电机停止转动。 2.1开关控制电路 当正转开关闭合时,电机正转;当反转开关闭合时,电机反转;当关闭开关开时,电机停止转动。 2.2电机驱动电路 3.原理图 首先在PROTEUS文件下创建步进电机电路原理图。根据设计需求打开器件,基于单片机控制的电机原理图如图所示。 5.程序设计 #include<reg52.h> //#include<intrins.h> #defineuintunsignedint uintspeeds[]={0xf0,0xe0,0xd0,0xc0,0xb0,0xa0,0x90,0x80,0x70,0x60,0x50,0x40,0x30,0x20,0x10,0x00},i,times=0; uintright[]={0x05,0x06,0x0a,0x09,0x00};//右转数组 uintleft[]={0x09,0x0a,0x06,0x05,0x00};//左转数组 uintj,key,spd; bittt,direct; uint*RL; //================================================= voidint_timer2()//定时器2初始化 {EA=1; TMOD=0x01; ET2=1; TR2=0; TH2=spd; TL2=0x00; RCAP2H=spd; } //=============================================== voidtimer2()interrupt5//定时器2中断 {TR2=0; TF2=0; RCAP2H=spd; P3=RL[i];i+=1;if(i==4)i=0; TR2=1; } //============================================================= voidreadkey() //读键子程序 {//Delayms(2); switch(key) {case0xfe:TR2=!TR2; while(P1!=0xff);break;//开关 case0xfd:if(TR2==0){i+=1;if(i==4)i=0;P3=RL[i];}while(P1!=0xff);break;// 实现步进 case0xfb:if(TR2==1)if(j<15){j+=1;spd=speeds[j];}while(P1!=0xff);break;//加速 case0xf7:if(TR2==1)if(j>0){j-=1;spd=speeds[j];}while(P1!=0xff);break;//减速 case0x7f:if(RL==right)RL=left;elseRL=right;while(P1!=0xff);break;//正反转 case0xff:break; } } //=========================================================================== voidmain() //主程序 { i=0; j=0; spd=speeds[j