




免费预览已结束,剩余15页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
厦门理工学院ARM接口技术课程设计L 乐奇数码科技微机原理及应用课程设计报告(2010 2011学年 第 2 学期)题 目:八路抢答器课程设计 专 业:计算机科学与技术 班 级: 10计算机科学与技术1班 姓 名: 乐奇数码科技 学 号: 指导教师: 成 绩: 乐奇数码科技,引领数码科技前沿计算机科学与技术系2011年07月4日19 1007045153 谢锦坤Created by Jekit ShiehL 乐奇数码科技八路抢答器设计一、设计目的本课程是计算机科学与技术专业嵌入式方向所开设的一门重要实践课程,主要要求学生掌握嵌入式系统原理和接口技术在实践中的应用。本课程设计的目的是使学生在理论学习的基础上,动手设计系统应用的接口,以及编写程序,通过应用所学习的知识,来解决一些实际嵌入式系统应用问题。在此基础上,真正理解和掌握嵌入式系统的相关理论,具备接口设计及程序设计的能力。二、设计内容 1、设计课题设计一款八路抢答器。2、设计要求主持人按下抢答“开始”按键,同时喇叭发出“嘀”的一声,八路抢答开始。开始后,有30秒的抢答倒计时功能。八路抢答按钮的编号分别为18,一次只能有一个人抢答成功。当某一路抢答成功时,发光二极管立即点亮,并在数码管上面显示该路的号数,直到主持人按复位开关为止,其他人再抢答无效。主持人按下“复位”按钮后,必须下次重新抢按“开始”才能继续抢答。8路按钮需用键盘阵列方式实现。使用C语言或者汇编语言编写程序代码三、总体设计该系统采用51系列单片机LPC2138作为控制核心芯片,该系统可以完成8位的抢答控制、LED数码管的显示、报警器的报警。该系统由4个模块组成:非编码式的键盘输入模块、LED数码管显示模块、锁存器模块、RTC中断模块。其工作原理为:接通电源后,主持人将开关拨到复位状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置;开始状态,宣布开始抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作复位和开始状态开关。非编码式的键盘输入模块:本系统采用4*2的键盘矩阵,通过扫描键盘输入、输出的数据,行线ROW1ROW4为输入,列线COL1COL4为输出,为用户提供接口,实现人机交互。LED数码管模块:是由4个发光二极管封装在一起组成“8”字型的器件,分别对抢答序号、倒计时时间的显示。 RTC中断模块:当秒值增加,中断模块;一旦产生中断,微控制器会暂停用户程序,然后切换到IRQ中断。并进行自减,实现倒计时。在IRQ模式中,首先中断源设置向量地址寄存器,然后跳转到异常向量表处执行。在异常表处ARM处理器会得到中断服务程序地址。运行指针跳转到中断服务程序处执行,执行完中断服务程序后运行指针返回到用户程序断点系统设计的整体流程框架如下图所示:抢答按扭非编码式的键盘输入74HC59锁存器LED数码管显示主持人控制开关LPC2138报警电路(LED)RTC中断控制定时电路74HC59锁存器LED数码管显示图1 程序框架图四、硬件设计系统主芯片采用LPC2138控制芯片,1个LED灯,1块74HC595锁存芯片,6位LED数码管,8个抢答开关,1个开始开关,1个复位开关。LPC2138与数码管之间的通讯采用SPI串行通信。采用七段码 7SEG-MPX4-CC-BLUE 显示,它是共阴极的由高电平点亮,如下图所示:控制电路主持人控制开关按钮,控制抢答电路。选手抢答电路如下图:系统整体设计电路图如下所示:图2 整机原理图五、软件设计 系统功能:通过数码管显示倒计时时间和抢答序号,在LED灯上给出相应的提示信息,并响应中断响应,扫描键盘输入处理用户的指令和设置。1、设计思路首先先要初始化程序,初始化程序主要是对定时器和外部中断进行初始化,然后进入查询程序在查询程序中来判断开始键,8个选手的按键是否按下,如果没有按下则返回开始部分重新查询。抢答时间或回答时间调整键按下后则进入调整模式,将存储抢答或回答时间提出来并在LED上显示。然后判断加1,减1,停止键是否按下,如果按下加1或减1的操作则相应的对存储抢答或回答时间的寄存器进行加1或减1。如果按下停止键则返回主程序,继续查询。如果在查询程序中按下8个选手的按钮,则表示犯规,这时候进入犯规程序段,通过对P1进行逐位扫描,得到按下的键,将其对应的选手号显示在LED显示器上, LED灯不断亮起,直到按下开始/停止键。返回主程序。如果按下开始键,则进入正常抢答主程序。开始进入倒计时程序,将倒计时秒数的数据缓存到锁存器中,并送往LED数码管显示。秒增量中断,当运行一秒后,则将倒计时时间减1,倒计时完毕后,返回查询程序。如果此时有按键按下,则对P1口进行逐位检查,把按下的键的号通过显示程序显示在LED显示器上,并把存放回答时间的寄存器的内容放到倒计时有的寄存器中,开始倒计时,在抢答过程中,主持人可进行复位操作。本系统主要有4个模块组成非编码式的键盘输入模块、LED数码管显示模块、中断模块和定时/计数器模块,当用户启动抢答器,即启动计时器,等带用户抢答。当用户抢答时,中断计时器,并将用户抢答的信号,显示在数码管上。当用户按复位键时,初始化所有操作,如计时器,数码管显示初始化等。2、各模块程序流程图主持人按下开始 (1)、主程序流程图:出发开始按钮启动计数器NOT判断是否有人抢答继续等待YES倒计时,时间到判断复位选手抢答结束倒计时停止,并在LED上显示选手序号(2)、键盘输入模块当中断引脚出现低电平时,首先等待10ms以达到消抖的目的。然后扫描键盘的位置,等待10ms左右再次扫描键盘的位置。如果2次扫描的结果不一致,则认为次按键无效;如果两次扫描的结果一致,则根据扫描的结果返回计算键码,最后将键值返回。通过获取键值,然后显示在LED数码管上,从而实现,将抢答号数显示出来。功能实现流程如下图所示:图3 键盘扫描YYNN开始中断引脚是否为低?延时10ms消抖扫描按键延时10ms再次扫描按键两次扫描的结果是否一致?返回按键值结束(3)、LED数码管显示模块数码管显示,通过使用74HC595的控制端口和SPI串行通信端口连接LPC2220相关引脚,并行输出端口号QA-QH连接到数码管上。数码管的输出显示的内容完全取决于SPI0模块所传输的内容。开始引脚初始化74HC595初始化选择数码管的位选锁存器将数据发送给LED数码管显示结束(4)、RTC和倒计时当用户运行抢答器,即启动倒数计时模块,当计时器产生中断,先判断是否已经运行了30秒,如果不是对时间自减倒计时操作。然后返回中断服务程序处的主程序。直至计时器运行了30,或者系统发出中断信号,才能关闭计时器。中断具体设计流程图如下:增量中断,由CIIR控制ILR的相应位置位VIC向量中断控制3、功能模拟测试(1)、主持人按下开始按钮,抢答开始,并进行倒计时:(2)、选手进行抢答后,例如1号选手开始开始抢答,数码管显示六号选手,并且进入答题时间倒计时,时间快结束时候,报警器从倒数五秒开始进行报警(3)、主持人复位操作,重新倒计时,并对抢答序号清零六、心得体会本次课程设计有较强的综合性,不仅要求设计者能灵活使用ARM芯片的的各种接口和指令,熟练使用ARM设计抢答器,熟练编写模块功能程序,还要求对ARM芯片的电路连接结构,对74HV595锁存器和数码管芯片有明确清晰的了解与认识,否则在设计的第一步就会遇到障碍。经过三天多的资料收集与查询,又通过以前几天的总体构思,有了一个总体的框架,对程序的流程图也有一个基本的结构,最后结合参考资料,结合自己对ARM知识的认识,使用protues的进行仿真。结果出来后,自己还是蛮有成就感的,因为我从这次课程设计不仅仅只是加深了对ARM接口技术的掌握、得到一个自己设计的产品,还学到了很多,例如整体把握能力,在系统设计前进行系统分析,了解需求分析。另外我还认识到与他人合作的重要性,虚心向别人学习,比如,如何部分功能实现的思路方法。 最后,非常感谢黄鹏程老师在本次课程设计中对我的帮助与指导!七、源程序#include config.h#define HC595_RCK (17) /RCK#define ROW1 (121) / ROW1 连接 P0.21#define ROW2 (122) / ROW2 连接 P0.22#define COL1 (117) / COL1 连接 P0.19#define COL2 (118) / COL2 连接 P0.18#define COL3 (119) / COL3 连接 P0.17#define COL4 (120) / COL4 连接 P0.16#define start (114) / p0.14开始抢答按钮 #define reset (115) / p0.15复位按钮#define smgA1 (10) / p0.0连接数码管的第一个位选端#define smgA3 (11) / p0.1连接数码管的第三个位选端#define smgA4 (12) / p0.2连接数码管的第四个位选端#define LED (10; dly-) for(i=0; i10000; i+);/* 文件名:_irq RTC_IRQ()* 功能:中断服务程序,当秒值增加时蜂鸣器报警*/void _irq RTC_IRQ(void)if(CIIR & 0x01) != 0)/-秒报警- clock=clock-1; while(ILR&0x01)!=0)/清除中断标志ILR = 0x01; VICVectAddr = 0 ; /中断结束/* 文件名:RTC_Init()* 功能: RTC模块初始化函数*/ void RTC_Init(void) PREINT = Fpclk/12 / 32768 - 1 ; /设置基准时钟分频器 PREFRAC = Fpclk/12 - (Fpclk/12 / 32768) * 32768;CIIR = 0x01; /设置秒值的增量产生一次中断ILR=0x01;VICIntSelect = 0x00000000; /设置所有的通道为IRQ中断 VICVectCntl5 =0x20 | 13;/实时时钟中断分配到IRQ5 VICVectAddr5 = (uint32)RTC_IRQ; /设置按键中断服务程序的地址 VICIntEnable = VICIntEnable | (113); /使能实时时钟中断 /* 文件名:unsigned KEY_Scan() * 功能:按键的扫描,扫描结束后返回按键的代码.* 出口参数:key,按键码*/uint8 KEY_Scan(void) /-第一列清0,其他列置1-IO0CLR = COL1; /列线COL1输出置低 IO0SET = COL2; IO0SET = COL3; IO0SET = COL4; /其他列线输出置高 if(IO0PIN & ROW1) = 0) key = 1;/如果按键发生在第一行if(IO0PIN & ROW2) = 0) key = 2; /-第二列清0,其他列置1- IO0CLR = COL2 ; /列线COL2输出置低IO0SET = COL1 ; /其他列线输出置高IO0SET = COL3; IO0SET = COL4;if(IO0PIN & ROW1) = 0) key = 3;/如果按键发生在第一行if(IO0PIN & ROW2) = 0) key = 4; /-第三列清0,其他列置1-IO0CLR = COL3 ; /列线COL3输出置低IO0SET = COL1 ; /其他列线输出置高IO0SET = COL2 ; IO0SET = COL4 ;if(IO0PIN & ROW1) = 0) key = 5;/如果按键发生在第一行if(IO0PIN & ROW2) = 0) key = 6;/-第四列清0,其他列置1-IO0CLR = COL4; /列线COL4输出置低 IO0SET = COL1 ; /其他列线输出置高IO0SET = COL2 ;IO0SET = COL3 ;if(IO0PIN & ROW1) = 0) key = 7;/如果按键发生在第一行if(IO0PIN & ROW2) = 0) key = 8;/-四列全清0-IO0CLR = COL3|COL4|COL1|COL2; return(key);/* 文件名:_irq KEY_IRQ()* 功能:*/void _irq KEY_IRQ(void)uint32 i,key1,key2 ;for(i=0;i=1000;i+) ;/延时一段时间,消抖 key1 = KEY_Scan() ;/按键扫描 for(i=0;i=1000;i+);/延时一段时间key2 = KEY_Scan() ;/按键扫描if(key1 = key2)key = key1; /如果两次扫描得到的键值相同,则保存这个按键while(EXTINT&0x01)!=0)/清除中断标志 EXTINT = 0x01 ; VICVectAddr = 0 ; /中断结束/* 文件名:KEY_Init()* 功能:按键初始化,即令列线输出低电平,行线输入*/void KEY_Init(void) /行线ROW1ROW4为输入,列线COL1COL4为输出 IO0DIR = (IO0DIR&(ROW1)&(ROW2)|COL1|COL2|COL3|COL4; IO0CLR = COL1|COL2|COL3|COL4 ; /列线输出为低 /*设置外部中断*/ PINSEL1=( PINSEL1&0xEFFFFFFC)|0x01; /P0.16为外部中断 EXTMODE = 0x00; / 使用电平触发 EXTPOLAR = 0x00; / 低电平有效 EXTINT = 0x01 ;/清除中断标志 VICIntSelect = 0x00000000; /设置所有的通道为IRQ中断 VICVectCntl0 =0x2E;/按键中断Key_INT分配到IRQ0 VICVectAddr0 = (uint32)KEY_IRQ; /设置按键中断服务程序的地址 VICIntEnable = VICIntEnable | 0x4000; /使能外部中断 /* 文件名:display()* 功能: LED显示*/void display() uint8 m1,m2;m1=clock/10;m2=clock%10; IO0SET=smgA1; IO0CLR=smgA3; IO0CLR=smgA4; HC595_SendData(TABkey); /向74HC595发送数据DelayMS(1); IO0CLR=smgA1; IO0SET=smgA3; IO0CLR=smgA4; HC595_SendData(TABm1); /向74HC595发送数据DelayMS(1);IO0CLR=smgA3;IO0SET=smgA4; IO0CLR=smgA1; HC595_SendData(TABm2); /向74HC595发送数据DelayMS(1);IO0CLR=smgA1|smgA3|smgA4;/* 文件名:main()* 功能: 程序入口*/int main
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训财政知识内容课件
- 2025年四川省广安市中考化学真题(附答案解析)
- 培训计划的知识点课件
- 2025年医疗机构进修医师临床实践技能培训及评估服务合同
- 2025年新能源技术研发基地宿舍租赁与环保清洁服务协议
- 2025年度绿色建筑论坛场地租赁合同中环保安全措施标准
- 2025年新能源并网变压器移位与安全防护设施安装合同
- 2025年高端别墅室内外装饰装修一体化工程承包合同
- 2025年度生态科技园区绿色环保物业管理合作协议
- 2025年文化旅游资源整合采购项目委托代理服务协议
- GB/T 9797-2022金属及其他无机覆盖层镍、镍+铬、铜+镍和铜+镍+铬电镀层
- GB/T 33365-2016钢筋混凝土用钢筋焊接网试验方法
- GB/T 12750-2006半导体器件集成电路第11部分:半导体集成电路分规范(不包括混合电路)
- 《乒乓裁判规则规程》考试题库(附答案)
- 依托自主化装备建设分布式能源三联供项目
- 老年肌肉衰减综合征(肌少症)课件
- 山西省持有《危险废物经营许可证》单位一览表
- PCB全制程培训教材
- 烟草配送车辆GPS管理方案
- 中图法分类号与中图分类法查询
- 开音节闭音节中元音字母的发音规律练习
评论
0/150
提交评论