ARM实训报告五路智能抢答器Word格式文档下载.docx

上传人:b****5 文档编号:19001702 上传时间:2023-01-02 格式:DOCX 页数:18 大小:895.78KB
下载 相关 举报
ARM实训报告五路智能抢答器Word格式文档下载.docx_第1页
第1页 / 共18页
ARM实训报告五路智能抢答器Word格式文档下载.docx_第2页
第2页 / 共18页
ARM实训报告五路智能抢答器Word格式文档下载.docx_第3页
第3页 / 共18页
ARM实训报告五路智能抢答器Word格式文档下载.docx_第4页
第4页 / 共18页
ARM实训报告五路智能抢答器Word格式文档下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

ARM实训报告五路智能抢答器Word格式文档下载.docx

《ARM实训报告五路智能抢答器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《ARM实训报告五路智能抢答器Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。

ARM实训报告五路智能抢答器Word格式文档下载.docx

三、实验仪器

1、装有ADS1.2及EasyJTAG仿真器的电脑一台

2、ARM7开发板一块

四、实验原理

(一)、GPIO的相关原理

4.1.4、GPIO——蜂鸣器控制

如果跳线JP11选择蜂鸣器,当P0.7输出低电平,蜂鸣器蜂鸣,当P0.7输出高电平时,蜂鸣器停止蜂鸣。

实验利用P0.7的输出功能,控制蜂鸣器,程序设置PINSEL0使P0.7链接GPIO,并通过IO0DIR将其设置输出状态,然后通过IO0CLR和IO0SET清零和置位P0.7口,控制蜂鸣器。

4.1.5、GPIO输出——单路LED控制

实验程序首先设置管脚链接GPIO,接着设置P1.18口为输出模式,然后通过IO1CLR和IO1SET控制盘.18,驱动LED1的亮灭。

4.1.6、GPIO输出——多路LED控制

当跳线JP12全部选择LED8~LED1后,P1.25~P1.18分别控制这8路LED,就可以进行流水灯实验。

(二)、SPI接口相关原理

4.2.1、概述

4.2.2、特性

4.2.3、管脚描述

4.2.4、结构

4.2.5、SPI基本操作

4.2.6、SPI——7段数码显示

(三)、定时器0相关原理

4.3.1、概述

4.3.2、特性

4.3.3、结构

4.3.4、功能框图

4.3.5、定时器查询

(四)、脉宽调制相关原理

4.4.1、概述

4.4.2、特性

4.4.3、管脚描述

4.4.4、结构

4.4.5、基本操作

4.4.6、PWM音乐输出

五、实验程序

/****************************************Copyright(c**************************************************

**GuangzouZLG-MCUDevelopmentCo.,LTD.

**graduateschool

**

**

**--------------FileInfo-------------------------------------------------------------------------------

**Filename:

main.c

**LastmodifiedDate:

2004-09-16

**LastVersion:

1.0

**Descriptions:

Themain(functionexampletemplate

**------------------------------------------------------------------------------------------------------

**Createdby:

Chenmingji

**Createddate:

**Version:

Theoriginalversion

**Modifiedby:

Chenxibing

**Modifieddate:

2005-01-14

SPI实验,74HC595驱动7段数码管。

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

#include"

config.h"

music.h"

#defineBEEP1<

<

15//P0.12控制蜂鸣器

#defineHC595_CS(1<

29//P0.29口为74HC595的片选

constuint32LEDS8=(0xFF<

18;

constuint32LED1=(1<

constuint32LED2=(1<

19;

constuint32LED3=(1<

20;

constuint32LED4=(1<

21;

constuint32LED5=(1<

22;

constuint32LED6=(1<

23;

constuint32KEY1=1<

16;

constuint32KEY2=1<

17;

constuint32KEY3=1<

18;

constuint32KEY4=1<

19;

constuint32KEY5=1<

20;

constuint32KEY6=1<

21;

uint32i;

uint8rcv_data;

constuint32HCMM[]=

{

_MI,_SO,_LA,_LA,_SO,_LA,_MI,_RE,

_MI,_SO,_LA,_LA,_SO,_LA,_MI,

_SO,_MI,_RE,_MI,_RE,_DO,_RE,_LA,

_1LA,_RE,_SO,_MI,_RE,_DO,_1LA,

};

constuint32HCMM_L[]=

_8,_8,_8,_16,_16,_8d,_16,_4,

_8,_8,_8,_16,_16,_8,_4,

_4,_4,_16,_16,_16,_16,_8,_4,

_4,_8d,_8,_4,_16,_16,_8d,

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

**函数名称:

DelayNS(

**函数功能:

长软件延时

**入口参数:

dly延时参数,值越大,延时越久

**出口参数:

voidDelayNS(uint32dly

{

for(;

dly>

0;

dly--

for(i=0;

i<

50000;

i++;

}

voidDelay(uint32dly

0x7ffff;

voiddingshi(

/*定时器0初始化*/

