ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:39.19KB ,
资源ID:10156839      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10156839.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机与PLC技术实验报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机与PLC技术实验报告.docx

1、单片机与PLC技术实验报告一、简述实验内容1.8位LED输出:准备工作:用短接线将实验箱上的P4.0P4.7与LD1LD8接线端子短接。A.利用定时器3作定时(系统主频2MHz,定时间隔要求0.3秒),用C8051F020的P4口作输出控制发光二极管LD1LD8。让发光二极管LD1LD8依次点亮(同一时刻只有一个发光二极管发光)。其中LD1最先点亮发光,LD8最后点亮,LD1再点亮,然后重复。2.8路拨档开关输入准备工作:闭合开关K11A.编写程序,读入开关K1K8的状态。B.编写程序,读入开关K1K8的状态,取反后通过发光二极管LD1LD8输出。2、试分析8位LED输出电路图的原理。答:发光

2、二极管LD1LD8正极均通过200电阻接+3V电源,负极接实验箱上的P4.0P4.7。当P4.0P4.7输出高电平时,发光二极管截止不发光,当P4.0P4.7中有输出低电平的时,该端口对应的发光二极管导通,发光。由此可以通过控制P4.0P4.7输出电平控制灯的点亮与熄灭,可通过设一个低电平再通过移位的方法实现发光二极管LD1LD8依次点亮的效果。3、写出8位LED输出实验的以及子程序的流程图。8位LED输出实验的以及子程序的流程图在实验报告上4、写出8位LEDC语言源程序(要求有注释)#include / 16位特殊寄存器定义sfr16 TMR3RL = 0x92; sfr16 TMR3 =

3、0x94; / 常量定义#define SYSCLK 2000000 /系统工作频率/全局变量定义 unsigned char i=0xfe;/ 函数定义void PORT_Init (void);void Timer3_Init (int counts);void Timer3_ISR (void);/ 主程序void main (void) WDTCN = 0xde; WDTCN = 0xad; /禁止看门狗定时器 PORT_Init (); Timer3_Init(SYSCLK * 1024 ); REF0CN=0x02; EA = 1; while (1) /-/函数名称: PORT_

4、Init ()/函数功能: 通用I/O口及交叉开关初始化/入口参数: 无/出口参数: 无/全局变量引用: 无/调用模块: 无/-void PORT_Init (void) XBR2 = 0x40; /*使能交叉开关*/ P74OUT |= 0x11; /*推挽输出*/-/函数名称: Timer3_Init ()/函数功能: 定时器3初始化/入口参数: int counts/出口参数: 无/全局变量引用: 无/调用模块: 无/-void Timer3_Init (int counts) TMR3CN = 0x00; TMR3RL = -counts; TMR3 = 0xffff; EIE2 |=

5、 0x01; TMR3CN |= 0x04; /-/函数名称: Timer3_ISR ()/函数功能: 定时器3中断服务程序/入口参数: 无/出口参数: 无/全局变量引用: 无/调用模块: 无/-void Timer3_ISR (void) interrupt 14 TMR3CN &= (0x80); /*清中断标志*/ P4=i; /*送数据到P4*/ i=1; i = i | 0x01; if(i=0xff) i=0xfe;5、试分析8路拨档开关输入电路图的原理。答:将K1K8分别与P5.0P5.7相连,当K1K8中有开关按下时,其对应P5.0P5.7端口为低电平。由此可见,将P5.0P5

6、.7通过程序赋给P4.0P4.7,即可实现用8路拨档开关控制8个灯的开关。6、写出8路拨档开关输入的程序流程图,以及C语言源程序(要求有注释)#include / 16位特殊寄存器定义sfr16 TMR3RL = 0x92; sfr16 TMR3 = 0x94; / 常量定义#define SYSCLK 2000000 /系统工作频率/全局变量定义 unsigned char i=0xfe;/ 主程序void main (void) WDTCN = 0xde; WDTCN = 0xad; /禁止看门狗定时器 P4=P5; 8路拨档开关输入的程序流程图在实验报告上1、简述实验内容1.准备工作教学

