好文档 - 专业文书写作范文服务资料分享网站

基于单片机AT89S52的直流电机PWM调速控制系统

天下 分享 时间: 加入收藏 我要投稿 点赞

基于单片机AT89S52的直流电机PWM调速控制系统

下图:

3、输出波形如下:

4、加速分5档,波形依次如下:

5、减速分5档,波形如下:

第6页 共12页

基于单片机AT89S52的直流电机PWM调速控制系统

第五章:程序

见附件1

第六章:PCB图

见附件2

第七章:元件清单

见附件3

第八章:心得体会

附件1

/***************基于单片机AT89C51的直流电机PWM调速控制系统*************/ /*******************地点:广东松山职业技术学院************************/ /****************班级:2009级检测技术及应用****************************/ /*****************指导老师:张军涛***********************************/ /***************时间:2011年7月1日***********************************/ /************头文件*********/ #include #include #include

/************************** /

/********自定义变量********/

#define uint unsigned int //自定义变量 #define uchar unsigned char char gw,sw,bw,qw;

uchar j; //定时次数,每次20ms uchar f=5; //计数的次数

sbit P10=P1^0; //PWM输出波形1 sbit P11=P1^1; //PWM输出波形2 sbit P12=P1^2; //正反转 sbit P13=P1^3; //加速 sbit P14=P1^4; //减速 sbit P15=P1^5; //停止 sbit P16=P1^6; //启动 uchar k;

uchar t; //脉冲加减

/**************************/*

/*********控制位定义********************/

第7页 共12页

基于单片机AT89S52的直流电机PWM调速控制系统

uchar

code

smg[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x73,0x71};//程序存储区定义字型码表

char data led[4]={0x08,0x04,0x02,0x01}; //位码 uint x; //数码管显示的数值 display(); //数码管显示 delays(); //延时函数 key();

displays();

/*****************************************/

/***************主函数********************/ main (void) {

TMOD=0x51; //T0方式1 定时计数 TH0=0xb1; //装入初值 20MS TL0=0xe0; TH1=0x00; // 计数567 TL1=0x00;

TR0=1; //启动 t0 TR1=1; //启动t1 gw=sw=bw=qw=0; //数码管初始化 P0=0xc0; P2=1; while(1) //无限循环 { display(); //数码管显示 key(); }

}

/*****************************************/

/***************数码管显示****************/ display() {

uchar i;

gw=x; //求速度个位值,送到个位显示缓冲区 sw=(x/10); //求速度十位值,送到十位显示缓冲区 bw=(x/100); //求速度百位值,送到百位显示缓冲区 qw=x/1000; //求速度千位值,送到千位显示缓冲区 for(i=0;i<4;) {

T1方式1计数

第8页 共12页

基于单片机AT89S52的直流电机PWM调速控制系统

}

P2=led[i];

if(i==0) //显示个位

{ P0=smg[gw]; delays(); }

else if(i==1) //显示十位 {

P0=smg[sw]; }

else if(i==2) //显示百位 {

P0=smg[bw]; delays(); }

//显示千位

//正转时显示\三\

delays();

else if(i==3) { if(k==0)

{

P0=0x49; delays(); } else {

P0=0x71; } }

//反转时显示\

i++;

}

/*******************************************************/

/*****************延时函数*************************/ delays() { uchar i;

for(i=5000;i>0;i--); }

/************************************************/

/*********t0定时*中断函数*************/ void t0() interrupt 1 using 2 {

第9页 共12页

基于单片机AT89S52的直流电机PWM调速控制系统

TH0=0xb1; //重装t0 TL0=0xe0; f--; if(k==0) {

if(f

if(f

else P11=0; P10=0;

if(f==0) { f=5; } j++; if(j==50) { j=0;

x=TH1*256+TL1; //t1方式1计数,读入计数值 TH1=0x00; TL1=0x00; x++; display(); } }

/****************按键扫描**************/ key() {

if(P12==0) //如果按下, {

while(!P12) //去抖动 display();

k=~k; } if(P16==0) //启动

第10页 共12页

基于单片机AT89S52的直流电机PWM调速控制系统

基于单片机AT89S52的直流电机PWM调速控制系统下图:3、输出波形如下:4、加速分5档,波形依次如下:5、减速分5档,波形如下:第6页共12页基于单片机AT89S5
推荐度:
点击下载文档文档为doc格式
2lyi1177gh8xzko047n7
领取福利

微信扫码领取福利

微信扫码分享