嵌入式系统实训报告Word下载.docx

上传人:b****7 文档编号:22815314 上传时间:2023-02-05 格式:DOCX 页数:18 大小:117.48KB
下载 相关 举报
嵌入式系统实训报告Word下载.docx_第1页
第1页 / 共18页
嵌入式系统实训报告Word下载.docx_第2页
第2页 / 共18页
嵌入式系统实训报告Word下载.docx_第3页
第3页 / 共18页
嵌入式系统实训报告Word下载.docx_第4页
第4页 / 共18页
嵌入式系统实训报告Word下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

嵌入式系统实训报告Word下载.docx

《嵌入式系统实训报告Word下载.docx》由会员分享,可在线阅读,更多相关《嵌入式系统实训报告Word下载.docx(18页珍藏版)》请在冰豆网上搜索。

嵌入式系统实训报告Word下载.docx

但是,仅通过写IOxSET或IOxCLR寄存器是不可能使一个GPIO口同时输出包含0和1的二进制数。

图1

五、程序代码

#include"

includes.h"

intmain(void)

{

PINSEL0=PINSEL0&

(~(3ul<

<

6));

PINSEL2=PINSEL2&

(~(13ul<

3));

14));

IO0DIR=IO0DIR|(1ul<

3);

IO1DIR=IO0DIR|(1ul<

24);

25);

7);

