教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 政务民生 >

基于ARM7的竞答器设计(附完整源代码)(2)

来源:网络收集 时间:2026-08-26
导读: 4、定时器设置 注:在进入外部中断时,才开启使能计数数/定时器,T0TCR=0x01; T0CTCR=0x00;//工作在定时器模式 T0TC=0; T0PR=99;//100分频 T0MCR=0x03;//复位TOTC,并产生中断 T0MR0=Fpclk/100; 5、抢答检测 为了竞

4、定时器设置

注:在进入外部中断时,才开启使能计数数/定时器,T0TCR=0x01; T0CTCR=0x00;//工作在定时器模式 T0TC=0;

T0PR=99;//100分频

T0MCR=0x03;//复位TOTC,并产生中断 T0MR0=Fpclk/100;

5、抢答检测

为了竞答公平,需要进行抢答检测。 抢答检测主要是为了防止有选手在倒计时时,按住按键不动,为此,在倒计时跳变为0那一刻,读取KEY2-KEY5的状态,判断是否有抢答情况。

四、硬件设计

1、蜂鸣管脚

2、按键电路

3、LED管脚

五、测试

将编译好的代码通过JLINK-FLASH烧录入LPC2131芯片。 经过测试,电路运行、实验效果与设计要求一致。

六、总结

1、为了竞答的公平性,引入了抢答检测这一步。因为有选手可以一直按住按键不动。在倒计时未到0前,用户按下按键是无效的。因而只需要检测跳变为0前那瞬间的管脚状态,如果选手是按住不动的话,就可以检测出来。 2、本设计运用了定时器、中断技术、数码管显示等技术,并把蜂鸣器、LED灯、按键也运用进入。从分利用了所学知识。 3、设计前,本人先画好系统框图以及流程图再编写代码,因而编写代码过程较为顺利,编译错误较少。 4、因为一轮竞答后自动进入下一轮,因为需要重新初始化。刚开始时没考虑到,因为下一轮竞答不正常,修正后程序可以正确运行。

七、源代码

//抢答器

#include\

#define HC595_CS (1<<29)// P0.29为74HC595的片选引脚 //按键

const uint32 beep=1<<7; const uint32 KEY1=1<<16; const uint32 KEY2=1<<17; const uint32 KEY3=1<<18; const uint32 KEY4=1<<19; const uint32 KEY5=1<<20; const uint32 KEY6=1<<21;

//LED灯 分别对应五位抢答选手,最先按下按键者对应的灯亮 const uint32 LED1=1<<18; const uint32 LED2=1<<19; const uint32 LED3=1<<20; const uint32 LED4=1<<21; const uint32 LED5=1<<22; const uint32 LED6=1<<23; const uint32 LED7=1<<24; const uint32 LED8=1<<25; uint32 y=0; uint8 data; uint32 z=1;

uint32 w=1; uint32 count=0; uint32 a=20; //延时函数

void delay(uint32 dly) { uint32 i; for(;dly>0;dly--) { for(i=0;i<5000;i++); } }

//数码管显示电路

//MSPI_SendData(DISP_TAB[counter]); // 数码管显示 /*捕获功能*/

/* 此表为LED0~F以及L、P的字模 */ uint8 const DISP_TAB[19] = {

// 0 1 2 3 4 5 6 7 8 9 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90, // A b C d E F 0x88, 0x83, 0xC6, 0xA1,0x86, 0x8E, // L P C 0xC7, 0x8C,0xC6 }; void MSPI_Init(void)

{ PINSEL0 = (PINSEL0 & 0xFFFF00FF) | 0x00001500; // 设置管脚连接SPI SPI_SPCCR = 0x52; // 设置SPI 时钟分频

SPI_SPCR = (0 << 3) | // CPHA = 0, 数据在SCK 的第一个时钟沿采样 (1 << 4) | // CPOL = 1, SCK 为低有效 (1 << 5) | // MSTR = 1, SPI 处于主模式

(0 << 6) | // LSBF = 0, SPI 数据传输MSB (位7)在先 (0 << 7); // SPIE = 0, SPI 中断被禁止 }

uint8 MSPI_SendData(uint8 data)

{ IO0CLR =IO0CLR|HC595_CS; // 片选74HC595 SPI_SPDR = data;

while( 0 == (SPI_SPSR & 0x80)); // 等待SPIF 置位,即等待数据发送完毕 IO0SET = IO0SET|HC595_CS; return(SPI_SPDR); }

//中断服务程序

void __irq IRQ_Eint0(void) {

T0TCR=0x01;//开启计数器功能 IO1SET=0xffffffff; while(1) {

if((T0IR&0x01)==1) { T0IR=0x01; data=MSPI_SendData(DISP_TAB[5-count]); count=count+1; if(count==6) {count=0;T0TCR=0x00; y=IO0PIN;w=1;

if((y&KEY2)==0|(y&KEY3)==0|(y&KEY4)==0|(y&KEY5)==0) {

w=0; while(a) {

if(a%2==0) IO0CLR=beep; else

IO0SET=beep; a=a-1;

delay(100); } } a=20; break;} } }

delay(100); while(w){ y=IO0PIN;

if((y&KEY2)==0|(y&KEY3)==0|(y&KEY4)==0|(y&KEY5)==0) { w=0;} }

if((y&KEY2)==0) {

data=MSPI_SendData(DISP_TAB[1]); IO1CLR=LED1; }

if((y&KEY3)==0) {

基于ARM7的竞答器设计(附完整源代码)(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/449047.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)