矿大飞思卡尔实验指导书及程序Word格式.docx

上传人:b****2 文档编号:3939575 上传时间:2023-05-02 格式:DOCX 页数:42 大小:21.71KB
下载 相关 举报
矿大飞思卡尔实验指导书及程序Word格式.docx_第1页
第1页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第2页
第2页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第3页
第3页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第4页
第4页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第5页
第5页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第6页
第6页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第7页
第7页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第8页
第8页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第9页
第9页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第10页
第10页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第11页
第11页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第12页
第12页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第13页
第13页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第14页
第14页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第15页
第15页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第16页
第16页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第17页
第17页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第18页
第18页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第19页
第19页 / 共42页
矿大飞思卡尔实验指导书及程序Word格式.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

矿大飞思卡尔实验指导书及程序Word格式.docx

《矿大飞思卡尔实验指导书及程序Word格式.docx》由会员分享,可在线阅读,更多相关《矿大飞思卡尔实验指导书及程序Word格式.docx(42页珍藏版)》请在冰点文库上搜索。

矿大飞思卡尔实验指导书及程序Word格式.docx

1.掌握MCU串行通信基本编程方法

2.学会MCU与微机的串行通信编程

1.轮询方式串口通信

2.中断方式串口通信

3.程序修改与调试

四、验证方式

1.连接上位机,从串口以不同波特率发送字符,并得到下位机的反馈

实验四(4学时)

串口控制LED实验

1.熟练应用三色LED控制

2.熟练应用串口通信

1.利用串口控制LED显示赤橙黄绿青蓝紫七色

1.演示,要求三色LED能从赤逐渐显示到紫

实验五(8学时)

加速度传感器读取

1.认识I2C通信协议

2.利用I2C协议与传感器进行通信

3.熟练应用三色LED控制

1.读取加速度传感器三轴加速度和根据不同加速度改变LED颜色

1.从加速度传感器读取数据,并在串口打印输出

2.根据加速度传感器不同状态改变三色LED的颜色

实验六(4学时)

打飞机小游戏设计

1.加速度传感器熟练应用

2.熟练运用串口

1.综合利用多个构件读取加速度传感器数据控制游戏中的飞机运动

完成游戏获得5000分

实验七(4学时)

简单计步器

2.计步算法理解

1.综合利用多个构件读取加速度传感器数据完成简单人体计数

1.走10步、20步、30步,LED成不同颜色

 

实验程序

实验一实验硬件与软件认识

intmain(void)

{

#ifdefCMSIS//IfweareconformingtoCMSIS,weneedtocallstarthere

start();

#endif

printf("

\n\rRunningtheGGGGGGproject.\n\r"

);

SIM_SCGC5|=SIM_SCGC5_PORTB_MASK;

SIM_SCGC5|=SIM_SCGC5_PORTD_MASK;

PORTB_PCR19=PORT_PCR_MUX

(1);

PORTB_PCR18=PORT_PCR_MUX

(1);

PORTD_PCR1=PORT_PCR_MUX

(1);

GPIOB_PDDR|=1<

<

19;

18;

GPIOD_PDDR|=1<

1;

GPIOB_PDOR|=(1<

19);

GPIOD_PDOR|=(1<

1);

while

(1)

{

GPIOB_PDOR&

=~(1<

18);

for(uint32i=0;

i<

0x4fffff;

i++);

}

}

\n\rRunningthe2222222project.\n\r"

GPIOB_PDOR&

GPIOD_PDOR&

实验二LED发光与变色实验

voidUART_Init(uint16baud_rate)

