单片机PLC实验报告.doc
《单片机PLC实验报告.doc》由会员分享,可在线阅读,更多相关《单片机PLC实验报告.doc(20页珍藏版)》请在三一办公上搜索。
1、实验一、单片机输入输出实验一、 实验目的:熟悉C8051F系列单片机的C语言编程,熟悉C8051F系列单片机的定时器使用方法,学习使用C8051F系列单片机数字量输入/输出。二、 实验原理:1.对于8位LED输出实验将C8051F020 的P4 口连接到8 盏LED 灯,通过定时器3计数溢出的方式产生中断,实现8 盏灯依次循环点亮。2.对于8路拨档开关输入,只需要使P5端口的输入传给P4端口,从而驱动对应LED小灯点亮。三、实验步骤:1. 8位LED输出准备工作:用短接线将实验箱上的P4.0P4.7与LD1LD8接线端子短接。利用定时器3作定时(系统主频2MHz,定时间隔要求0.3秒),用C8
2、051F020的P4口作输出控制发光二极管LD1LD8。让发光二极管LD1LD8依次点亮(同一时刻只有一个发光二极管发光)。其中LD1最先点亮,LD8最后点亮;当LD8点亮后,LD1再点亮,然后重复。28路拨档开关输入准备工作:闭合开关K11。A. 编写程序,读入开关K1K8的状态。B. 编写程序,读入开关K1K8的状态,取反后通过发光二极管LD1LD8输出。四、 实验流程:开始1.8位LED输出关看门狗初始化IO口初始化定时器3依次点亮LED是否定时到 N Y28路拨档开关输入开始关看门狗初始化IO口开关输入给P5P5端口值-P4端口值LED输出五、实验程序:1. 8位LED输出/-/程序说
3、明:/ 此程序用于测试教学实验机上的8个发光二极管,正常情况下应轮流点亮.定时时间为0.3s/-/ 头文件包含/-#include /-/ 16位特殊寄存器定义/-sfr16 TMR3RL = 0x92; sfr16 TMR3 = 0x94; /-/ 常量定义/-#define SYSCLK 2000000 /系统工作频率/-/全局变量定义/- unsigned char i=0xfe;/-/ 函数定义/-void PORT_Init (void);void Timer3_Init (int counts);void Timer3_ISR (void);/-/ 主程序/-void main (
4、void) WDTCN = 0xde; WDTCN = 0xad; /禁止看门狗定时器 PORT_Init (); Timer3_Init(0xc350 ); /定时时间为0.3s REF0CN=0x02; EA = 1; while (1) /-/函数名称: PORT_Init ()/函数功能: 通用I/O口及交叉开关初始化/入口参数: 无/出口参数: 无/全局变量引用: 无/调用模块: 无/-void PORT_Init (void) XBR2 = 0x40;/*使能交叉开关*/ P74OUT |= 0x000; /*推挽输出*/-/函数名称: Timer3_Init ()/函数功能: 定
5、时器3初始化/入口参数: int counts/出口参数: 无/全局变量引用: 无/调用模块: 无/-void Timer3_Init (int counts) TMR3CN = 0x00; /用十二分频 TMR3RL = -counts; TMR3 = 0xffff; EIE2 |= 0x01; TMR3CN |= 0x04; /-/函数名称: Timer3_ISR ()/函数功能: 定时器3中断服务程序/入口参数: 无/出口参数: 无/全局变量引用: 无/调用模块: 无/-void Timer3_ISR (void) interrupt 14 int j; TMR3CN &= (0x80)
6、;/*清中断标志*/ P4=i;/*送数据到P4*/ i=1; i = i | 0x01; if(i=0xff) i=0xfe;28路拨档开关输入/-/程序说明:/ 开关输入,小灯输出/-/ 头文件包含/-#include /-/ 主程序/-void main (void) WDTCN = 0xde; WDTCN = 0xad; /禁止看门狗定时器 XBR2 = 0x40;/*使能交叉开关*/ P74OUT |= 0x000; /*推挽输出*/P4=P5;/*送数据到P4*/五、 作业:1 试分析8位LED输出电路图的原理。答:8位LED输出电路图如下,当测试铜头为低电平时,LED能够发光,当
7、测试铜头为高电平或浮空状态时,LED不亮。2 试分析8路拨档开关输入电路图的原理。答:8路拨档开关输入电路图如下,K11是总的开关,当K1-K8任意一个开关接通时,对应的P5上的端口被置0,同时弱上拉端口产生一个中断,即INT0=0.实验二、单片机控制步进电机实验一、 实验目的:了解步进电机工作原理,掌握使用C8051F020 控制步进电机的硬件设计方法,熟悉步进电机驱动程序的设计与调试。二、 实验原理:1.步进电机的工作原理:以三相反应式步进电机为例:它的定子上有三对磁极,每一对磁极上绕着一相绕组,绕组通电时,这两个磁极的极性相反;三相绕组接成星形,转子铁心及定子极靴上有小齿,定转子齿距通常
8、相等。转子铁心上没有绕组,转子的齿数为40,相邻两个齿之间夹角为9。当某一相绕组通电时,由于定转子上有齿和槽,所以当转子齿的相对位置不同时,在磁场的作用下,转子将转动一个角度,使转子和定子的齿相互对齐,这就是使步进电机旋转的原因。步进电机运转是由脉冲信号控制。通过改变各相通电的次序可以调整步进电机的运转方向。改变脉冲信号的周期就可以改变步进电机的运转速度。本实验板选用的是四相步进电机,实验例程采用四相八拍的方式驱动步进电机。正方向:A-AB-B-BC-C-CD-D-DA-A反方向;A-DA-D-CD-C-BC-B-AB-A AA,BB,CC.DD 是步进电机的4 个线圈,D8,D9,D11,D
9、12 为续流二极管,是为步进电机的4 个线圈放电用的,当电机断电时,它的线圈要放电用二流管导流。本实验将P5的四个端口P5.0-P5.3连接到步进电机A、B、C、D四个口上,通过改变P5.0-P5.3四个口高低电平的轮流改变实现了步进电机的驱动。通过改变每个周期的高低电平改变时间控制步进电机的速度。三、 实验步骤:1准备工作教学实验机的步进电机驱动信号是STEPASTEPD,本例程用P5.0P5.3 来控制步进电机的4 个线圈处于通电或断电状态,所以在运行例程前,用跳线将STEPASTEPD 分别同P5.0P5.3 连接;同时也应将步进电机的引出线同CN2 正确连接(VCC 黑,AA 红,BB
10、黄,CC 白,DD 蓝)。2步进电机正编制程序控制步进电机实现正功能3步进电机反转编制程序控制步进电机实现反功能4步进电机定速运行编制程序使步进电机以每分钟30圈的速度正转四、 实验流程:1步进电机正初始化定时器3开始关看门狗初始化IO口按正/反转方向依次给4相通电2、步进电机反开始关看门狗初始化IO口按反转方向依次给4相通电3、步进电机定速运行开始关看门狗初始化IO口调整通电的间隔时间,达到预定速度按正转方向依次给4相通电五、实验程序:1. 步进电机正/P50-STEPAP51-STEPBP52-STEPCP53-STEPD/-/ Includes/-#include / SFR decla
11、rations#include /-/ Function PROTOTYPES/-void PORT_Init (void);/*函数名称:void sleep_ms(WORD count)功能描述:延时输入:WORD count(所要延时的长度)输出:无全局变量:无调用模块:_nop_()*/void sleep_ms(unsigned char count) unsigned char ii,jj; for(ii=0;iicount;ii+) for(jj=0;jj250;jj+) _nop_(); /-/ MAIN Routine/-void main (void) unsigned c
12、har k;unsigned char SendData;/*无效看门狗*/ WDTCN = 0xde; WDTCN = 0xad; PORT_Init ();SendData=0xff;/*4相线圈都截止*/while(1)/步进电机正转SendData=0x0e;/*A相通电*/P5=SendData;sleep_ms(250);SendData=0x0c;/*AB相通电*/P5=SendData;sleep_ms(250);SendData=0x0d;/*B相通电*/P5=SendData;sleep_ms(250);SendData=0x09;/*BC相通电*/P5=SendData;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 PLC 实验 报告

链接地址:https://www.31ppt.com/p-4144556.html