基于AW60十秒倒计时抢答器设计_第1页
基于AW60十秒倒计时抢答器设计_第2页
基于AW60十秒倒计时抢答器设计_第3页
基于AW60十秒倒计时抢答器设计_第4页
基于AW60十秒倒计时抢答器设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于AW60十秒倒计时抢答器的设计完成人:黄镇(电子1203)冯越(电子1203)马沛沛(电子1203) 摘要:充分了解aw60的引脚功能,再利用这些集成芯片的功能来设计成:能实现四人抢答、倒计时10秒后就不能抢答、数码管显示抢答成功的按键及倒计时,在抢答成功和十秒倒计时结束时报警。由黄镇完成程序设计,马沛沛完成硬件设计,冯越完成报告Abstract: fully understand aw60 pin function, using the integrated chip features to design into: can realize four vies to answe

2、r first, the countdown after 10 seconds cannot succeed in digital tube display vies to answer first vies to answer first, keys and the countdown, at the end of the vies to answer first success and ten seconds countdown alarm.关键字:aw60、4人抢答、倒计时10s、数码管显示Key words: aw60, four people vies to answer first

3、, the countdown 10 s, digital tube display1 设计要求 具体要求(1)提供4路抢答键,编号分别为1、2、3、4,提供“开始”键,编号为“*”。(2)系统复位后,数码管显示“0000”并闪烁;按下“开始”键后,各抢答键才有效,数码管停止闪烁,并进行10s倒计时,计时时间在后两位数码管显示;若在10s内没有人抢答,则在计数为0后,显示“0000”并闪烁,直至“开始”键再次按下,重新计数;若在10s内有人按下抢答键,则停止计数,后两位数码管显示当前计数时间,第1位数码管显示抢答键编号,数码管闪烁,直至“开始”键再次按下,重新计数。(3)每次按键或计时为0后通

4、过蜂鸣器发出提示音。系统功能 该系统能够按下开始键后数码管开始10s倒计时,当倒计时为零若没有抢答键按下则数码管显示0000,并闪烁蜂鸣器报警。若有一个或多个抢答键在倒计时结束前按下,则数码管第一位显示按下的抢答键的次序,后两位数码管显示按下时的时间,其他显示0且闪烁蜂鸣器报警。当开始键再次按下的时候,系统恢复十秒倒计时状态,第一位数码管清零。2 总体设计2.1 系统组成及工作原理以下为系统的流程图,其中开始键,1234抢答键为键盘控制,由中断中的程序控制各种状态的实现,其工作原理为:接通电源后,抢答器数码管数码管0010,主持人按下开始键,抢答器的计时器开始进行10s的倒计时;选手在定时时间

5、内抢答时,抢答器完成:优先判断、编号锁存、编号显示、时间显示、数码管闪烁、蜂鸣器提示。挡在正常的十秒抢答时间中没有人按下抢答键,则倒计时一直进行到零,数码管显示0000,蜂鸣器报警,数码管闪烁,当主持人再次按下开始键时数码管恢复到0010开始新一轮抢答倒计时。 3 硬件设计3.1 硬件组成 本设计实验硬件部分包括按键模块、电源模块、LED模块、蜂鸣器模块 Led模块为显示模块,包括显示10s倒计时,抢答编号,抢答时间,数码管闪烁。蜂鸣器模块提供当有抢答或倒计时到0时的报警功能。键盘模块提供抢答键1234,开始(复位)键。电源模块提供电源。3.2 单片机核心模块 本设计采用AW60单片机,S08

6、是2004年左右推出8位MCU,资源丰富,功耗低,性价比很高,是08系列MCU发展趋势,其性能与许多16位MCU相当。MC9S08AW60是低成本、高性能8位微处理器S08家族中的成员,本次课程设计就是以该芯片为基础,来进行嵌入式的设计。该单片机的主要性能:(1)最高达40MHz的CPU工作频率和20Hz的内部总线工作频率表;时钟源选项包括晶振、谐振器、外部时钟或内部产生的时钟。(2)相比HC08 CPU指令集,S08 CPU增加了BGND指令。(3)单线后台调试模式接口;增强的断点能力,允许单一的断点设置在线调试(在片内调试的模块增加了多于两个的断点)。(4)内含32个中断/复位源;内含2K