IO0CLR=(1ul<

IO0SET=(1ul<

while

(1)

{

}

}

第二阶段UART的使用

1、掌握LPC21XX系列处理器UART的使用方法

2、掌握串口调试助手的使用

使用串口调试助手控制LED的亮和灭,当收到0时,熄灭LED,否则点亮

四、LPC21XX的UART的使用

LPC21XX的UART使用的主要步骤如图2所示。

其中前四步叫做初始化UART,一般放在一个初始化函数中完成。

图2

voidDelay(unsignedintt)

unsignedinti;

while(t--)

{

i=3000;

while(i--);

}

voidInitUART0(void)

{

PINSEL0=(PINSEL0&

0xfffffff0)|(0x01<

0)|(0x01<

2);

U0LCR=0x80;

U0DLM=0;

U0DLL=180;

U0LCR=0x03;

unsignedcharUART0_RcvByte(void)

unsignedcharrcv_data;

while((U0LSR&

0x01)==0);

rcv_data=U0RBR;

return(rcv_data);

InitUART0();

rcv_data=UART0_RcvByte()-'

0'

;

if(rcv_data==0)

{

IO0SET=1ul<

3;

IO0SET=1ul<

7;

IO1SET=1ul<

24;

25;

}

else

IO0CLR=1ul<

IO1CLR=1ul<

}

第三阶段中断系统的使用

1、理解LPC21XX系列处理器的中断系统

2、掌握中断的概念和LPC21XX中断系统的程序编写方法

使用中断的方法接收UART发送过来的数据,然后再控制LED的亮和灭,当收到0时,熄灭LED,否则点亮。

PC端使用的是串口调试助手。

四、中断的使用

中断使用流程步骤如图3所示。

图3

#include"

unsignedintGetsome;

voidInitUART0(void)

U0IER=U0IER&

0xfe|0x01;

voidInitVIC(void)

VICIntSelect=VICIntSelect&

(~(1ul<

VICVectCntl2=0x20|0x06;

VICVectAddr2=(unsignedint)UART0_RcvByte;

VICIntEnable=1<

0x06;

void__irqUART0_RcvByte(void)

unsignedcharIIR;

IIR=U0IIR;

if((IIR&

0x01)==0)

IIR=IIR&

0x0e;

if((IIR==0x04)||(IIR==0x0c))

{

while(U0LSR&

0x01)

{

Getsome=U0RBR;

if(Getsome=='

{

IO1SET=1ul<

IO0SET=1ul<

IO1SET=1ul<

IO0SET=1ul<

}

else

IO1CLR=1ul<

IO0CLR=1ul<

IO1CLR=1ul<

}

}

VICVectAddr=0;

LongDelay=1;

6))&

(~(7ul<

3)|(1ul<

PINSEL1=PINSEL1&

(~(24ul<

16))&

(~(25ul<

18));

IO1DIR=IO1DIR|(1ul<

24)|(1ul<

InitVIC();

while

(1);

第四阶段定时器的使用

1、理解LPC21XX系列处理器的定时器

2、掌握LPC21XX系列处理器的定时器的结构

1、使用查询的模式,用定时器控制LED实现1S周期的闪亮

2、使用中断的模式,用定时器控制LED实现0.5S周期的闪亮

普通PC、嵌入式系统实验板

四、定时器的使用

查询模式的定时器使用流程如图4所示,中断模式的定时器使用流程如图5所示。

图4

图5

查询模式:

T0PR=13823;

T0TCR=1<

1;

IO0CLR=1ul<

IO1CLR=1ul<

0;

while(T0TC<

1000);

IO0SET=1ul<

IO1SET=1ul<

中断的模式:

unsignedcharLEDState;

voidInitTimer0(void)

T0MCR=1<

6|1<

T0MR2=500;

T0TCR=1<

void__irqTimer0Match(void)

if(T0IR&

0x04)

T0IR=0x04;

if(LEDState==0)

IO0CLR=1ul<

LEDState=!

LEDState;

else

LEDState=0;

VICIntSelect=0x0;

VICVectCntl0=0x20|0x04;

VICVectAddr0=(unsignedint)Timer0Match;

VICIntEnable=1ul<

4;

MEMMAP=0x2;

LEDState=0;

InitTimer0();

第五阶段LED亮度的PC控制

1、掌握程序联合调试的能力

2、掌握定时器产生PMW信号的方法

3、掌握中断系统的复杂使用

对LED亮度分成10级显示,当接收到字符“0”时,亮度为最低,即熄灭,接收到字符“1”时,显示为1级亮度,当接收到“9”时,亮度最大。

各级亮度自行定义,能区分即可。

四、程序流程图

等待中断

图6

五、程序代码

Key.h"

unsignedcharir=T0IR;

if(ir&

0x02)

T0IR=1<

unsignedcharkeyin;

T0PR=1382;

T0MR1=1000;

T0MCR=1ul<

0|1ul<

1|1ul<

T0TCR=1ul<

4));

VICVectCntl6=0x20|0x04;

VICVectAddr6=(unsignedint)Timer0Match;

Key_Init();

keyin=Key();

switch(keyin)

case1:

T0MR1=875;

break;

case2:

T0MR1=750;

case3:

T0MR1=625;

case4:

T0MR1=500;

case5:

T0MR1=375;

case6:

T0MR1=250;

case7:

T0MR1=125;

case8:

T0MR1=0;

default:

break;

第六阶段LED亮度的自动控制

2、掌握LPC21XX系列AD的使用

3、掌握闭环系统的控制方法

使用一个光敏电阻做光传感器,当外界光亮度发生变化时,LED的亮度能随之发生相应的变化,以保持足够的对比度。

光越强,LED亮度越高,光越低,LED越暗。

等待定时器中断

图7

五、程序说明

该实训是通过光敏电阻来调节LED灯的亮度的,PLC通光敏电阻的电压的变化值来采集变化的数据的,当PLC得到电压的变化数据之后,通过判断数据的变化范围,来设置产生PWM的中断匹配值或通过一条对应公式直接改变产生PWM的中断匹配值。

这里更改匹配值的中断函数与之前做过的类似。

实训心得

在这次的实训中也遇到很多的困难,常常会因为这些那些小小的编程错误而使得程序无法照常运行,但是通过回忆以前做过的实验,并与其他同学交流,最终可以说还是解决了问题。

不过,正是因为这些困难的存在,让我发现了自己哪方面存在的知识比较薄弱,这利于以后有针对性地进行补充知识。

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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