您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > ULN2003直流电机正反转以及10级调速
ULN2003直流电机正转以及10级PWM调速功能说明本设计是基于STC89C52单片机和ULN2003芯片驱动的直流电机。并在数码管显示当前速度级数。具有正传和PWM10级调速等功能。速度的控制是由PWM输入信号来完成的。通过调节pwm信号的占空比来完成速度的控制。(1)通过52单片机加载程序,ULN2003做驱动控制直流电机旋转。(2)用按键增加或者减小当前的旋转速度,可以控制10级变速。(3)用数码管显示当前旋转的速度级数。一、原理图(1)最小系统(2)驱动芯片二、源程序代码#includereg52.h#defineuintunsignedintuintpp;charnum=2,dis;sbitpwm=P3^6;sbits2=P3^4;sbits3=P3^5;sbitdula=P2^0;//段选信号的锁存器控制sbitwela=P2^1;//位选信号的锁存器控制sbitcs88=P2^2;//点阵管的锁存器控制cs88=0;//关点阵管sbitLCD1602=P2^5;//定义LCD1602使能端,用于HJ-C52实验板复位,与本实验无关sbitDS1302=P2^7;//定义DS1302时钟使能端,用于HJ-C52实验板复位,与本实验无关sbitSD=P2^6;//定义SD卡使能端,用于HJ-C52实验板复位,与本实验无关voidcmg88()//关数码管,点阵函数cmg88();//关数码管,点阵函数{dula=1;P0=0x00;dula=0;cs88=0x00;P0=0x00;cs88=1;}unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};voidkeyscan(){if(s2==0){while(!s2);num++;if(num==11)num=10;dis=num;}if(s3==0){while(!s3);num--;if(num==-1)num=0;dis=num;}}voiddisplay(a){dula=0;P0=table[a];dula=1;dula=0;wela=0;P0=0xfe;wela=1;wela=0;}voidmain(){TMOD=0x01;//模式设置,00000001,可见采用的是定时器0,工作与模式1(M1=0,M0=1)。TR0=1;//打开定时器TH0=(65536-160)/256;TL0=(65536-160)%256;ET0=1;//开定时器0中断EA=1;//开总中断num=6;//主板初始化因51单片机芯片开机时各个IO口输出为高电平,加上以下源代码是为了防止各种外部模块误动作DS1302=0;//关DS1302模块,与本实验无关SD=0;//关SD卡模块,与本实验无关LCD1602=0;//关LCD1602模块,与本实验无关cs88=0;//关点阵管while(1){keyscan();if((num!=0)&&(num!=10))//对于占空比为0和100%这两种极端情况,最好分离出,单独考虑{if(pp=num)pwm=1;elsepwm=0;}elseif(num==0)//当占空比为0pwm=0;elsepwm=1;display(num);//显示num当前值,占空比为num/10。}}voidtime0()interrupt1{TH0=(65536-160)/256;TL0=(65536-160)%256;pp++;if(pp==11)//当占空比为100%pp=0;}三、设计总结本次设计由于在设计时没能完善设计思路。导致器件采集时没有买L293芯片,所以直流电机的反转只能靠手动换线完成。以后要吸收教训,提前准备好器件。
本文标题:ULN2003直流电机正反转以及10级调速
链接地址:https://www.777doc.com/doc-4709563 .html