单片机占空比可调的PWM波形发生器.docx

上传人:b****8 文档编号:28720100 上传时间:2023-07-19 格式:DOCX 页数:17 大小:1.23MB
下载 相关 举报
单片机占空比可调的PWM波形发生器.docx_第1页
第1页 / 共17页
单片机占空比可调的PWM波形发生器.docx_第2页
第2页 / 共17页
单片机占空比可调的PWM波形发生器.docx_第3页
第3页 / 共17页
单片机占空比可调的PWM波形发生器.docx_第4页
第4页 / 共17页
单片机占空比可调的PWM波形发生器.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机占空比可调的PWM波形发生器.docx

《单片机占空比可调的PWM波形发生器.docx》由会员分享,可在线阅读,更多相关《单片机占空比可调的PWM波形发生器.docx(17页珍藏版)》请在冰豆网上搜索。

单片机占空比可调的PWM波形发生器.docx

单片机占空比可调的PWM波形发生器

机电高等专科学校电气工程系

微控制器技术课程

设计报告

设计题目:

占空比可调的PWM波形发生器

微控制器技术课程设计任务书

设计题目:

占空比可调的PWM波形发生器

设计时间:

2013.10.21——20610.27

设计任务:

在Proteus中画出原理图或使用实物,编制程序,实现以下功能:

1、理解PWM的工作原理。

2、编制PWM程序,使用八段发光字符管显示占空比。

3、可与电机连接,驱动电机以不同的转速旋转。

背景资料:

1、单片机原理与应用

2、检测技术

3、计算机原理与接口技术

进度安排:

1、第一天,领取题目,熟悉设计容,分解设计步骤和任务;

2、第2天,规划设计软硬件,编制程序流程、绘制硬件电路。

3、第3天,动手制作硬件电路,或编写软件,并调试。

4、第4天,中期检查,书写设计报告。

5、第5天,提交设计报告,整理设计实物,等待答辩。

6、第6天,设计答辩。

题目:

占空比可调的PWM波形发生器

一、设计目的

掌握PWM的工作原理;学会编制PWM程序,使用八段发光字符管显示占空比;并与电机连接,驱动电机以不同的转速旋转。

二、设计思路

直流电机PWM控制系统的主要功能包括:

实现对直流电机转速的调整,能够很方便的实现电机的智能控制。

主体电路:

即直流电机PWM控制模块。

这部分电路主要IIIAT89C51单片机的I/O端口、定时计数器、外部中断扩展等调整直流电机的转速,能够很方便的实现电机的智能控制。

其间是通过AT89C51单片机产生脉宽可调的脉冲信号并输入到L298驱动芯片来控制直流电机工作的。

该直流电机PWM控制系统由以下电路模块组成:

设计输入部分:

这一模块主要是利用带中断的独立式键盘来实现对直流电机的加速、减速控制。

设计控制部分:

主要由AT89C51单片机的外部中断扩展电路组成。

直流电机PWM控制实现部分主要山一些二极管、电机和L298直流电机驱动模块组成。

设计显示部分:

LED数码显示部分,实现对PWM脉宽调制占空比的实时显示。

三、方案设计

系统框架设计

总体设讣方案的硕件部分详细框图如图一所示。

方案说明:

直流电机PWM调速系统以AT89C51单片机为控制核心,山命令输入模块、LED显示模块及电机驱动模块组成。

采用带中断的独立式键盘作为命令的输入,单片机在程序控制下,定时不断给L298直流电机驱动芯片发送PWM波形,H型驱动电路完成电机正,反转和急停控制;同时单片机不停的将PWM脉宽调制占空比送到LED数码管完成实时显示。

四、系统硬件设计

4.1硬件模块组成

(1)单片机控制模块

(2)L298电机驱动模块

(3)LED显示模块

(4)独立键盘控制模块3.3系统硬件各模块电路

4.

2单片机整个控制模块

这里利用定时计数器让单片机P2口的P2.6、P2.7引脚输出占空比不同的方波,然后经驱动芯片L298放大后控制直流电机。

驱动芯片的输入电压是两引脚的电压差,在调速时一根引脚线为低电平,另一个引脚产生调速方波,这样两个引脚的电压差就可通过控制其中一个引脚来控制。

当需要改变电机转动方向时,两个引脚的输出相反。

定时计数器若干时间(1US)中断一次,就使P2.6或P2.7产生一个高电平或低电平。

