《《能力拓展训练》课程设计说明书 智能抢答器设计》由会员分享,可在线阅读,更多相关《《能力拓展训练》课程设计说明书 智能抢答器设计(19页珍藏版)》请在金锄头文库上搜索。
1、武汉理工大学能力拓展训练课程设计说明书 目录1 设计任务及要求分析11.1 设计任务11.2 任务分析12 方案比较及认证说明22.1 方案比较22.2 认证说明23 系统设计33.1 设计方案结构图33.2 系统原理43.2.1 按键部分43.2.2 单片机控制部分43.2.3 数码显示部分53.3 系统总体接线图64 软件设计74.1 系统总体流程图74.2 系统软件设计85 系统仿真95.1 抢答仿真95.2 无人抢答仿真105.3 结果分析116 总结12参考文献13附录 程序清单141 设计任务及要求分析1.1 设计任务 初始条件:计算机、单片机、EDA实验箱。要求:设计智能抢答器,
2、使用8位按键,分别模拟抢答者位数。当在提问时所有的按键均是被封锁的,即按下无响应。在要求回答时,所有按键同时开放,当某按键最先按下时,立即保持该按键信号封锁其它所有按键,用BCD码形式显示该按键。记录抢答过程的时间(毫秒)并显示。1.2 任务分析 分析设计题目可知应采用51单片机进行系统总体控制。其中,我们可选择单片机的P0、P1、P2口输入、输出信号,将10个控制键信号输入单片机,经处理后,再将51单片机的控制信号输出来驱动数码管显示部分。在设计任务中,最关键的问题是对输入信号的取入及处理。我们可以采用键盘扫描函数取入主持人按键信息及抢答按键信息,复位按键信息则可直接输入,然后我们可以利用5
3、1单片机分别完成:对抢答器的开启控制,启动后显示抢答时间,以及对最先按下按键的抢答者进行号码锁存以及最终显示抢答者号码和抢答时间。按照这样的思路来进行设计,就可以完成设计要求。 2 方案比较及认证说明2.1 方案比较 方案一:在按键信号检测方面,将8位抢答者的按键状态分别输入到P0.0-P0.7八位P0口中,然后单独对每个按键进行检测并定义,使1-8八个按键按下后,能对应产生1-8八个数字。再将数字返回到数码管显示子程序中,显示抢答者号码。在数码管显示时,采用4位和1位的静态显示方式。 方案二:在按键信号检测方面,将8位抢答者的按键状态分别输入到P0.0-P0.7八位P0口中,然后对8个按键进
4、行集中检测,将8个按键的状态组成一个8位的二进制数,设计一个键盘扫描程序,使1-8八个按键中某一个按下后能对应产生1-8八个数字。再将数字返回到数码管显示子程序中,显示抢答者号码。在数码管显示时,采用4位和1位的动态扫描方式。 2.2 认证说明 方案一中单独对8个按键进行检测,而不对8个按键整体检测,这样需要对P0.0-P0.7八位P0口分别检测然后对应产生1-8八个数字,这样会使单片机程序显得冗长。方案一中数码管采用静态显示,由于使用的数码管较多,占用的输出口较多,使电路的硬件设计变得麻烦;方案二中对8个按键组成的整体进行检测,这样程序简洁,而且确保在第一个抢答者按下按键后,数码管能准确显示
5、抢答者的号码。方案二中采用动态扫描方式进行数字显示,这样数码管占用的输出口只有7个,节省了电路的硬件开销。故采用方案二。3 系统设计3.1 设计方案结构图 系统设计方案结构图如图3.1所示。 时间显示 抢答按键 51 单 片 机 控 制复位 开启按键 号码显示 图3.1 系统总原理图3.2 系统原理3.2.1 按键部分本系统设计有10个按键,其中代表8位抢答者的按键接单片机的P1口,主持人按键接单片机的控制口P2.5来对抢答进行开启控制,复位键的输出信号接单片机的RST位来对抢答器进行复位控制。按键部分接线图如图3.2.1所示。图3.2.1 按键部分接线图3.2.2 单片机控制部分本设计中单片
6、机从P1口接收来自代表8位抢答者的按键的信号,P2.5接收开启控制信号,RST位接收复位信号。通过调用单片机程序,单片机P0口接上拉电阻后将控制数码管的段选,P2.0则将进行显示优先抢答者号码的数码管的位选控制,P2.1-2.4进行显示时间的数码管的位选,从而实现单片机对抢答器系统的控制。 单片机控制部分接线图如图3.2.2所示。图3.2.2 单片机控制部分接线图3.2.3 数码显示部分 显示优先抢答者号码的数码管和显示时间的数码管的七位段选是共用的,位选则分别由P2.0和P2.1-2.4控制,采用动态显示。 数码显示部分接线图如图3.2.3所示。图3.2.3 数码显示部分接线图3.3 系统总
7、体接线图 完成系统各部分功能设计以后,则可将系统各部分组合起来,得到系统总体硬件接线图。 系统总体接线图如图3.3所示。图3.3 系统总体接线图4 软件设计4.1 系统总体流程图 系统设计方案结构图如图4.1所示。 开始开始键 按下?数码管显示0 N 抢答环节开始 开始计时 Y 显示 计时 结束 数码管 显示9999 到定时 时间? Y N N 数码管显示号码 有人抢 答? 数码管显示时间 抢答环节结束 关闭计时 Y图4.1 系统总体流程图4.2 系统软件设计 系统设计的代表8位抢答者的按键,将信号输入到单片机的P1.0-P1.7口后,键盘扫描程序取入P1口的输入值,通过使用switch语句,
8、将按键信息变为优先抢答者的号码送入数码管显示。在键盘扫描程序中,加入了延迟程序进行消抖,使按键检测更可靠。系统的开启按键则可在输入P2.5口后,可直接在主程序中加入if语句进行控制。在数码管时间显示部分,数码管采用动态扫描方式,并使用了T0定时器计数。T0定时器的单次计时时间为1ms,每记一次时,数码管时间显示数值加一,实现了数码管毫秒计时的功能。 具体程序见附录。5 系统仿真5.1 抢答仿真 当计时时间未到9999,有人按下抢答按键时,系统可显示优先抢答者的号码以及计时时间。抢答仿真结果如图5.1所示。图5.1 抢答仿真结果图5.2 无人抢答仿真 当计时时间到9999,仍未有人按下抢答按键时
9、,系统显示优先抢答者的号码为0,计时时间为9999。无人抢答仿真结果如图5.2所示。图5.2 无人抢答仿真结果图5.3 结果分析 通过仿真可以看出,系统的工作过程为:在开启按键按下之前,数码管显示优先抢答者的号码为0,计时时间为0,直到开启按键按下时,抢答器才开始计时,如果计时到9999之前,有抢答者按下按键进行抢答,则数码管显示优先抢答者的号码以及计时时间。若计时到9999,则系统显示优先抢答者的号码为0,计时时间为9999,表示无人抢答。从抢答器的工作过程可以看出,系统设计符合预期要求,而且可以准确、可靠工作。6 总结经过多次艰难的尝试,我终于完成了能力拓展训练任务。在刚刚看到课程设计任务
10、书时,由于对单片机的编程及综合使用不是很熟悉,我都感觉有点无从下手。带着一个个的疑问我认真地去图书馆查阅了相关资料、上网去了解单片机编程、仿真相关的内容,同时也和其他同学沟通、交流,互相学习,渐渐的感觉有了些头绪。虽然我的课程设计不是很成熟,仍然还有很多不足之处,但我仍然感觉自己还是有所收获,因为在完成课程设计的过程中让我不仅学到了很多课本上没有的东西,还让我学会了如何利用各种资源去学习自己不熟悉的知识。这次课程设计真是让我获益匪浅。参考文献1 张义和.王敏男等编著.例说51单片机.北京:人民邮电出版社.20082 张靖武.周灵彬编著.单片机系统的PROTEUS设计与仿真. 北京:电子工业出版
11、社,2007.3顶明亮.唐前辉编著.51单片机应用设计与仿真:基于keil与proteus.北京:北京航空航天大学出版社,20094苏卫斌.8050系列单片机应用手册M.北京:科学出版社,1997.5徐仁贵.微型计算机接口技术及应用M.北京:机械工业出版社,1996.6高锋.单片机应用系统设计及实用技术M.北京:机械工业出版社,2004.附录 程序清单#includesbit seg_1 = P20; /显示选手的数码管 sbit seg_2 = P21; /显示计时的千位sbit seg_3 = P22; /显示计时的百位sbit seg_4 = P23; /显示计时的十位sbit seg_
12、5 = P24; /显示计时的个位 sbit key_1 = P25; /开始按键 #define dat P0 #define Key_port P1 /设置八组抢答按键,P1.0P1.7分别对应组号18 unsigned int T0count=0; /计数器计数 long int Time= 0; /计时时间 bit flag1 = 0; /当开始按下按键时,标志位置1bit flag2 = 0; /当有选手按下按键时,标志位置1const unsigned char code seg_dat= /时间的数码管的显示,对应数字0f0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff, ; unsigned char key_scan(void); /键盘扫描函数,返回值为按下的键的序号 void dis_1(unsigned char num1); /数码管的显示函数 显示的是哪一位选手按下了 voi