7、B的片内RAM;内含60KB的片内在线可编程Flash存储器,带有块保护和安全选项。(5)可选的计算机正常操作(COP)复位;低电压检测和复位或中断;非法操作码检测与复位;非法地址检测与复位。(6)ADC:多达16个通道,10位A/D转换器与自动比较功能;两个串行通信接口SCI模块与可选的13位中断;一个串行外设接口SPI模块;集成电路互连总线I2C模块运作高达100kbps的最高总线负载;8引脚键盘中断KBI模块。(7)Timers:1个2通道和1个6通道16位定时器/脉冲宽度调制器模板。具有输入、捕捉、输出比较、脉宽调制功能。3.3 显示和控制电路本系统采用数码管显示抢答位和剩余时间,钜阵

8、键盘用于抢答器开始复位和的抢答工作。数码管显示原理简单,编程比较容易实现。矩阵键盘可以实现多种控制,便于扩展功能,同时又可节省大量的IO口,供单片机的其它功能应用。3.4电源模块电路中需要大量引脚用来提供足够的电流容量。所有的电源引脚必须有适当的旁路电容,来抑制高频噪音。一些VDD和VSS引脚仅用于噪音旁路。图中的电源电路显示了一个典型的电源连接图。电源电路部分的电容构成滤波电路,可以改善系统的电磁兼容性,降低电源波动对系统的影响,增强电路工作稳定性。为标识系统通电与否,可以增加一个电源指示灯。注意那些仅连接电容的引脚,不要将它们直接连接电源电压 3.5蜂鸣器模块在单片机应用的设计上,很多方案

9、都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O口是无法直接驱动的,所以要利用放大电路来驱动,一般使用三极管来放大电流就可以了3.6长距离传输模块限制数据长距离传输的因素远距离,几十公里几百公里的数字信号传输,可采用单用调制解调器的调频、调相或调幅的传输设备来实现,并可利用已有的电话线等作为传输线。而传输距离只有几百米或几十公里时,就不需要调制解调器的传输模式,耳壳采用数字信号的直接传输方式,是传输速度、误码率等性能优于采用调制解调器的传输方式。尤其是近距离点对多点的数据传输,采用数字信号直接传

10、输的方法更具优势。限制数据长距离传输的因素1. 外界电磁场通过传输线对信号产生的干扰由于发送和接收设备之间存在的公共地线,因此各种干扰极易通过公共地线叠加在信号上,特别是现场的电磁干扰通过公共底线能很容易的导入接受设备。2. 传输线分布电容数据的传输实际上是对传输线分布电容充电和放电的过程,而充电的上升时间和放电的下降时间有所不同,会引起数据接受错误。3. 传输线存在的地的电位差传输线间连接的公共地线,由于发送设备和接受设备往往使用各自的电源设备。是二者的电位可能不一致,从而信号地线中会产生电流。由于传输线电阻的此女在,使底线两端产生电压降,即电位差。当发送设备想接收设备发送数据时,接受设备得

11、到的电压信号与没有地电位差时得到的不同。当又用信号较小、而地电位差较大时,接受设备无法得到准确的信号,数据传输将无法进行。4. 传输线的负载阻抗与传输特性阻抗不匹配当传输的负载阻抗与传输特性阻抗不匹配时,会在线路中产生多次发射,致使信号产生畸变,数据传输出现错误5. 传输线的分布电阻6. 传输线间的干扰长距离传输按键模块远程控制电路通过一个共射放大电路,基极输入一个高电平,三极管导通,集电极接地,输出是低电平。(可能会有一个0.3V左右的电压可以忽略看做一个低电平。)基极输入低电平,三极管关断,集电极电压为电源电压,输出是高电平。长距离传输压降模块稳压电路利用了LM317三端可调输出正电压稳压

12、器。来调节输入的电压使输出电压达到单片机要求的5V电压。在控制电路与稳压电路之间加了一个电阻充当电线的阻抗。4 程序设计4.1 主程序设计程序开始后初始化芯片,模块,变量,然后进行主循环,开始执行主程序,计时器开始10s倒数计时数码管显示状态为0010,执行过程中还可检测是否有抢答键,如果按下则计时停止后两位数码管显示时间,第一位数码管显示抢答编号,其他数码管均为零,蜂鸣器报警,延时2s,再次按下开始复位键时,数码管显示0010进行倒计时。如果没有抢答键按下,则倒计时为零时数码管显示0000,并开始闪烁,蜂鸣器报警延时2s。4.2 子程序设计附录一:电路实物照片附录二:模拟电路仿真图附录三:电