T0TC=0;

/*定时器设置为0*/

T0PR=0;

/*时钟不分频*/

T0MCR=0x03;

/*设置T0MR0匹配后复位T0TC,并产生中断标志*/

T0MR0=Fpclk*5;

/*5秒钟定时*/

T0TCR=0x01;

/*启动定时器*/

T0IR=0x01;

while((T0IR&

0x01==0;

/*等待定时时间到*/

}

MSPI_Init(

初始化SPI接口,设置为主机。

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

voidMSPI_Init(void

PINSEL0=0x00005500;

//设置管脚连接SPI

PINSEL2=PINSEL2&

(~0x08;

//P1[25:

16]连接GPIO

SPCCR=0x52;

//设置SPI时钟分频

SPCR=(0<

3|//CPHA=0,数据在SCK的第一个时钟沿采样

(1<

4|//CPOL=1,SCK为低有效

5|//MSTR=1,SPI处于主模式

(0<

6|//LSBF=0,SPI数据传输MSB(位7在先

7;

//SPIE=0,SPI中断被禁止

MSPI_SendData(

向SPI总线发送数据。

data待发送的数据

返回值为读取的数据

uint8MSPI_SendData(uint8data

IOCLR=HC595_CS;

//片选74HC595

SPI_SPDR=data;

while(0==(SPI_SPSR&

0x80;

//等待SPIF置位,即等待数据发送完毕

IOSET=HC595_CS;

return(SPI_SPDR;

constuint32LED_TBL[]={

0x00,0xFF,//全部熄灭后,再全部点亮

0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,//依次逐个点亮

0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,//依次逐个叠加

0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,//依次逐个递减

0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81,//两个靠拢后分开

0x81,0xC3,0xE7,0xFF,0xFF,0xE7,0xC3,0x81};

//从两边叠加后递减

/*此表为LED0~F以及L、P的字模*/

uint8constDISP_TAB[6]={

//012345

0xC0,0xF9,0xA4,0xB0,0x99,0x92};

music(

{PINSEL0=0x02<

14;

40;

i++

PWMMR0=Fpclk/HCMM[i];

//设置输出频率

PWMLER=0x05;

//更新匹配值后,必须锁存

IO1SET=~((LED_TBL[i]<

IO1CLR=((LED_TBL[i]<

Delay(HCMM_L[i];

main(

使用硬件SPI,74HC595驱动控制7段数码管显示。

**先显示0~F的字模,然后显示LPC2131字样。

intmain(void

{uint8i,k;

//设置SPI管脚连接

PINSEL1=0x00000000;

PINSEL0=0x02<

IO0DIR=BEEP|HC595_CS;

//P1[25:

IO1DIR=LEDS8;

//设置LED1控制口为输出

MSPI_Init(;

IO1SET=LEDS8;

IO0SET=BEEP;

PWMPR=0x00;

//不分频,计数频率为Fpclk

PWMMCR=0x02;

//设置PWMMR0匹配时复位PWMTC

PWMPCR=0x0400;

//允许PWM2输出,单边PWM

PWMMR0=Fpclk/500;

PWMMR2=PWMMR0/2;

//50%占空比

//PWM0和PWM2匹配锁存

PWMTCR=0x02;

//复位PWMTC

PWMTCR=0x09;

//启动PWM输出

//初始化SPI接口

while(1

if((IO0PIN&

KEY6==0

rcv_data=MSPI_SendData(DISP_TAB[0];

//发送显示数据

IO1CLR=LED6;

DelayNS(20;

IO1SET=LED6;

KEY1==0

{rcv_data=MSPI_SendData(DISP_TAB[1];

//发送显示数据

IO1CLR=LED1;

//LED1点亮

IO1SET=LED1;

//LED1熄灭

dingshi(;

//进入定时程序

spanwhile(((IO0PIN&

KEY6!

=0&

((T0IR&

0x01==0//当按键6未按下且定时时间到

pmusic(;

}//进入音乐输出程序

spanelseif((IO0PIN&

KEY2==0//按键二按下

{rcv_data=MSPI_SendData(DISP_TAB[2];

//span发送显示数据数码显示2

IO1CLR=LED2;

//LED2点亮

//延时

IO1SET=LED2;

//LED2熄灭

while(((IO0PIN&

0x01==0当按键6未按下且定时时间到

music(;

}//进入音乐输出程序

elseif((IO0PIN&

KEY3==0//按键三按下

{rcv_data=MSPI_SendData(DISP_TAB[3];

//发送显示数据数码显示3

IO1CLR=LED3;

//LED3点亮

IO1SET=LED3;

KEY4==0//按键四按下

{rcv_data=MSPI_SendData(DISP_TAB[4];

//发送显示数据数码显示4

IO1CLR=LED4;

//LED4点亮

IO1SET=LED4;

//LED4熄灭

KEY5==0//按键五按下

{rcv_data=MSPI_SendData(DISP_TAB[5];

//发送显示数据数码显示5

IO1CLR=LED5;

//LED5点亮

DelayNS(50;

IO1SET=LED5;

//LED5熄灭

return0;

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

**EndOfFile

六、实验现象及结果

当程序执行时,LPC2138开发板的LED6闪烁的亮,表示准备开始比赛,当主持人按下按键6(作为开始按键),这时数码管显示数字0,表示进入抢答开始抢答,这时选手1到5谁先按下按键,谁优先抢答到,通过寄存器锁存,数码显示相应选手的号码,且相应的灯就亮,灯亮后延时熄灭,表示选手进入抢答状态的定时状态,定时30s回答,应用定时器0的查询方式当定时时间到了且按键六没按下复位,这时通过PWM2音乐输出且配有流水灯花样,表示此轮抢答结束,此时才能按下按键6才能复位开始新一轮的抢答。

七、实训心得

通过这次实训设计。

我设计电子智能抢答器,采用ARM7中的GPIO、SPI接口、定时器0、脉宽调制PWM等相关知识的结合。

把在学校三年所学知识连成一串。

理论联系实践,体现出大学生动手能力。

通过查资料和搜集有关的文献,培养了自学能力和动手能力。

并且由原先的被动的接受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。

在以往的传统的学习模式下,我们可能会记住很多的书本知识,但是通过实习论文,我们学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。

把握重点、攻克难关,学到用到、活学活用。

在设计过程中由于时间仓促有很多地方难免存在不足之处,原先定时器定时总不能按预想的工作,后来在老师的指点下终于把问题解决了,并实现了自己原先设想的相关功能,达到了设计的目的,在软件设计中有些功能还尚未开发出来。

但在以后的工作中,我们会严格要求自己,追求完美。

谢辞

当我以学子的身份踏入龙岩学院校门的那天起,便已注定我将在这里度过人生中最美丽的青春年华。

提笔写下“谢辞”,我才惊觉自己即将真正离开,人生亦从此展开新的画卷。

尽管不舍,却更珍惜,因为我的生命中有那么多可爱的人值得感激。

他们使我的大学生活充满了色彩,无论收获、遗憾,对我来说都是一笔宝贵的财富。

四年的大学生活不知不觉中就要过来四分之三了,在这段难忘的生活中,有我许多美好的回忆。

在大学的点点滴滴的美好回忆里,感谢学院给我们提供这个能自我展示的平台,感谢我的指导教师涂二生老师,你从一开始的方向的选定,到最后的实训的圆满的完成,都非常耐心的对我进行指导。

给我提供了大量建议,告诉我应该注意的细节问题,细心的给我指出错误进行修改。

谢谢我的科任老师,从大一到大三是你的悉心教导、孜孜不倦我们才能顺利的完成学业。

我要感谢在我三年的学习中无私传授我知识的各位老师,是你们将自己宝贵的财富无私地奉献给了我们,让我们能在学业上有所成绩;

是你们让我倍感教师职业的伟大,交给我们知识,

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

当前位置:首页 > PPT模板 > 图表模板

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

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