7、实验机的步进电机驱动信号是STEPASTEPD,本例程用P5.0P5.3来控制步进电机的4个线圈处于通电或断电状态,所以在运行历程前,用跳线将STEPASTEPD分别同P5.0P5.3连接。2.步进电机正转编制程序控制步进电机实现正功能3.步进电机反转编制程序控制步进电机实现反功能4.步进电机定速运行编制程序使步进电机以每分钟30圈的速度正转2、写出实验中,步进电机正反转,以及恒速运行的程序流程图,以及C语言源程序。1.步进电机正反转/程序说明: 此程序通过I/O口驱动步进电机,实现步进电机正反转/P50-STEPA P51-STEPB P52-STEPC P53-STEPD#include

8、/ SFR declarations#include 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 char k; u

9、nsigned char SendData; WDTCN = 0xde; /*无效看门狗*/ WDTCN = 0xad; PORT_Init (); SendData=0xff; /*4相线圈都截止*/ while(1) /*步进电机正转*/ for(k=0;k10;k+) SendData=0x0e; /*A相通电*/ P5=SendData; sleep_ms(250); sleep_ms(250); sleep_ms(250); SendData=0x0c; /*AB相通电*/ P5=SendData; sleep_ms(250); sleep_ms(250); sleep_ms(250

10、); SendData=0x0d; /*B相通电*/ P5=SendData; sleep_ms(250); sleep_ms(250); sleep_ms(250); SendData=0x09; /*BC相通电*/ P5=SendData; sleep_ms(250); sleep_ms(250); sleep_ms(250); SendData=0x0b; /*C相通电*/ P5=SendData; sleep_ms(250); sleep_ms(250); sleep_ms(250); SendData=0x03; /*CD相通电*/ P5=SendData; sleep_ms(250

11、); sleep_ms(250); sleep_ms(250); SendData=0x07; /*D相通电*/ P5=SendData; sleep_ms(250); sleep_ms(250); sleep_ms(250); SendData=0x06; /*DA相通电*/ P5=SendData; sleep_ms(250); sleep_ms(250); sleep_ms(250); /*步进电机反转*/ for(k=0;k10;k+) SendData=0x06; P5=SendData; sleep_ms(250); sleep_ms(250); SendData=0x03; P5

12、=SendData; sleep_ms(250); sleep_ms(250); SendData=0x09; P5=SendData; sleep_ms(250); sleep_ms(250); SendData=0x0c; P5=SendData; sleep_ms(250); sleep_ms(250); /*函数名称: void PORT_Init(void)功能描述: 初始化I/O输入: 无输出: 无全局变量: XBR2,P74OUT调用模块: 无*/void PORT_Init (void) XBR2 = 0x40; /*使能交叉开关和弱上拉*/ P74OUT |= 0x0f; /

13、*P5低4位为推挽输出,其余口为开漏输出*/2.步进电机恒速运行/程序说明: 此程序通过I/O口驱动步进电机,实现步进电机以每分钟30圈的速度正转/P50-STEPA P51-STEPB P52-STEPC P53-STEPD#include / SFR declarations#include void PORT_Init (void);/*函数名称: void sleep_ms(WORD count)功能描述: 延时输入: WORD count(所要延时的长度)输出: 无全局变量: 无调用模块: _nop_()*/void sleep_ms(unsigned char count) uns

14、igned char ii,jj; for(ii=0;iicount;ii+) for(jj=0;jj250;jj+) _nop_(); /-/ MAIN Routine/-void main (void) unsigned char k; unsigned char SendData; WDTCN = 0xde; /*无效看门狗*/ WDTCN = 0xad; PORT_Init (); SendData=0xff; /*4相线圈都截止*/ while(1) /*步进电机正转*/ for(k=0;k10;k+) SendData=0x0e; /*A相通电*/ P5=SendData; sle