13、路原理图附录四:主要程序/-*/工 程 名: timer */硬件连接:(1)PTD.0接指示灯 */ (2)MCU的串口与PC方的串口相连 */程序描述: */ (1)TPM1溢出中断,数码管显示分秒信息。/目 的: 学习定时器基本功能 */说 明: 无 */-苏州大学飞思卡尔嵌入式系统研发中心2011年-*/总头文件#include "Includes.h"void main(void) /1 主程序使用的变量定义 uint32 mRuncount=0; /运行计数器 ledbuf0='0' ledbuf1='0' ledbuf2=

14、9;1' ledbuf3='0' /2 关总中断 DisableInterrupt(); /禁止总中断 /3 芯片初始化 MCUInit(); /4 模块初始化 Light_Init(Light_Run_PORT,Light_Run,Light_OFF); /指示灯初始化 TPMinit(TPM_NUM_1); /定时器1初始化 /SCIInit(SCI_NUM_1,SYSTEM_CLOCK,9600); /串行口初始化 LEDinit(); KBInit(); /键盘初始化 GPIO_Init(PORT_C,6,1,0); /GPIO初始化 /5 内存初始化 /6 开

15、放中断 EnabletimerInt(TPM_NUM_1); /开放定时器1溢出中断 EnableInterrupt(); /开放总中断 EnableKBint(); /开键盘中断 /7 主循环 while (1) /1 主循环计数到一定的值,使小灯的亮、暗状态切换 mRuncount+; if (mRuncount>=1000) mRuncount=0; /2 主循环执行的任务 LEDshow(ledbuf); /-*/ 文件名: isr.c */ 说 明: 中断处理函数文件 */-*/头文件#include "isr.h"uint8 KeyDef;uint8 aa

16、=0;/-*/函数名: isrKeyBoard */功 能: 扫描键盘,向串口发送键值和定义值 */参 数: 无 */返 回: 无 */说 明: 调用了KBScanN、SCISend1、KBInit函数 */-*interrupt void isrKeyBoard(void) uint8 value; uint16 i; for(i=0; i<1000; i+); DisableInterrupt(); /关总中断 DisableKBint(); /屏蔽键盘中断 value = KBScanN(10); /扫描键值,存于value中 if(value!=0xFF) KeyDef=KBDe

17、f(value); if(KeyDef='*') aa=0; ledbuf0='0' ledbuf1='0' ledbuf2='1' ledbuf3='0' jishu=0; k=0; else if(aa=0) if(KeyDef='1'|KeyDef='2'|KeyDef='3'|KeyDef='4') aa=1; k=1; x=ledbuf2; y=ledbuf3; z=KeyDef; b=1; GPIO_Set(PORT_C,6,1); Del

18、ay(2); GPIO_Set(PORT_C,6,0); KBInit(); /键盘初始化键盘中断 EnableKBint(); /开放键盘中断 EnableInterrupt() ; /开总中断/此处为用户新定义中断处理函数的存放处/-*/函数名: isrT1Out */功 能: 定时器1溢出中断处理函数,以秒为最小单位计时,并清定时器1溢出标志位 */参 数: 无 */返 回: 无 */说 明: 调用SecAdd1函数 */-*interrupt void isrT1Out(void)/溢出时间1s uint8 temp; DisableInterrupt(); /禁止总中断 if(k=0

19、) if(jishu=0) if(ledbuf3='0')&(ledbuf2='0') ledbuf0='0' ledbuf1='0' ledbuf2='0' ledbuf3='0' jishu=1; a=1; GPIO_Set(PORT_C,6,1); Delay(2); GPIO_Set(PORT_C,6,0); else ledbuf3-; if(ledbuf3<'0') ledbuf2-; ledbuf3='9' else if(a=1) led

20、buf0='0' ledbuf1='0' ledbuf2='0' ledbuf3='0' a=0; else ledbuf0=10; ledbuf1=10; ledbuf2=10; ledbuf3=10; a=1; else if(b=1) ledbuf0=z; ledbuf1='0' ledbuf2=x; ledbuf3=y; b=0; else ledbuf0=10; ledbuf1=10; ledbuf2=10; ledbuf3=10; b=1; temp = TPM_CSTR(1); /读取定时器1状态和控制寄存器TPM1SC TPM_CSTR(1) &= (TPM1SC_TOF_MASK); /向定时器溢出标志位TOF写0 EnableInterrupt(); /开放总中断 /未定义的中断处理函数,本函数不能删除interrupt void isrDummy(void)/中断处理子程序类型定义typedef void( *ISR_func_t)(void);/中断矢量表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论