直流电机的速度分成100个等级,因此一个周期就有100个脉冲,周期为一百个脉冲的时间,速度等级对应一个周期的高电平脉冲的个数。

占空比为高电平脉冲个数占一个周期总脉冲个数的白分数。

一个周期加在电机两端的电压为脉冲高电压乘以占空比。

占空比越大,加在电机两端的电压越大,电机转动越快。

电机的平均速度等于在一定的占空比下电机的最大速度乘以占空比。

当我们改变占空比时,就可以得到不同的电机平均速度,从而达到调速的目的。

五、PWM的基本工作原理

PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电圧,进而达到控制要求的一种电压调整方法。

在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期“接通”和“断开”时间的长短。

通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。

六、软件设计

主程序设计:

主程序部分主要对定时计数器T1的工作方式、中断入口地址、计数初值、中断产生、进行设置,为了方便程序编程。

MlMO:

工作模式选择位,具体如下:

TMOD寄存器

GATE

C/T

Ml

M2GATEC/TMl

M0

0

0

0

10

0

0

0

 

M1MO=OO:

模式0(13位定时/计数器)

M1MO=O1:

模式1(16位定时/计数器)

M1M0二10:

模式2(8位自动重装常数的定时/计数器)

M1MO=11:

模式3(2个8位定时/计数器,仅对T0)

因在程序中TO是作为定时器,TO的C/T控制位就应设置为0;T0工作在模式1,TMOD中控制T0的M1M0应设置为01,其它位全部设置为0,即应给工作模式寄存器TMOD赋值01H。

2.工作方式1及初值计算

当M1,MO二01时,定时/计数器处于工作方式1,此时,定时/及数器的等效电路仍

以定时器0为例,定时器1与之完全相同。

方式0和方式1的区别仅在于计数器的位数不同,方式0为13位,而方式1则为16位,由THO作为高8位,TLO为低8位,有关控制状态字(GATA、C/T、TFO、TRO)和方式0相同。

在工作方式1下,计数器的计数值围是:

1—65536(216)。

当为定时工作方式1时,定时时间的计算公式为:

(2诚一计数初值)X晶振周期X12

如果单片机的晶振选为6.000MHz,则最小定时时间为:

[213—(216—1)]Xl/6X10^X12=2X10^(s)=2(us)(216—0)X1/6X10^X12=131072X10_6(s)=131072(us)

定时/计数器中的计•数器是在计•数初值基础上以加法讣数的,并能在计数器从全“1”变为全“0”时自动产生溢出中断请求。

因此,可以把计数器计数初值设定为TC,定时器定时时间T的计算公式为:

T=(M-TC)T计数⑵式中M为计数器模值,该值和计数器工作模式有关。

在模式1时M为216。

在定时器模式下,T计数是单片机振荡周期的12倍。

上式也可写成:

TC=M-T/T计数在程序设计中工作模式为模式1,则计数器模值M二216二63536;假设单片机仿真器的晶振频率为

22.1184MHz,则:

T计数=12/(22.1184X106)=5.425347X10

若定时时间长度为30ms,则:

TC=65536-30X10-3/5.425347X10-7二10240二2800H

给定时器赋值时:

MOVTLO,#00H;

MOVTHO,#28H

3.中断设置

除特殊功能寄存器TCON和SCON中的某些位与中断有关以外,还有一个特殊功能寄存器即中断允许寄存器IE用来设定各个中断源的打开和关闭。

中断系统的结构框图

IE寄存器各位的含义如下:

EA(IE.7):

CPU的中断总允许标志位。

当EA二1时,CPU允许中断;当EA二0时,CPU禁止所有的中断请求。

ES(IE.4):

串行口中断允许位。

当ES二1时,允许串行口中断;当ES二0时,禁止中断。

ET1(IE.3):

定时器T1的溢出中断允许位。

当ET1二1时,允许T1中断;当ET1二0时,禁止T1中断。

EXI(IE.2):

外部中断1的中断允许标志位。

当EX1二1时,允许外部中断1中断;当ES二0时,禁止外部中断1中断。

ETO(IE.1):

定时器TO溢出中断允许位。

当ETO二1时,允许T0中断;当ETO二0时,禁止T0中断。

EXO(IE.0):

外部中断0允许位。

当EXO二1时,允许外部中断0中断:

当EXO二0

时,禁止外部中断0中断。

定时中断子程序流程

根据程序的需要,先为IE的各位赋值:

外部中断0的中断允许位:

EXO二1,允许外部中断SETBEXO

定时器T0溢出中断允许位:

ETO二1,允许中断请求SETBETO

允许中断(EA二1,CPU允许中断)SETBEA

串行口中断允许位:

ES二1,允许串行口中断SETBES

以上各位等于1时,CPU开放中断;等于0时,CPU禁止该中断。

单片机系统复位后,IE中各位均被清零,即禁止所有中断。

因此程序中开T0中断则应将ETO置1,另外如果要使用中断EA也要置1,故应给IE赋值为82H。

七、系统功能调试

直流电机的调试功能仿真如下图:

加速分3档,波形依次如下:

 

 

 

减速分3档,波形如下:

 

 

 

八、设计总结

通过本次课程设讣,使我学到了许多书本上无法学到的知识,也使我深刻体会到单片机技术应用领域的广泛。

不仅让我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。

在本次课程设汁过程中,我学会了有关本设计的各硬件的资源,其中包括:

直流电机PWM调速、AT89C51单片机、L289引脚图及其引脚功能、LED数码管显示等知识。

参考文献

[11林志琦•基于Proteus的单片机可视化软硬件仿真[M].:

航空航天大

学,2006.9

⑵周润景,丽娜•基于PROTEUS的电路及单片机系统设计与仿真[M].:

航空航天大学,2006.5

靖武,周灵彬•单片机系统的PROTEUS设计与仿真[M]・:

电子工业,2007.4

[4]

周润景,丽娜.PROTEUS入门实用教程[M]・:

机械工业,2007.9

楼然苗,光飞.51系列单片机设计实例[M]・:

航空航天大学,2003.3

楼然苗,光飞•单片机课程设计指导[M]・:

航空航天大学,2007.7

[6]

直流电机PWM调速C语言程序:

#include

#include

^include

/********自左义变量********/

^defineuintunsignedint//自左义变量

^defineucharunsignedchar

chargw,sw,bw,qw;

uchar

uchar

sbit

sbit

sbit

sbit

sbit

sbit

uchar

uchar

/********水控制位左义********************/

ucharcode

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

〃位码

chardataled[4]={0x08,0x04,0x02,0x01};

//数码管显示的数值

//数码管显示

〃延时函数

uintx;

display0;

delays0;

key();

displays0;

/***************主函数********************/

main(void)

//TO方式1泄时计数Tl方式1计数

//装入初值20MS

//计数567

TM0D=0x51;

THO二Oxbl;

TLO二OxeO;

TH1二0x00;

TL1二0x00;

TRO二1;

TR1=1;

//启动tO

//启动tl

gw=sw=bw=qw=0;//数码管初始化P0二0xc0;

P2=l;

while

(1)

〃无限循环

display0;〃数码管显示key();

}

/***************数码管显示****************/display0

uchari;gw=x%10;

sw=(x/10)%10;bw=(x/100)%10;qw=x/1000;

for(i=0;i<4;)

//求速度个位值,送到个位显示缓冲区

//求速度十位值,送到十位显示缓冲区〃求速度百位值,送到百位显示缓冲区

//求速度千位值,送到千位显示缓冲区

P2=led[i];if(i=0)

〃显示个位

P0二smg[gw];

delays0;

}

elseif(i=l)

//显示十位

PO=smgEsw];delays();

}

elseif(i=2)

//显示百位

P0=smgLbw^;delays();

}

elseif(i==3)

//显示千位

 

}

/*****************延时函数*************************/delays0

{

uchari;

for(i=5000;i>0;i~);

}

/*****泄时*中断函数*************/

voidt0()interrupt1using2

{

THO二Oxbl;//重装tO

TL0=0xe0;

f—;

if(k==0)

{

if(f

PIO二1;

else

P10=0;

Pll=0;

}

else

{

if(f

Pll=l;

else

Pl1=0;

P10=0;

}

if(f=O)

{

f二5;

}

j++;

if(j=50)

{

J-0;

x=THl*256+TLl;//tl方式1计数,读入计数值

TH1二0x00;

TL1二0x00;

x++;

display0;

}

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

if(P12=0)

{while(!

P12)displayO;k="k;

}if(P16==0){

while(P16==0)IE=0x8a;

}

辻(P13=0)

{

while

t++;

〃如果按下.

〃去抖动

〃启动

〃加速

(P13=0);

辻(t>=5)

t=5;

if(P14==0)//减速

{

while(P14=0);

}if(t

if(P15=0)

{

while(P15==0);EA=O;

PIO二0;

Pl1=0;

}

}

〃停止

/****************END**************/

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1