{

uint16uart0_clk_khz=24000;

uint16sbr;

PORTA_PCR1=PORT_PCR_MUX(0x02);

PORTA_PCR2=PORT_PCR_MUX(0x02);

SIM_SCGC4|=SIM_SCGC4_UART0_MASK;

SIM_BASE_PTR->

SOPT2|=SIM_SOPT2_UART0SRC

(1);

UART0_C2&

=~(UART0_C2_TE_MASK|UART0_C2_RE_MASK);

sbr=(uint16)((uart0_clk_khz*1000)/(baud_rate*16));

UART0_BDH=UART0_BDH&

(~UART0_BDH_SBR_MASK);

UART0_BDL=(uint8)(sbr&

UART0_BDL_SBR_MASK);

UART0_C4=UART0_C4_OSR(15);

UART0_C1=0x00;

UART0_S1|=0x1F;

UART0_S2|=(UART0_S2_LBKDE_MASK|UART0_S2_RXEDGIF_MASK);

UART0_C2|=(UART_C2_TE_MASK|UART_C2_RE_MASK);

charch;

#endif

UART_Init(9600);

\n\rRunningthesixianghuibaoproject.\n\r"

while(!

(UART0_S1&

UART0_S1_RDRF_MASK));

ch=UART0_D;

while(!

UART0_S1_TDRE_MASK));

UART0_D=ch;

voidUART_Init(uint32baud_rate)

SIM_SCGC4|=SIM_SCGC4_UART0_MASK;

SIM_SOPT2|=SIM_SOPT2_UART0SRC

(1);

sbr=(uint16)((uart0_clk_khz*1000)/(baud_rate*16));

UART0_BDH=0x00;

UART0_BDL=0x0D;

UART0_C4=UART0_C4_OSR(15);

UART0_S1|=0x1f;

UART0_C2|=(UART_C2_TE_MASK|UART_C2_RE_MASK);

}

voidUART_irq_enable()

UART0_C2|=UART0_C2_RIE_MASK;

enable_irq(12);

voiduart0_isr()

charch;

(UART0_S1&

UART0_S1_TDRE_MASK));

intmain(void)

#ifdefCMSIS

UART_Init(115200);

UART_irq_enable();

\n\rhollomoto\n\r"

{

/********************************************************************/

Isr.h

#ifndef__ISR_H

#define__ISR_H1

/*Example*/

/*

#undefVECTOR_101

#defineVECTOR_101lpt_isr

//ISR(s)aredefinedinyourprojectdirectory.

externvoidlpt_isr(void);

*/

#undefVECTOR_028

#defineVECTOR_028uart0_isr

externvoiduart0_isr(void);

#endif//__ISR_H

实验三串行通信实验

*File:

i2c_accel.c

*Purpose:

Mainprocess

*

*/

#include"

common.h"

start.h"

#defineSENSOR_I2C_ADDRESS0x1D

#defineIICWRITE(iicaddress)((iicaddress<

1)&

0xFE)

#defineIICREAD(iicaddress)((iicaddress<

1)|0x01)

#defineSENSOR_I2C_ADDRESS_WIICWRITE(SENSOR_I2C_ADDRESS)

#defineSENSOR_I2C_ADDRESS_RIICREAD(SENSOR_I2C_ADDRESS)

voidi2c_Init()

SIM_SCGC4|=SIM_SCGC4_I2C0_MASK;

SIM_SCGC5|=SIM_SCGC5_PORTC_MASK;

PORTE_PCR24=PORT_PCR_MUX(5)|PORT_PCR_PE_MASK|PORT_PCR_PS_MASK;

PORTE_PCR25=PORT_PCR_MUX(5)|PORT_PCR_PE_MASK|PORT_PCR_PS_MASK;

I2C0_F=0x00;

I2C0_C1=I2C_C1_IICEN_MASK;

I2C0_FLT|=I2C_FLT_FLT(16);

uint8i2c_read_byte(uint8reg)

uint16ch;

uint8c;

I2C0_C1|=I2C_C1_TX_MASK;

I2C0_C1&

=~I2C_C1_TXAK_MASK;

I2C0_S|=I2C_S_IICIF_MASK;

I2C0_C1|=I2C_C1_MST_MASK;

I2C0_D=SENSOR_I2C_ADDRESS_W;

while((I2C0_S&

I2C_S_IICIF_MASK)==0);

I2C_S_RXAK_MASK)==1);

I2C0_D=reg;

I2C0_S|=I2C_S_IICIF_MASK;

I2C0_C1|=I2C_C1_RSTA_MASK;

for(ch=0;

ch<

100;

ch++)

