成都大学分数线.docx

上传人:b****9 文档编号:25711591 上传时间:2023-06-11 格式:DOCX 页数:20 大小:191.96KB
下载 相关 举报
成都大学分数线.docx_第1页
第1页 / 共20页
成都大学分数线.docx_第2页
第2页 / 共20页
成都大学分数线.docx_第3页
第3页 / 共20页
成都大学分数线.docx_第4页
第4页 / 共20页
成都大学分数线.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

成都大学分数线.docx

《成都大学分数线.docx》由会员分享,可在线阅读,更多相关《成都大学分数线.docx(20页珍藏版)》请在冰豆网上搜索。

成都大学分数线.docx

成都大学分数线

四川职业技术学院

《单片机技术》课程设计报告

设计题目:

直流电机的控制

专业:

机电一体化技术

班级:

2009级机电1班

设计小组:

第12组

组员:

叶卫、胡玉江、严健

指导教师:

李海兵刘宸

日期:

2011.5.16—2011.5.27

 四川职业技术学院

课程设计(论文)任务书

电子电气工程系机电一体化技术专业2009级09机电1班

学生叶卫、胡玉江、严健学号262419日期2011.5.27

课程设计(论文)内容与要求:

一、设计任务

利用单片机系统设计一个对直流电机的控制

2、课程设计要求

1.给定条件

(1)AT89S52单片机

(2)四位显示数码管

(3)电解电容,电阻,按钮,开关,导线

2.技术指标

(1)实现电动机正反转控制

(2)PWM脉冲宽度调制,实现对电机的调速

(3)可用键盘设置对电机进行正转、停止、反转、快速、慢速。

 

指导教师李海兵刘宸

课程设计成绩评定表

课程设计评语:

 

指导教师(签名)

时间年月日

课程设计成绩:

 

指导教师(签名)

时间年月日

目录

一、摘要5

二、认识单片机5

1、几个基本概念5

2、认识AT89S51、PWM5

三、课题设计7

1、课题目标7

2、课题分析8

四、系统硬件设计8

1、硬件清单8

2、硬件仿真图9

3、焊接实物图9

五、软件设计9

1、软件设计思路9

2、软件设计框图10

3、PWM的具体控制程序11

六、编译程序11

1、源程序11

2、程序设计说明13

3、软件仿真效果图14

七、程序设计心得体会16

八、参考文献16

一、摘要

本设计以AT89S52单片机为核心,以4个按键作为输入达到控制直流电机的启停、速度和方向调整。

在设计中,采用了PWM技术对直流电机进行控制,PWM是按一定规律改变脉冲列的脉冲列脉冲幅度,以调节输出量值和波形的一种调制方式。

是一种对模拟信号电平进行数字编码的方法,通过高分频率计数器的使用对模拟信号的电平进行编译。

PWM系统在很多方面具有较大的优越性:

主电路简单,所需功率器件少,低速性好,调节范围宽;开关频率高,快速响应好;功率损耗小,装置效率较高。

PWM变换器有不可逆和可逆两类,可逆变换器又有双极式、单级式和受限单级式等多种电路。

应用最普遍的两种方式:

受限单级性方式驱动和受限倍频单极性驱动方式。

二、认识单片机

1、几个基本概念

单片机就是在一块硅片上集成了CPU、存储器、输入、输出接口、振荡电路、计数器等的一块集成电路。

单片机最小系统就是能让单片机工作起来的一个最基本的组成电路。

2、认识AT89S51、PWM

 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除100次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

主要特性:

·与MCS-51兼容

  ·4K字节可编程闪烁存储器

  ·寿命:

1000写/擦循环

  ·数据保留时间:

10年

  ·全静态工作:

0Hz-24MHz

  ·三级程序存储器锁定

  ·128×8位内部RAM

  ·32可编程I/O线

  ·两个16位定时器/计数器

  ·5个中断源

  ·可编程串行通道

  ·低功耗的闲置和掉电模式

  ·片内振荡器和时钟电路

管脚说明:

VCC:

供电电压。

  GND:

