大连理工大学电子工程训练实验报告.docx
《大连理工大学电子工程训练实验报告.docx》由会员分享,可在线阅读,更多相关《大连理工大学电子工程训练实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
大连理工大学电子工程训练实验报告
理工大学本科实验报告
基于51单片机的
直流电机调速及音乐控制系统
课程名称:
电子工程训练
学院(系):
电信学部
专业:
自动化
班级:
学号:
学生姓名:
实验教室:
成绩:
2014年11月17日
成绩评定
项目
各项总分
得分
焊接
30
最小系统与电源
10
功能实现
45
实验报告
10
出勤
5
总分
电子安装实验室安全守则
(请在下一页手抄一份安全守则)
1、每次实验前,认真预习准备,仔细阅读实验安全守则,格按照安全规进行实验,确保实验安全;
2、桌面要保持整洁,不允有杂物,禁止将水杯、瓶装水放在桌面;
3、电烙铁在使用前,必须检查电源线有无烫损漏线情况,一经发现,立即找老师进行安全处理;
4、电烙铁长时间不使用,应将电源线拔掉;电烙铁使用后,应放回烙铁架中,以免烫伤物品;
5、实验结束后,必须拔掉电烙铁的电源线;已经加热的电烙铁,必须冷却后再放入抽屉中;
6、焊锡中含铅,不要含在口中,实验结束后要洗手;
7、稳压电源在使用前,应先调好要使用的电压,再进行线路连接,并确保连接的极性正确;
8、抢救触电人员时,应首先切断电源或用绝缘物体挑开电源线,使触电者脱离电源,千万不要用手拖拉触电人员,以免连环触电;
9、实验结束后,必须关闭桌面电源开关,将桌面收拾干净,工具物品整理好。
题目:
基于51单片机的直流电机调速及音乐控制系统
1.设计要求
以51单片机为核心,设计、焊接并调试一个实际单片机控制系统,实现四位一体数码管显示直流电机转向、转速,并利用按键控制音乐播放。
系统设计具体要求:
1)电源电路(9VAC-5VDC)。
2)51单片机最小系统。
3)按键控制音乐播放。
4)四位一体数码管显示(三极管8550驱动)。
5)直流电机驱动电路。
6)按键控制电机转动并在四位一体数码管显示。
2.设计原理及系统案设计
1)直流电机:
直流电机只要能提供一定的直流就可以转动,改变电压极性可以改变转动向,可以通过给直流电机提供脉冲信号来驱动它,脉冲信号的占空比可以影响到直流电机的平均速度,因此可以通过调整占空比从而能实现调速的目的(PWM调速)。
电机的驱动电流是比较大的,所以需要用三极管来放大电流。
程序的关键就是如实现占空比的调整,这个可以通过对51单片机定时器重装初值进行改变,从而改变时间。
2)音乐播放:
乐曲是由音调和节奏组成的,这两种特征都可以用单片机的定时器来实现,所以音乐文件在程序中是一个很大的数组,数组中包含着音乐的两种控制特征。
音乐的输出以及播放、停止控制分别用两个按键来控制。
3)总体设计:
显示数码管用P2.0~P2.3进行位选,P0口控制显示数字;直流电机用P2.5和P2.6输出PWM波形,通过三极管进行驱动,P1.1~P1.5分别是正反转控制,加速,减速,启动,停止按键;音乐播放通过P1.0输出,由P1.6控制。
3各功能模块硬件电路设计
1)电源电路:
电源电路采用7805芯片产生+5V供电电压。
2)最小系统:
包括电源,接地,晶振,复位,上拉电阻。
3)数码管显示:
四位数码管是一种半导体发光器件,其基本单元是发光二极管。
能显示4个数码管叫四位数码管。
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按发光二极管单元连接式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
4)直流电机驱动:
基于三极管的使用机理和特性,在驱动电机中采用H桥功率驱动电路,H桥功率驱动电路可应用于步进电机、交流电机及直流电机等的驱动.永磁步进电机或混合式步进电机的励磁绕组都必须用双极性电源供电,也就是说绕组有时需正向电流,有时需反向电流,这样绕组电源需用H桥驱动。
直流电机控制使用H桥驱动电路,当PWM1为低电平,通过对PWM2输出占空比不同的矩形波使三极管Q1、Q6同时导通Q5截止,从而实现电机正向转动以及转速的控制;同理,当PWM2为高电平,通过对PWM1输出占空比不同的矩形波使三极管Q1、Q6同时导通,Q6截止,从而实现电机反向转动以及转速的控制。
4系统软件设计
1)源代码
#define_ctf_C_
#include"reg51.h"
#include"ctf.h"
#include
#include
#include
#include
/********自定义变量********/
#defineuintunsignedint
//自定义变量
#defineucharunsignedchar
/****控制位定义*****/
unsignedcharn=0;//n为节拍常数变量
unsignedcharcodemusic_tab[]={
0x18,0x30,0x1C,0x10,
//格式为:
频率常数,节拍常数,频率常数,节拍常数,
0x20,0x40,0x1C,0x10,
0x18,0x10,0x20,0x10,
0x1C,0x10,0x18,0x40,
0x1C,0x20,0x20,0x20,
0x1C,0x20,0x18,0x20,
0x20,0x80,0xFF,0x20,
0x30,0x1C,0x10,0x18,
0x20,0x15,0x20,0x1C,
0x20,0x20,0x20,0x26,
0x40,0x20,0x20,0x2B,
0x20,0x26,0x20,0x20,
0x20,0x30,0x80,0xFF,
0x20,0x20,0x1C,0x10,
0x18,0x10,0x20,0x20,
0x26,0x20,0x2B,0x20,
0x30,0x20,0x2B,0x40,
0x20,0x20,0x1C,0x10,
0x18,0x10,0x20,0x20,
0x26,0x20,0x2B,0x20,
0x30,0x20,0x2B,0x40,
0x20,0x30,0x1C,0x10,
0x18,0x20,0x15,0x20,
0x1C,0x20,0x20,0x20,
0x26,0x40,0x20,0x20,
0x2B,0x20,0x26,0x20,
0x20,0x20,0x30,0x80,
0x20,0x30,0x1C,0x10,
0x20,0x10,0x1C,0x10,
0x20,0x20,0x26,0x20,
0x2B,0x20,0x30,0x20,
0x2B,0x40,0x20,0x15,
0x1F,0x05,0x20,0x10,
0x1C,0x10,0x20,0x20,
0x26,0x20,0x2B,0x20,
0x30,0x20,0x2B,0x40,
0x20,0x30,0x1C,0x10,
0x18,0x20,0x15,0x20,
0x1C,0x20,0x20,0x20,
0x26,0x40,0x20,0x20,
0x2B,0x20,0x26,0x20,
0x20,0x20,0x30,0x30,
0x20,0x30,0x1C,0x10,
0x18,0x40,0x1C,0x20,
0x20,0x20,0x26,0x40,
0x13,0x60,0x18,0x20,
0x15,0x40,0x13,0x40,
0x18,0x80,0x00};
sbitBeep=P1^0;
sbitP10=P2^5;//输出波形1
sbitP11=P2^6;//输出波形2
sbitP12=P1^1;//正反转
sbitP13=P1^2;//加速
sbitP14=P1^3;//减速
sbitP15=P1^4;//停止
sbitP16=P1^5;//启动
sbitP17=P1^6;
voidint0()interrupt1//采用中断0控制节拍
{TH0=0xd8;
TL0=0xef;
n--;}
voiddelay(unsignedcharm)//控制频率延时
{unsignedi=3*m;
while(--i);}
voiddelayms(unsignedchara)//毫秒延时子程序
{while(--a);}
ucharcodesmg[12]=
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xB8,0x8E};
//程序存储区定义字型码表
chardataled[4]=
{0x07,0x0B,0x0D,0x0E};//位码
uintx;//数码管显示的数值
chargw,sw,bw,qw;
ucharj;//定时次数,每次20ms
ucharf=9;//计数的次数
uchark;
uchart;//脉冲加减
/******延时函数*********/
delays()
{uchari;
for(i=4608;i>0;i--);}
/******数码管显示*******/
display()
{uchari,m;
gw=x%10;//求速度个位值,送到个位显示缓冲区
sw=(x/10)%10;//求速度十位值,送到十位显示缓冲区
bw=(x/100)%10;//求速度百位值,送到百位显示缓冲区
for(m=0;m<20;m++)
{for(i=0;i<4;i++)
{switch(i)
{case0:
P0=smg[gw];P2=led[0];delays();break;
case1:
P0=smg[sw];P2=led[1];delays();break;
case2:
P0=smg[bw];P2=led[2];delays();break;
case3:
P2=led[2];P0=0xff;delays();break;
}}}
P2=led[3];
if(k==0)//正转时显示"反F"
{P0=0xB8;delays();}
else
{P0=0x8E;delays();//反转时显示"F"}
}
/***t0定时*中断函数***/
voidt0()interrupt1using3
{TH0=-(18433/256);//重装t0
TL0=-(18433%256);
display();//数码管显示
f--;
if(k==0)
{if(fP10=1;
else
P10=0;
P11=0;}
else
{if(fP11=1;
else
P11=0;
P10=0;
}
if(f==0)
{f=9;}
x=t+t*10+t*100;
}
/*******按键扫描*******/
key()
{if(P12==0)//如果按下,
{while(!
P12)//去抖动
display();
k=~k;}
if(P16==0)//启动
{while(P16==0);IE=0x8a;}
if(P13==0)//加速
{while(P13==0);t++;}
if(t>=9)
t=9;
if(P14==0)//减速
{while(P14==0);t--;}
if(t<1)
t=1;
if(P15==0)//停止
{while(P15==0);
EA=0;P10=0;P11=0;x=0;}
}
/******主函数********/
main(void)
{unsignedcharp,m;//m为频率常数变量
unsignedchari=0;
aa:
TMOD&=0x0f;
TMOD|=0x01;
TH0=0xd8;TL0=0xef;
IE=0x82;
play:
while
(1)
{a:
if(P17==1){gotobb;}
else
{p=music_tab[i];
if(p==0x00){i=0;delayms(1000);gotoplay;}
//如果碰到结束符,延时1秒,回到开始再来一遍
elseif(p==0xff){i=i+1;delayms(100);TR0=0;gotoa;}
//若碰到休止符,延时100ms,继续取下一音符
else{m=music_tab[i++];n=music_tab[i++];}
//取频率常数和节拍常数
TR0=1;//开定时器1
while(n!
=0){Beep=~Beep;delay(m);n--;}
//等待节拍完成,通过P1口输出音频
TR0=0;//关定时器1
}}
bb:
TMOD=0x11;//T0式1定时计数T1式1计数
TR0=1;
TH0=-(18433/256);//装入初值20MS
TL0=-(18433%256);
gw=sw=bw=qw=0;//数码管初始化
P0=0xc0;
P2=1;
while
(1)//无限循环
{if(P17==0)
{gotoaa;}
else
{display();
key();}
}}
2)软件流程图
调用显示程序
开始
主程序:
中断初始化
读取P1口的键值
有键按下
Y
读取对应显示码及占空比
启动直流单机
N
P3.4置高电平
关闭定时器
有键按下
定时到,进入中断
重新赋初值
P3.4取反
结束
发声中断程序:
N
Y
5系统调试运行结果说明计分析
1)系统运行的硬件环境:
PC机,windowsXP系统
2)系统运行的软件环境:
MedWin(集成开发环境),SuperPro/Z(编程器),软件仿真KeilC51(C51编译器)。
3)系统运行结果:
a).四位一体数码管,显示直流电机状态,高位表示电源,次高位表示正转,次低位表示反转,低位表示转速档。
b)直流电机控制部分,四个按键分别控制电机的转速、正转、反转和停止。
转速调整从低速到高速循环调整。
c)按键控制音乐播放。
按键按下并保持,音乐响起;松开按键,音乐停止播放。
d).综合以上模块功能后,系统成功实现按键控制直流电机的转速转向的控制,同时数码管显示直流电机的工作状态,并可用按键控制音乐的播放与停止,电机控制部分与音乐播放部分并不冲突。
6结论
实验最后的结果不是很完美,但是本次实验课是迄今为止最综合性的实验了,既包括了硬件电路的焊接,又包括了软件程序的编写,软硬结合,可以说大多数是在课堂上根本学不到的东西。
不仅提高了动手操作能力,还加深了理论学习的学习与应用。
总之,这次实验让我感受到了软硬结合的魅力,自己收获颇多。
参考文献
[1]育斌等.MCS-51单片机应用实验教程[M]理工大学出版社。