15、ep_ms(25); sleep_ms(25); sleep_ms(25); SendData=0x0c; /*AB相通电*/ P5=SendData; sleep_ms(25); sleep_ms(25); sleep_ms(25); SendData=0x0d; /*B相通电*/ P5=SendData; sleep_ms(25); sleep_ms(25); sleep_ms(25); SendData=0x09; /*BC相通电*/ P5=SendData; sleep_ms(25); sleep_ms(25); sleep_ms(25); SendData=0x0b; /*C相通电*

16、/ P5=SendData; sleep_ms(25); sleep_ms(25); sleep_ms(25); SendData=0x03; /*CD相通电*/ P5=SendData; sleep_ms(25); sleep_ms(25); sleep_ms(25); SendData=0x07; /*D相通电*/ P5=SendData; sleep_ms(25); sleep_ms(25); sleep_ms(25); SendData=0x06; /*DA相通电*/ P5=SendData; sleep_ms(25); sleep_ms(25); sleep_ms(25); /*函数

17、名称: void PORT_Init(void)功能描述: 初始化I/O输入: 无输出: 无全局变量: XBR2,P74OUT调用模块: 无*/void PORT_Init (void) XBR2 = 0x40; /*使能交叉开关和弱上拉*/ P74OUT |= 0x0f; /*P5低4位为推挽输出,其余口为开漏输出*/流程图在实验报告上1、简述实验内容准备工作:将P1.0用短接线连接到实验箱上的PWM点。1.编制程序将PCA模块中的CEX0引脚配置在P1.02.编制程序实现8位PWM控制直流电机的运行,试改变8位PWM信号的占空比,观察电机转速的变化。3.编制程序实现16位PWM控制直流电机

18、的运行,试改变16位PWM信号的占空比,观察电机转速的变化。2、说明PCA模块的交叉开关引脚分配。题目中要求将PCA模块中的CEX0引脚配置在P1.0,但实际操作时没有配置成功,最终将PCA模块中的CEX0引脚配置在P1.2。具体引脚分配:P0.0被分配给TX0,P0.1被分配给RX0,P0.2被分配给SCK,P0.3被分配给MISO,P0.4被分配给MOSI,P0.5被分配给NSS,P0.6被分配给SDA,P0.7被分配给SCL,P1.0被分配给TX1,P1.1被分配给RX1,P1.2被分配给CEX0。3、写出程序的流程图,以及C语言源程序。1.8位PWM控制直流电机的运行/程序说明: 此程

19、序实现PCA的8位PWM输出,输出脚配置在P1.2脚。#include /*SFR定义*/-/ Function PROTOTYPES/-void PORT_Init (void);void PCA_Init (void);void PCA_ISR (void);/-/ MAIN Routine/-void main (void) WDTCN = 0xde; WDTCN = 0xad; /*关看门狗*/ PORT_Init (); /*初始化IO口*/ PCA_Init (); /*PCA初始化成16位脉宽调置方式*/ EA = 1; /*开总中断*/ while (1) void PORT_

20、Init (void) XBR0 = 0x0f; /*CEX0-P1.2*/ XBR2 = 0x44; /*使能交叉开关和弱上拉*/void PCA_Init (void) EIE1 = 0x08; PCA0L = 0x00; PCA0CPM0 = 0x4b; /*8位PWM方式,当CCF0=1时,允许辅捉/比较标志的中断申请*/ PCA0CPL0 = 0x00; /*置初值*/ PCA0CPH0 = 0x80; PCA0CN = 0x40; /*允许PCA定时器/计数器*/*PCA中断子程序*/void PCA_ISR (void) interrupt 9 CF = 0; /*清溢出中断标志

21、*/ CCF0 = 0; /*清匹配中断标志*/2.16位PWM控制直流电机的运行/程序说明: 此程序实现PCA的16位PWM输出,输出脚配置在P1.2脚。#include /*SFR定义*/-/ Function PROTOTYPES/-void PORT_Init (void);void PCA_Init (void);void PCA_ISR (void);/-/ MAIN Routine/-void main (void) WDTCN = 0xde; WDTCN = 0xad; /*关看门狗*/ PORT_Init (); /*初始化IO口*/ PCA_Init (); /*PCA初始

22、化成16位脉宽调置方式*/ EA = 1; /*开总中断*/ while (1) void PORT_Init (void) XBR0 = 0x0f; /*CEX0-P1.2*/ XBR2 = 0x44; /*使能交叉开关和弱上拉*/void PCA_Init (void) EIE1 = 0x08; PCA0L = 0x00; PCA0H = 0x00; PCA0CPM0 = 0xcb; /*16位PWM方式,当CCF0=1时,允许辅捉/比较标志的中断申请*/ PCA0CPL0 = 0x00; /*置初值*/ PCA0CPH0 = 0x80; PCA0CN = 0x40; /*允许PCA定时器/计数器*/*PCA中断子程序*/void PCA_ISR (void) interrupt 9 CF = 0; /*清溢出中断标志*/ CCF0 = 0; /*清匹配中断标志*/流程图在实验报告上实验1 PLC实现启动、保持和停止功能(1)将输入端X0,X1接至开关0,开关1,编制程序实

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

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