asm("

nop"

I2C0_D=SENSOR_I2C_ADDRESS_R;

=~I2C_C1_TX_MASK;

I2C0_C1|=I2C_C1_TXAK_MASK;

c=I2C0_D;

=~I2C_C1_MST_MASK;

500;

returnc;

voidi2c_write_byte(uint8reg,uint8m)

I2C0_D=m;

uint16uart0_clk_khz=24000;

PORTA_PCR1=PORT_PCR_MUX(0x02);

PORTA_PCR2=PORT_PCR_MUX(0x02);

SIM_SCGC4|=SIM_SCGC4_UART0_MASK;

SIM_SOPT2|=SIM_SOPT2_UART0SRC

(1);

=~(UART0_C2_TE_MASK|UART0_C2_RE_MASK);

UART0_BDH=UART0_BDH&

(~UART0_BDH_SBR_MASK);

UART0_BDL=(uint8)(sbr&

UART0_C4=UART0_C4_OSR(15);

UART0_C1=0x00;

UART0_S1|=0x1F;

UART0_C2|=(UART_C2_TE_MASK|UART_C2_RE_MASK);

voidpwm_Init(uint16period,uint16duty)

//SIM_SOPT2=SIM_SOPT2_PLLFLLSEL_MASK;

SIM_SOPT2|=SIM_SOPT2_TPMSRC

(1);

SIM_SCGC6|=SIM_SCGC6_TPM0_MASK

|SIM_SCGC6_TPM2_MASK;

PORTD_PCR1|=PORT_PCR_MUX(4);

TPM0_BASE_PTR->

SC=0|TPM_SC_CMOD(0);

CNT=0;

MOD=period;

TPM0_C1SC=0|TPM_CnSC_MSB_MASK

|TPM_CnSC_ELSB_MASK;

TPM0_C1V=duty;

SC=0|TPM_SC_CMOD

(1)

|TPM_SC_PS(4);

PORTB_PCR18|=PORT_PCR_MUX(3);

PORTB_PCR19|=PORT_PCR_MUX(3);

TPM2_BASE_PTR->

TPM2_C0SC=0|TPM_CnSC_MSB_MASK

TPM2_C0V=duty;

TPM2_C1SC=0|TPM_CnSC_MSB_MASK

TPM2_C1V=duty;

voidpwm_Set(uint8ch,uint16duty)

switch(ch)

case1:

break;

case2:

case3:

uint8x;

uint8XH,XL,YH,YL,ZH,ZL;

int8xh,yh,zh;

uint8temp;

#ifdefCMSIS//IfweareconformingtoCMSIS,weneedtocallstarthere

printf("

\n\rRunningtheexperiment_5project.\n\r"

i2c_Init();

pwm_Init(100,50);

x=i2c_read_byte(0x0D);

if(x==0x1A)

i2c_write_byte(0x2A,0x19);

i2c_write_byte(0x0E,0x01);

else

\n\rPleasecheckoutyourMMA81451!

\n\r"

x=i2c_read_byte(0x00);

if(x&

0x08==0x08)

XH=i2c_read_byte(0x01);

XL=i2c_read_byte(0x02);

YH=i2c_read_byte(0x03);

YL=i2c_read_byte(0x04);

ZH=i2c_read_byte(0x05);

ZL=i2c_read_byte(0x06);

uart0_putchar(UART0_BASE_PTR,0xFF);

uart0_putchar(UART0_BASE_PTR,XH-1);

uart0_putchar(UART0_BASE_PTR,XL);

uart0_putchar(UART0_BASE_PTR,YH-1);

uart0_putchar(UART0_BASE_PTR,YL);

uart0_putchar(UART0_BASE_PTR,ZH-1);

uart0_putchar(UART0_BASE_PTR,ZL);

xh=i2c_read_byte(0x01);

yh=i2c_read_byte(0x03);

zh=i2c_read_byte(0x05);

temp=(uint8)((128+xh)/256.0*100.0);

pwm_Set(1,temp);

temp

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

当前位置:首页 > 工程科技 > 纺织轻工业

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2