接地。

  P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

  P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

  P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

  P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

  P3口也可作为AT89C51的一些特殊功能口,如下表所示:

  口管脚备选功能

  P3.0RXD(串行输入口)

  P3.1TXD(串行输出口)

  P3.2/INT0(外部中断0)

  P3.3/INT1(外部中断1)

  P3.4T0(记时器0外部输入)

  P3.5T1(记时器1外部输入)

  P3.6/WR(外部数据存储器写选通)

  P3.7/RD(外部数据存储器读选通)

  P3口同时为闪烁编程和编程校验接收一些控制信号。

  RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

  /PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

  /EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

  XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

  XTAL2:

来自反向振荡器的输出。

  振荡器特性:

  XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

PWM调速

近年来,直流电机的结构和控制方式都发生了很大的变化。

随着计算机进入控制领域,以及新型的电力电子功率元器件的不断出现,使采用全控型的开关功率元件进行脉冲调制(PWM)控制方式以成为绝对主流。

这种控制方式很容易实现在单片机控制中的实现,从而为直流电机控制数字化提供平台

三、课题设计

1、课题目标

利用单片机和PWM组成系统,通过程序的控制,实现对直流电机的控制,能控制速度和方向,通过控制脉冲的方向达到控制电动机正反转的目的。

2、课题分析

电机调速:

需采用由达林顿管组成的H型PWM电路。

用单片机控制达林顿管使之工作在占空比可调的开关状态,精确调整电动机转速。

这种电路由于工作在管子的饱和截止模式下,效率非常高;H型电路保证了可以简单地实现转速和方向的控制;电子开关的速度很快,稳定性也极佳,是一种广泛采用的PWM调速技术。

PWM调速方式:

单极性工作制。

单极性工作制是单片机控制口一端置低电平,另一端输出PWM信号,两口的输出切换和对PWM的占空比调节决定电动机的转向和转速。

PWM的调脉方式:

调脉宽的方式有三种:

定频调宽、定宽调频和调宽调频。

我们采用了定频调宽方式,因为采用这种方式,电动机在运转时比较稳定;并且在采用单片机产生PWM脉冲的软件实现上比较方便。

本任务中,PWM的原理对于小规模直流电动机调速系统,使用微型机和单片机是极为方便的。

其方法是通过改变电动机定子电压接通和断开时间的比值(即占空比)来控制马达速度,这种方法称为脉冲宽度调速。

四、系统硬件设计

1、硬件清单

三极管S9014

8个

按键

5个

AT89S52

一只

下载插座

1个

单片机电路板

1块

10uF电容

1个

1K电阻

8只

12MHz晶振

1只

10K电阻

1只

470欧电阻

8只

三极管S9015

2个

二极管

4个

20pF电容

2个

连接导线

若干

四位数码管

1个

2、硬件仿真图

3、焊接实物图

五、软件设计

5.1软件设计整体介绍

本系统编程部分工作采用KELI-C51语言完成,采用模块化的设计方法,与各子程序做为实现各部分功能和过程的入口,完成键盘输入、按键识别和功能、PWM脉宽控制和LED显示等部分的设计。

单片机资源分配如下表:

P0

显示模块接口

外部中断0

(P3.2)

键盘中断

P1

键盘模块接口

P2.0/P2.1

PWM电机驱动接口

内部定时器0

系统时钟

5.2软件设计流程图

系统主函数流程

①PWM脉宽控制:

本设计中采用软件延时方式对脉冲宽度进行控制,延时程序函数如下:

voiddelay(unsignedchardlylevel){

inti=50*dlylevel;

while(--i);}\

此函数为带参数DLYLEVEL,约产生DLYLEVEL*400us的延时,因此一个脉冲周期可以由高电平持续时间系数hlt和低电平持续时间系数llt组成,本设计中采用的脉冲频率为25Hz,可得hlt+llt=100,占空比为hlt/(hlt+llt),因此要实现定频调宽的调速方式,只需通过程序改变全局变量hlt,llt的值,该子程序流程图如图四。

②键盘中断处理子程序:

