单片机实训报告Word文档下载推荐.docx
《单片机实训报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机实训报告Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
1.单片机最小系统
2.下载器
3.万用表
4.步进电机
5.驱动器
6.4个数码管
7.按键
8.霍尔传感器
三、实训内容
1、步进电机的工作原理
步进电动机是将电脉冲信号转换成角位移或直线位移的控制电机,在自动控制系统中作执行元件。
给步进电动机输入一个电脉冲信号时,它就转过一定的角度或移动一定的距离。
2、步进电机的驱动设计
2.1、驱动电源与单片机及电机接线图如下:
2.2、符号说明
OPT接CPU+5V
SP
接CPU脉冲信号(负信号,低电平有效
DIR
方向控制,与CPU地线相接,电机反转
ENA
脱机,与CPU地线相接,驱动电源不工作
VCC
直流电源正端
GND
直流电源负端
A
接电机引出线红线
接电机引出线绿线
B
接电机引出线黄线
接电机引出线蓝线
3、键盘显示模块设计
3.1、键盘功能
1)按键控制电机驱动、停止、加速、减速、正转、反转
2)串口实现PC机控制电机
3)控制定时器延时控制电机转速
3.2、键盘电路
4、转速测量模块设计
霍尔传感器:
磁感应式传感器的工作原理,磁力线穿过的路径为永久磁铁N极一定子与转子间的气隙一转子凸齿一转子凸齿与定子磁头间的气隙一磁头一导磁板一永久磁铁S极。
当信号转子旋转时,磁路中的气隙就会周期性地发生变化,磁路的磁阻和穿过信号线圈磁头的磁通量随之发生周期性变化。
根据电磁感应原理,传感线圈中就会感应产生交变电动势。
5、软件程序代码编写
#include<
reg51.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineLedDispP2
#defineKeyData(P3|0x07)
#defineKeyUp0
#defineKeyDown1
sbitOPT=P0^0;
sbitCP=P0^1;
sbitDIR=P0^2;
sbitENA=P0^3;
sbitCLK=P2^0;
sbitDAT=P2^1;
sbitRCLK=P2^2;
ucharKeyState=KeyUp;
ucharKeyValue;
intCounter=14;
ucharcodeDispCode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
ucharNumCode[4]={0,0,0,0};
ucharcodeLedSelect[4]={0x10,0x20,0x40,0x80};
intDispNum=1234;
uintT0Num;
uintT1Num0;
uintT1Num1;
uintNum;
uintIntNum;
bitFlag1s=0;
bitFlag3s=0;
voidIntInit()
{
IT0=1;
EX0=1;
EA=1;
}
voidT0Init()
TMOD=0x01;
TH0=(65536-50)/256;
TL0=(65536-50)%256;
TR0=1;
ET0=1;
voidT1Init()
TMOD|=0x10;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
TR1=1;
ET1=1;
voidSend595(ucharCh)
ucharj;
RCLK=0;
_nop_();
for(j=0;
j<
8;
j++)
{
CLK=0;
_nop_();
DAT=Ch&
0x80;
CLK=1;
Ch<
<
=1;
}
RCLK=1;
voidDisp4()
staticucharj=0;
ucharTemp;
Send595(DispCode[NumCode[j]]);
Temp=LedDisp&
0x07;
LedDisp=Temp|LedSelect[j];
j++;
j%=4;
voidSendDisp()
NumCode[0]=DispNum/1000;
NumCode[1]=DispNum%1000/100;
NumCode[2]=DispNum%100/10;
NumCode[3]=DispNum%10;
voidDelay(uintn)
while(n--)
voidNormalRun()
OPT=1;
ENA=1;
DIR=1;
voidReverseRun()
DIR=0;
voidSpeedUp()
Counter+=1;
if(Counter>
=24)
Counter=24;
}
voidSpeedDown()
Counter-=1;
if(Counter<
=4)
Counter=4;
voidStopRun()
ENA=0;
voidKeyScan(void)
if(KeyData!
=0xff)
{
Delay(100);
{
if(KeyData!
=0xff)
{
if(KeyState==KeyUp)
{
KeyState=KeyDown;
KeyValue=~KeyData;
}
}
else
KeyState=KeyUp;
voidKeyProcess()
KeyScan();
switch(KeyValue)
case0x08:
NormalRun();
break;
}
case0x10:
ReverseRun();
case0x20:
SpeedUp();
KeyValue=0xff;
}
case0x40:
SpeedDown();
}
case0x80:
StopRun();
default:
voidmain()
IntInit();
T0Init();
T1Init();
while
(1)
if(Flag3s==1)
T1Num1=0;
Flag3s=0;
IntNum=Num;
DispNum=IntNum*20;
SendDisp();
Num=0;
voidEX0Server()interrupt0
Num++;
voidT0Server()interrupt1
T0Num++;
if(T0Num>
=Counter)
CP=~CP;
T0Num=0;
voidT1Server()interrupt3
Disp4();
T1Num0++;
T1Num1++;
if(T1Num0>
=20)
T1Num0=0;
KeyProcess();
if(T1Num1>
=600)
Flag3s=1;
6、软硬件联合调试
先通过软件编写驱动步进电机能动起来,然后通过STC-ISP软件将程序烧进单片机,进行调试,接着按同样的方法进行键盘扫描(正转,反转,加速,减速,停止),数码管显示,霍尔传感器测量速度这样的步骤通过软硬件不断重复调试,达到作品做完。
7、作品实物图
四、实训记录
第一天:
讲解步进电机的工作原理,并介绍步进电机的种类,熟悉单片机的软件设计方法。
熟悉驱动器的工作原理,编写程序并下载到单片机驱动步进电机运转。
第二天:
在步进电机能够运转的情况下,增加5个按键,编写程序使按键分别具有正转,反转,停止,加速,减速的功能。
第三天:
编写数码管显示程序,并焊接由74HC595芯片驱动数码管的显示电路。
第四天:
测试焊接好的显示电路板,下载程序驱动数码管是否正常显示,接着连接霍尔传感器,测试步进电动机的转速,通过数码管显示出来。
第五天:
进行作品检查,并讲解程序是如何运行的,巩固对程序的认识程度。
五、实训总结
经过一周的单片机实训,发现自己的焊接水平,还有了解一些程序的能力有大幅度的提高,而且整天对着那些电路不觉得枯燥反而觉得时间过得很快,能提高自己的耐心,对电子技术有了更直接的认识,对设计和制作电路也有了更全面的了解。
在实践中寻找问题的所在,如刚开始单片机连步进电机都不能运转,并运用自己所知道的知识去解释,与同学互帮互助,共同探讨共同进步。
回想起整个实训过程,本次实训是本人到目前为止觉得最有意义,也是最有收获的。
作为学电子方面的学生,设计是我们将来必需的技能,而这个实训刚刚给我们提供了一个应用自己所学知识的平台。
从通过理论设计,到具体方案,再到焊接实际电路,最后到调试电路成品。
整个过程,都需要我充分利用所学的知识进行思考借鉴。
我认为这次实训是针对前面所学的知识进行一次比较全面的检验。
总的来说,这此是挺充实的。
这次实训中,正确的思路是很重要的,只有你的设计思路正确,你的作品才能很容易成功,在设计前要做好充分的准备。
安装,焊接过程是考验人耐心的过程。
对电路的安装与焊接,调试,分析要一步步来,不能急噪。
能完成这次作品,离不开老师辛勤的指导。
老师能在指导本人,使本人更好得完成这任务。
六、评语
指导教师签名:
年月日