基于ARM7的竞答器设计(附完整源代码)(2)
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) {
相关推荐:
- [政务民生]2013年公共基础知识热点问题(七)
- [政务民生]检验检测机构资质认定评审准则及释义20
- [政务民生]关于印发重庆市房屋建筑和市政基础设施
- [政务民生]1、隧道洞身开挖支护施工技术交底书
- [政务民生]2015年山东省17地市中考语文试题分类汇
- [政务民生]2-高级会计师资格考试和评审流程图
- [政务民生]2018版中国清分机行业发展分析及前景策
- [政务民生]新课改高中政治探究
- [政务民生]2018-2024年中国新型组合房屋行业投资
- [政务民生]2015年上海市春季高考数学模拟试卷五
- [政务民生]灌砂法及环刀法测压实度(带计算过程)
- [政务民生]运筹学实验2求解非线性规划
- [政务民生]劝学、逍遥游默写(教师卷)
- [政务民生]《运筹学》 - 期末考试 - 试卷A - 答案
- [政务民生]八年级英语下册 Module 6 Hobbies测试
- [政务民生]2019年宪法知识竞赛试题库100题(含答
- [政务民生]自动化英文文献翻译
- [政务民生]公文格式实施细则
- [政务民生]高一地理上册课堂跟踪练习题6
- [政务民生]会计继续教育习题及答案
- 第三章 无约束最优化方法
- 泛读教程第三册答案
- 魏晋南北朝文学
- 幂的运算复习题
- 城市环境问题的成因与治理策略_以社会
- 钢结构行业产业链及竞争分析研究
- 新型热塑性弹性体增韧聚丙烯的研究
- 中国旅游地理B卷试题及答案
- (苏教版)五年级数学上册第三单元测试卷
- 不稳定性心绞痛诊断与治疗
- 俞氏国际后勤职能部门绩效考核办法
- GB7258-2017新标准考试题含答案
- 小学生汉字听写比赛活动方案
- 1.3《平抛运动》学案 教科版必修2
- 2011香港特别行政区公务员考试复习资料
- 考虑水力条件变化的城市给水管网可靠性
- 表面活性剂在油田开发和生产中的应用
- ITT内部培训资料-FI端吸泵的介绍
- 文明守纪,从我做起学生发言稿
- 初中读《聊斋志异》心得体会800字范文