采用中断方式,按下键,单片机P3.2脚产生一负跳沿,响应该中断处理程序,完成延时去抖动、键码识别、按键功能执行。

调速档、持续加/减速:

调速档通过(0-6)共七档固定占空比,即相应档位相应改变hlt,llt的值,以实现调速档位的实现。

而要实现按住加/减速键不放时恒加或恒减速直到放开停止,就需在判断是否松开该按键时,每进行一次增加/减少1%占空比(即hlt++/--;llt--/++),其程序流程图如图五。

③显示子程序:

利用数组方式定义显示缓存区,缓存区有8位,分别存放各个LED管要显示的值。

显示子程序为一带参子程序,参数为显示缓存的数组名,通过for(i=0;i<8;i++)方式对每位加上位选码,送到P0口并进行一两毫秒延时。

该显示子程序只对各个LED管分别点亮一次,因此在运行过程中,每秒执行的次数不应低于每秒24次。

④定时中断处理程序:

采用定时方式1,因为单片机使用12M晶振,可产生最高约为65.5ms的延时。

对定时器置初值3CB0H可定时50ms,即系统时钟精度可达0.05s。

当50ms定时时间到,定时器溢出则响应该定时中断处理程序,完成对定时器的再次赋值,并对全局变量time加1,这样,通过变量time可计算出系统的运行时间。

对于一个数的显示,先应转成BCD码,即取出每一个位,分别送入显示缓存区,对于转BCD的算法,应对一个数循环除10取模,直至为0,程序如下:

do{dispbuff[bcd_p]=bechange%10;//dispbuff为显示缓冲区数组

bcd_p++;}while(bechange/=10)//disp_p为数组指针

5.3软件设计中的特点:

1、对于电机的启停,在PWM控制上使用渐变的脉宽调整,即开启后由停止匀加速到默认速度,停止则由于当前速度逐渐降至零。

这样有利于保护电机,如电机运用于小车上,在启动上采用此方式也可加大启动速度,防止打滑。

2、对于运行时间的计算、显示。

配合传感器技术可用于计算距离,速度等重要的运行数据。

3、键盘处理上采用中断方式,不必使程序对键盘反复扫描,提高了程序的效率。

 

六、编译程序

1、源程序

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitopen=p2^0;

sbitclose=p2^1;

sbitswap=p2^2;

sbitsub_speed=p2^3;

sbitabb_speed=p2^4;

sbitPWM1=p3^0;

sbitPWM2=p3^1;

sbitE=p3^7;

sbitRW=P3^6;

sbitRS=p3^5;

sbittest=p3^4;

inttime=0;

inthigh=20;

intperiod=30;

intchange=0;

intflag=0;

intnum_medium=0;

intnum_display=0;

intcount_speed=0;

ucharwword[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};

voiddelay(chart)

{

uinti;

while(t)

{

//对于12MHz时钟定时

for(i=0;i<125;i++)

t--;

}

}

//写命令函数LCP

voidwc51r(ucharj)

{

RS=0;

RW=0;

P1=j

E=1;

E=0;

dalay(3);

}

//写数据函数LCP

voidwc51ddr(ucharj)

{

RS=1

RW=0

P1=j

E=1

E=0

delay

(2);

}

//初始化函数LCP

voidinit()

{

wc51r(0x01);

wc51r(0x38);

wc51r(0x0c);

wc51r(0x06);

}

voidtime0_int(void)intterrupt

{

time++

THO=0xec

TLO=0x78;

ifchange==0

{PWM2=1;

if(time==high)

PWM1=0;

elseif(time==period)

{

PWM1=1;

time=0;

}

}

else

{PWM1=1

if(time==high)

PWM2=0;

elseif(time==period)

{

PWM2=1

time=0;

}

}

}

voiddatamnee

{

uintdataMM,NN;

wc51r(0xc2);

wc51ddr('s');

wc51ddr('p');

wc51ddr('e');

wc51ddr('d');

wc51ddr(0x30);

NN=num_display%100;

MM=num_display/100;

wc51ddrwword[MM];

MM=NN/10;

NN=NN%10;

wc51ddr(wword[MM]);

wc51ddr(wword[NN]);

}

voidmotor_control()

{

if(open==1)

EA=1:

if(close==1)

EA=0;

if(swap==1)

{change=~change;

while(swap!

=0)

{}

}

if(sub_speed==1)

{high++;

if(high==30)

EA=0;

while(sub_speed!

=0)

{}

}

if(abb_speed==1)

{high--;

if(high==5)

high=5;

while(add_speed!

=0)

{}

}

}

voidmain()

{

P2=0x00;

ET0=1;

ET1=1;

TMOP=0x11;

THO=0xec;//定时器T0设置参数

TLO=0x78;

TH1=0x3c;//定时器T1设置参数

TL1=0xb0;

TR0=1;

TR1=1;

init();//液晶显示初始化程序

while

(1)

{

wc51r(0x84);

wc51ddr('H');

WC51ddr('e');

wc51ddr('l');

wc51ddr('o');

if(test==0)

num_medium++;

datamade();

motor_control();

}

}

2、程序设计说明

首先定义变量flag为定义Key1按键,Tocount为Key2按下的次数,把每一个周期平均分成多个点,如:

100Hz每个周期10ms,为了方便将每个周期分成250个点,则每两个点之间的时间间距为40微秒,期分别分为250个点,则每两个点之间的时间相差40微秒,当Key1按下时可以实现;200Hz每个周期5ms,则将每个周期分别分为125个点,每两个点之间的时间也相差40微秒,当key2按下一次Tocount由1自增为2,n=250/Tocount=125,这样可以实现。

频率300-1000Hz一次类推。

对于这个固定的时间间隔,程序中采用定时中断完成。

为了保证定时的准确,在定时中断服务程序仅设置已被标志。

通过Key1来控制,当第一次按键时,实现锯齿波;当第二次按键时,实现方波的切换。

以此循环,实现锯齿波和方波之间的切换。

采用DAC0832数/模转换电路,输出5V的模拟电压。

由于DAC0832采用了直通方式,所以只需要往其数据端口直接加上数值,就能从DAC0832后面的运放的输出端得到所需要的模拟电压。

由于其输出电压可根据公式计算得来5V电压

3、软件仿真效果图

仿真图

七、程序设计心得体会

在两位老师的带领下,我们班在学院L415进行了为期两周的单片机实训。

在前期理论的学习之中我们存在很多的问题,所以尽总感觉自己还是有许多的东西弄不太清楚,于是就去图书馆查阅资料,请教同学和老师。

经过他们的解释分析之后,我们看到了我们的不足,我们对于很多东西的不熟悉,所以我们决定自己认真考虑、独立的设计这次课程,这样可以让我们更加熟悉书上所学的知识,并且还增加了一些设计技能。

在老师的指导下我们的软硬件设计变得很容易了。

而经过这次单片机实训,让我进一步接触到了单片机,发现了自己存在着很多欠缺:

以前学习专业课程时比较呆板、不够灵活,不太清楚该如何应用所学知识,对所学的相关课程不能很好的融会贯通。

更体会到所学理论知识的重要性,知识掌握得越多,设计得就会更全面、顺利。

在实训过程中,我了解了许多有关电子元件、单片机芯片方面有价值的资料,既重温了前面所学的专业知识,能够进行很好的链接模拟/数字电路、单片机原理,电动机和电机等方面的知识,又扩充了视野,补充了新的专业知识,更提高了自己的应用能力。

回顾这次毕业设计的整个过程,我深深地感受到这次毕业设计让我把理论和实际进一步相结合,巩固了基础知识并培养了我的创新意识和团队合作精神。

所有的这些对我以后的工作和学习都很大的帮助。

最后非常感谢学校以及老师给我们提供的这次实训,让我们在实践中去巩固我们的知识,提高了我们的动手能力与实际操作能力。

八、参考文献

[1]朱永金成友才单片机应用技术中国劳动社会保障出版社2007.

[2]何立兵单片机高级教程北京航空航天大学出版社2001.

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

当前位置:首页 > PPT模板

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

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