单片机课程设计多路抢答器
- 格式:doc
- 大小:3.16 MB
- 文档页数:19
基于PROTEUS的PIC单片机设计——多路抢答器设计————————————————————————————————作者:————————————————————————————————日期:目录:1 绪论 (3)1.1 课题研究的相关背景 (3)1.2 选题的目的和意义 (3)1.3 课题研究的内容 (3)1。
4 国内外研究现状 (4)1.5 抢答器目前存在的主要问题 (4)2 PROTEUS简介 (4)2。
1 进入PROTEUS ISIS (5)2.2 PROTEUS 工作界面 (5)2。
3PROTEUS的主要功能 (8)2。
3.1PROTEUS VSM功能 (8)2。
3.2PROTEUS PCB设计功能 (8)3PIC单片机 (9)3.1 PIC单片机简介 (9)3.2 PIC16F87的RAM数据存储器 (9)3。
2。
1通用寄存器 (9)3。
2。
2特殊功能寄存器 (10)3.3输入/输出端口的基本功能 (10)3.4 PIC单片机指令系统简介 (11)3.5MPLAB简介 (14)4抢答器系统的设计原理及方案 (15)4。
1方案 (15)4.1.1方案一(采用数字电路) (15)4.1。
2方案二(采用单片机) (16)4。
1.3方案三(采用PLC) (16)4.2方案比较及选择 (17)5基于PROTEUS的多路抢答器硬件电路设计 (17)5。
1多路抢答器设计要求 (17)5.2PIC单片机控制的多路抢答器工作原理 (18)5.3基于PROTEUS的多路抢答器硬件电路设计 (19)5。
3。
1多路抢答器总体电路设计 (19)5。
3.2多路抢答器编码电路设计 (22)5。
3。
3多路抢答器报警电路设计 (23)5。
4多路抢答器系统软件设计 (23)5。
4.1 多路抢答器系统软件流程图 (23)5。
4。
2汇编程序清单 (24)5。
4.3基于MPLAB的程序编译和调试 (30)6 仿真与调试 (33)6.1 仿真结果分析及说明 (33)6.1.1 仿真分析 (35)6。
单片机课程设计三人抢答器在现代电子技术的快速发展中,抢答器作为一种常见的电子设备,广泛应用于各种竞赛、游戏和活动中。
本次课程设计的任务是设计一个三人抢答器,通过单片机的控制实现抢答功能,并具备相应的显示和提示功能。
一、设计要求1、有三个抢答按键,分别对应三位选手。
2、当有选手按下抢答键时,系统能锁定该选手,并在显示屏上显示其编号。
3、同时伴有声音提示,表示抢答成功。
4、抢答成功后,其他选手再按下抢答键无效。
二、硬件设计1、单片机选型我们选择了常见的 51 系列单片机,如 STC89C52 单片机。
它具有价格低廉、性能稳定、易于编程等优点。
2、按键输入使用三个独立按键作为抢答按键,分别连接到单片机的三个I/O 口。
通过检测这些 I/O 口的电平变化来判断是否有按键按下。
3、显示模块采用数码管作为显示模块,用于显示抢答成功选手的编号。
可以选择共阴或共阳数码管,通过单片机的 I/O 口控制数码管的段选和位选,实现数字的显示。
4、声音提示模块使用蜂鸣器作为声音提示装置,连接到单片机的一个 I/O 口。
当抢答成功时,单片机输出高电平驱动蜂鸣器发声。
5、电源模块为整个系统提供稳定的电源,可以使用 5V 直流电源适配器或者通过电池供电。
三、软件设计1、主程序流程系统初始化后,进入循环等待状态,不断检测三个抢答按键的状态。
当有按键按下时,进行相应的处理,包括锁定选手、显示编号、发声提示以及禁止其他选手抢答。
2、按键检测程序通过不断读取与按键连接的 I/O 口的电平状态,判断是否有按键按下。
为了消除按键抖动的影响,需要进行软件消抖处理。
3、显示程序根据抢答成功选手的编号,将对应的数字编码发送到数码管的段选和位选端口,实现数字的显示。
4、声音提示程序当抢答成功时,单片机控制与蜂鸣器连接的 I/O 口输出高电平,使蜂鸣器发声。
四、系统调试1、硬件调试首先检查电路连接是否正确,有无短路、断路等情况。
然后测量各个电源点的电压是否正常,确保硬件电路工作正常。
抢答器设计内容提要:电子智能抢答计分器在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。
如果在抢答中,靠视觉是很难判断出哪组先答题。
利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。
本设计使用AT89C51单片机来设计智能抢答器,组数可以在八组以内任意使用。
并且具有倒计时和时间设置及报警功能。
利用AT89C51单片机对信号进展锁存、显示等功能。
分别从硬件和软件两方面阐述了该控制系统的设计方法,并经过调试和运行使该系统到达预期目标,具有反响快、功能齐全、实用性强的特点。
一、系统总体方案设计电子智能抢答计分器在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。
为了完成这个任务设计时系统能显示抢答组号、各组计分并能计分显示以及比赛完毕时能发出报警声三个要求;电子智能抢答计分器主要是由硬件局部和软件局部构成,硬件和软件分开设计;系统综框图1-1 系统框架图抢答器的工作原理抢答器的工作原理是利用单片机的定时器T0、T1中断完成,其余状态循环调用显示子程序,用4个共阴极LED数码管来显示,用P0口作为数码管的八个段选,用P2口中的、P2.1、P2.2、作为4个数码管其中3个位选,P1口接4个按键,提供选手抢答,P3.0-P3.5四个接四个按键,提供开场、完毕、答题时间调整、抢答时间调整,加1、减1调整之用。
抢答功能:通过四路按键配合程序来实现抢答功能。
当主持人按下抢答键开场抢答后,此时任一路按下按钮均闭锁其它各路,由程序对键盘译码并显示最先按下抢答键的路数及其当前时间。
抢答限时:主持人按下抢答键后,设置5秒为抢答时间(此时间可在1-99秒之间修改)。
假设5秒内无人抢答,倒计时为0时发出报警,说明该抢答题目作废。
此时闭锁所有抢答按键,只有当主持人再次按下抢答键开场下一次抢答方可抢答。
答题限时:中选手按下按钮时,启动倒计时(此倒计时时间可在1~99秒之间修改),倒计时为0时发出报警,说明答题时间到。
51多路抢答器课程设计一、课程目标知识目标:1. 学生理解抢答器的原理,掌握51单片机的使用方法。
2. 学生能够运用所学知识,设计并实现一个多路抢答器的电路。
3. 学生了解抢答器在现实生活中的应用,理解其工作原理与电路设计之间的关系。
技能目标:1. 学生能够独立完成51单片机的编程与调试。
2. 学生能够利用所学知识,解决实际电路设计中的问题。
3. 学生通过动手实践,培养电路设计与制作的能力。
情感态度价值观目标:1. 学生在学习过程中,培养团队协作精神和解决问题的能力。
2. 学生通过实践,体会科技的魅力,增强创新意识。
3. 学生关注科技发展,树立正确的科技观,认识到科技对生活的影响。
课程性质:本课程为实践性较强的课程,通过理论与实验相结合的方式,让学生在实际操作中掌握知识。
学生特点:学生具备一定的电子技术基础知识,具有较强的动手能力和好奇心。
教学要求:注重理论与实践相结合,鼓励学生动手实践,培养学生的创新意识和实际操作能力。
将目标分解为具体的学习成果,以便在教学过程中进行有效评估。
二、教学内容本课程依据课程目标,结合教材内容,制定以下教学大纲:1. 抢答器原理介绍- 抢答器的基本概念- 抢答器的工作原理与分类- 51单片机在抢答器中的应用2. 51单片机基础- 51单片机的内部结构与功能- 51单片机的编程语言与指令系统- 51单片机的I/O口编程与应用3. 多路抢答器电路设计- 电路设计原理与步骤- 常用电子元件的选择与应用- 抢答器电路图绘制与仿真4. 抢答器程序设计- 程序设计基本思路与方法- 51单片机程序编写与调试- 抢答器程序功能实现5. 实践操作与调试- 抢答器电路搭建与测试- 程序下载与调试- 系统优化与故障排查教学内容安排和进度:1-2课时:抢答器原理介绍与51单片机基础3-4课时:多路抢答器电路设计5-6课时:抢答器程序设计7-8课时:实践操作与调试教学内容与教材关联性:本教学内容紧密围绕教材中关于51单片机及其应用的相关章节,确保科学性和系统性。
多路智力抢答器课程设计一、课程目标知识目标:1. 学生能理解多路智力抢答器的基本工作原理,掌握相关电子元件的功能和连接方式。
2. 学生能描述抢答器中涉及的数字电路知识,包括触发器、计数器等。
3. 学生了解多路智力抢答器的应用场景,并能结合实际需求进行设计和改进。
技能目标:1. 学生能独立完成多路智力抢答器的搭建,提高动手实践能力。
2. 学生能通过编程实现对抢答器的控制,培养编程思维和问题解决能力。
3. 学生能运用所学知识,对多路智力抢答器进行故障排查和维修。
情感态度价值观目标:1. 学生在课程学习中,培养团队协作精神和竞争意识,提高沟通与表达能力。
2. 学生通过实践操作,体会科技带来的乐趣,激发对电子技术的兴趣和热情。
3. 学生认识到科技发展对社会进步的重要性,增强创新意识和责任感。
课程性质:本课程为电子技术实践课程,结合理论知识与动手操作,提高学生的综合运用能力。
学生特点:六年级学生,具备一定的电子技术基础,好奇心强,喜欢动手实践,但注意力容易分散。
教学要求:注重理论与实践相结合,引导学生主动参与,提高学生的动手能力和创新能力。
通过课程学习,使学生能够将所学知识应用于实际项目中,培养解决问题的能力。
将课程目标分解为具体的学习成果,以便于后续教学设计和评估。
二、教学内容本章节教学内容主要包括以下三个方面:1. 电子元件及工作原理:- 学习常用电子元件如电阻、电容、二极管、三极管等的功能和特点。
- 探究触发器、计数器等数字电路的工作原理及其在抢答器中的应用。
2. 多路智力抢答器设计与搭建:- 分析多路智力抢答器的电路图,理解各部分电路的功能及相互关系。
- 学习电路搭建方法,动手搭建多路智力抢答器,并进行调试与优化。
3. 编程与控制:- 学习抢答器控制程序的设计与编写,掌握基本编程语句和逻辑结构。
- 结合实际需求,对抢答器程序进行修改和优化,实现功能扩展。
教学大纲安排:1. 电子元件及工作原理(1课时)2. 多路智力抢答器设计与搭建(2课时)3. 编程与控制(2课时)教材章节及内容:- 第四章:数字电路基础,涉及触发器、计数器等知识点。
设计课题:多路抢答器学院:电气与信息工程学院专业:电气工程及其自动化班级:学号:姓名:目录一、任务及设计要求 (2)1.任务 (2)2.要求 (2)二、系统原理图 (2)三、硬件原理图 (6)1.元器件清单 (6)2.硬件设计 (6)3.软件设计 (11)4.性能分析 (13)四、流程图 (15)1.总体流程图 (15)2.抢答器模块 (16)3.北京时间模块流程图 (17)五、程序 (18)六、产品使用说明书 (27)1.功能 (27)2.使用说明 (28)七、心得体会 (29)八、参考文献,教师评语 (30)一、任务及设计要求1、任务设计一多路抢答器,每组设计一抢答按扭供选手使用2、要求(1)设计一多路数字抢答器(2)设置一个系统清除和抢答控制开关,该开关由主持人控制(3)抢答器具有锁存与显示功能。
选手按动按扭,锁存相应的编号,并在LED数码管或LCD上显示,同时系统报警。
优先抢答选手的编号一直保持到主持人将系统信号清除为止(4)抢答器具有定时抢答功能。
当主持人启动“开始”键后,计时器进行计时,同时绿灯亮(可蜂鸣器替代或显示对应标志)。
参赛选手在设定时间内进行抢答,抢答有效,定时器停止工作,绿灯灭,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止,如果定时时间已到,无人抢答,本次抢答无效,系统报警。
中途可以暂停。
(5)显示定时时间,可倒数显示(6)定时时间进入最后十秒时,可用蜂鸣器提醒(7)显示北京时间,可调整二、系统原理图硬件原理:ADUC848管脚图如下图所示。
Pin1~4:(P1.0~P1.3)作为矩阵式键盘或独立按键的输入,P1口只能用于输入,默认用于模拟输入,作为数字输入使用时应先往P1口相应引脚写0,这里可以用P0&=0xf0。
若P2、P3、P0口要作为输入,则应往相应引脚写1。
Pin5、6:AVDD、AGND,模拟电源输入。
Pin7、8:外部参考电压接入,Pin7接AGND。
目录摘要 (I)第1章绪论 (1)1.1 单片机抢答器的背景 (1)1.2 抢答器的意义 (1)第2章设计概述 (2)2.1 抢答器工作原理 (2)2.2 设计目的与要求 (2)2.3 设计任务 (2)2.4 运行环境及工具 (2)第3章系统硬件电路设计 (3)3.1 AT89C51单片机硬件电路 (3)3.2 原理及电路总框图 (3)3.3 晶振复位及开始抢答电路 (4)3.4 选手抢答键 (4)3.5 显示与显示驱动电路 (5)3.6 蜂鸣器音频输出电路 (6)第4章系统软件设计 (7)4.1 程序设计 (7)4.2 主程序设计 (7)4.3 系统流程图 (8)4.4 程序清单 (9)第5章系统仿真 (18)5.1 Proteus软件介绍 (18)5.2 仿真电路设计 (18)5.3 仿真测试 (18)5.4 仿真结果分析 (20)第6章结束语 (21)参考文献 (22)第1章绪论1.1 单片机抢答器的背景二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。
不过,这种电脑,通常是指个人计算机,简称PC机。
它由主机、键盘、显示器等组成。
还有一类计算机,大多数人却不怎么熟悉。
这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。
顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。
因为它体积小,通常都藏在被控机械的“肚子”里。
它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。
现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。
究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上[1]。
基于单片机的多路抢答器设计在教育场景中,为了增加学生的参与度和互动性,常常会设置抢答环节。
为了简化抢答的流程,提高效率,很多学校会选择使用基于单片机的多路抢答器。
本文将详细介绍基于单片机的多路抢答器的设计过程。
一、设计目标设计一个基于单片机的多路抢答器,满足以下要求:1.支持多路抢答,最少支持4个人同时抢答;2.抢答按照先后顺序进行,每个人只有一次机会;3.可以显示抢答的状态,并且能够记录抢答的时间;4.方便操作,使用简单。
二、硬件设计1.单片机选择在本设计中,我们选择常用的STM32单片机作为主控芯片。
其具有强大的计算能力和丰富的外设接口,能够满足本设计的需求。
2.LCD显示屏为了显示抢答的状态和时间,我们需要选择一个合适的显示屏。
在本设计中,我们选择4行16列的液晶显示屏,能够满足显示需求。
3.按键为了实现学生的抢答操作,我们需要设计抢答按钮。
在本设计中,我们选择使用一个矩阵按键,可以支持多路抢答。
4.时钟模块为了记录抢答的时间,我们需要使用一个时钟模块。
在本设计中,我们选择使用DS1302时钟模块。
5.电源模块为了供给系统电源,我们需要设计一个电源模块。
在本设计中,我们选择使用一个DC稳压电源模块。
三、软件设计1.系统初始化在系统启动时,进行各个模块的初始化,包括单片机、LCD显示屏、按键、时钟模块等。
2.抢答操作当学生按下抢答按钮时,检测到按键信号,单片机会记录下当前的时间,并根据抢答顺序显示学生的抢答状态。
每次抢答完毕后,禁用对应的按键。
3.时间记录单片机通过时钟模块获取当前时间,并将抢答的时间记录下来。
4.状态显示利用LCD显示屏,实时显示当前抢答的状态,包括谁在抢答、抢答时间等信息。
5.结果统计当所有学生抢答完毕后,统计每个学生的抢答时间,并按照顺序显示出来。
四、系统测试完成软硬件的设计后,需要对系统进行测试,确保系统功能正常运行。
测试的主要内容包括:1.是否能够正确识别学生的抢答操作;2.是否能够正确记录抢答的时间;3.是否能够正确显示抢答的状态;4.是否能够正确统计抢答结果。
单片机抢答器系统一、项目要求1、设计一个智力竞赛抢答器,晶振12MHZ,可同时提供8路选手或8个代表对参加比赛,编号为1,2,3,4,5,6,7,8各用一个按钮。
2、节目主持人5个控制开关,用来控制清零和抢答开始,即时开始,以及抢答时间和限时时间的调节。
3、抢答器具有数字锁存功能,显示功能和声音提示功能。
抢答开始,若有选手按动抢答器按钮,编号立即锁存,并在LED上显示选手的编号,同时灯亮且伴有声音提示。
此外,要封锁输入电路,禁止其它选手抢答。
4、最先抢答的选手编号一直保持到主持人讲系统清零。
5、(1)4位LED分功如下:当某选手固定后:显示限答时间(2)主持人功能键①K1—选手加十分②K2—选手加五分③K3—回答时间设置(+50s)限时开始④K4—回答时间设置(+10s)⑤K5—抢答开始⑥K6—RST键,清零⑦K7—回答开始开始抢答:抢答时间选手编号二、原理框图三、设计方案论证1.设计方案的可行性本课题是设计一个智力竞赛抢答器,能够实现8组选手同时抢答、回答倒计时、选手加分及主持人控制等各项功能。
本设计采用Protues模拟硬件电路、KEIL软件进行编程相结合以达到理论模拟的效果。
根据课程设计项目要求该系统所需要的器件在Protues中基本都可以找出来。
KEIL编出的程序也能与Protues结合。
因此该系统可以实现。
2.需求分析(1)系统功能需求本系统是借用单片机采用模块化设计的智能抢答器,主控与参赛者设为终端分系统。
参赛者分系统设有:抢答按纽、提示功能等(声音提示和LED显示);主控分系统有:开始控制按钮、时限设定、加分按钮、复位按钮。
参赛者系统,除享有抢答按纽的权利功能外[1],还有人性化的提示功能和时间提示功能;主控系统的控制按钮做开始控制,根据活动参赛者的层次,对提前抡答者的行为设定为无效,对回答问题限时设为倒计时式,并有公示性显示。
本系统采用模块化设计智能抢答器,在抢答比赛中广泛应用,各组分别有一个抢答按钮。
单片机课程设计-智力竞赛抢答器单片机课程设计-智力竞赛抢答器摘要设计要求:1)能容许2-8组进行抢答。
2)能显示抢答组号。
3)各组记分,并能记分显示。
4)比赛结束时,能发出报警声。
硬件系统设计1)控制系统主要由单片机应用电路、存储器接口电路、显示接口电路组成。
其中单片机AT89C51是系统工作的核心,它主要负责控制各个部分协调工作. 2)硬件组成及所需元件:该系统的核心器件是AT89C51。
在其外围接上复位电路、上拉电阻、数码管、按钮及扬声器。
元件为:晶振X1、电容C1、C2、C3、电阻RP1。
P3.0和P3.1由裁判控制,分别是抢答停止和开始键。
P1.0-P1.7是8组抢答的输入口, P2.0--P2.3口为数码管的段选口,位选口用的是P0.0--P0.6口输出,外部中断0、1和P3.3,P3.4为抢答记时调整口,实现的对个队进行计时,并且加减调整,外部中断0,1实现了答题时间调整.P3.4 P3.5分别实现了时间的加一和减一.P3.6为蜂鸣器的控制口。
控制系统防真用到了伟福软件,集成调试环境,集成了编缉器、编译器、调试器,支持软件模拟,支持项目管理功能强大的观察窗口,支持所有的数据类型。
树状结构显示,一目了然,支持ASM(汇编)、C语言,多语言多模块源程序混合调试,在线直接修改、编译、调试源程序,错误指令定位。
功能很强大。
系统仿真还用到了PROTUCE软件,可通过仿真可以完全显示出所设计系统的功能,对于程序的调试等有很大的帮助.1 概述《单片机原理及应用技术》是一门技术性,应用性、实践性很强的学科。
课程设计是学好本门课程的又一重要实践性教学环节,课程设计的目的和任务就是配合单片机的教学和平时实验,以达到巩固消化课程的内容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,启发创新思维,使之具有独立单片机产品和科研的基本技能,是以培养学生综合运用所学知识的过程,是知识转化为能力和能力转化为工程素质的重要阶段。
武汉理工大学华夏学院信息工程课程设计报告书课程名称单片微型计算机与接口技术课程设计总评成绩学生姓名、学号朱富鑫***********学生专业班级物联网1141指导教师姓名苏明霞课程设计起止日期2016.6.13~2016.6.24课程设计基本要求课程设计是工科学生十分重要的实践教学环节,通过课程设计,培养学生综合运用先修课程的理论知识和专业技能,解决工程领域某一方面实际问题的能力。
课程设计报告是科学论文写作的基础,不仅可以培养和训练学生的逻辑归纳能力、综合分析能力和文字表达能力,也是规范课程设计教学要求、反映课程设计教学水平的重要依据。
为了加强课程设计教学管理,提高课程设计教学质量,特拟定如下基本要求。
1. 课程设计教学一般可分为设计项目的选题、项目设计方案论证、项目设计结果分析、答辩等4个环节,每个环节都应有一定的考核要求和考核成绩。
2. 课程设计项目的选题要符合本课程设计教学大纲的要求,该项目应能突出学生实践能力、设计能力和创新能力的培养;该项目有一定的实用性,且学生通过努力在规定的时间内是可以完成的。
课程设计项目名称、目的及技术要求记录于课程设计报告书一、二项中,课程设计项目的选题考核成绩占10%左右。
3. 项目设计方案论证主要包括可行性设计方案论证、从可行性方案中确定最佳方案,实施最佳方案的软件程序、硬件电路原理图和PCB图。
项目设计方案论证内容记录于课程设计报告书第三项中,项目设计方案论证主要考核设计方案的正确性、可行性和创新性,考核成绩占30%左右。
4. 项目设计结果分析主要包括项目设计与制作结果的工艺水平,项目测试性能指标的正确性和完整性,项目测试中出现故障或错误原因的分析和处理方法。
项目设计结果分析记录于课程设计报告书第四项中,考核成绩占25%左右。
5. 学生在课程设计过程中应认真阅读与本课程设计项目相关的文献,培养自己的阅读兴趣和习惯,借以启发自己的思维,提高综合分和理解能力。
文献阅读摘要记录于课程设计报告书第五项中,考核成绩占10%左右。
6. 答辩是课程设计中十分重要的环节,由课程设计指导教师向答辩学生提出2~3个问题,通过答辩可进一步了解学生对课程设计中理论知识和实际技能掌握的程度,以及对问题的理解、分析和判断能力。
答辩考核成绩占25%左右。
7.学生应在课程设计周内认真参加项目设计的各个环节,按时完成课程设计报告书交给课程设计指导教师评阅。
课程设计指导教师应认真指导学生课程设计全过程,认真评阅学生的每一份课程设计报告,给出课程设计综合评阅意见和每一个环节的评分成绩(百分制),最后将百分制评分成绩转换为五级分制(优秀、良好、中等、及格、不及格)总评成绩。
8. 课程设计报告书是实践教学水平评估的重要资料,应按课程、班级集成存档交实验室统一管理。
一、课程设计项目名称多路抢答器二、项目设计目的及技术要求1.四个独立的按键分为四路,每一个按键按下后对应的LED灯会亮。
2.在数码管上显示09到00后开始抢答,抢答时四个按键有一个按下了则对应的LED灯会亮,其它按键无效,并且会把对应的编号显示在数码管上面,同时把对应的编号通过串口显示在上位机的串口助手上。
3.抢答完毕后,如果重新开始,则在上位级的串口助手上发送A到单片机,单片机接受到后,开始新一轮的抢答,即继续完成第2个步骤。
如:在K1,K2,K3,K4都开始按的情况下,先判断谁先按下,那么其他键无效。
再按也无效。
注:以上所有的功能都是用单片机来完成的。
三、项目设计方案论证(分析项目要求和指标,给出总的设计方案) 实际项目实现内容:当主持人向串口发送字符“A ”后,单片机接收到开始信号,然后LED 点阵移动显示3,2,1,GO 后,数码管从09到00倒计时显示,当显示到00时,抢答器可以开始抢答,当其中任何一方先按下按钮后,将其代表的号码显示到数码管上,并发送到串口上,同时锁住其他的按钮,让其他选手无法再次抢答。
然后通过选手的回答,主持人判断对错后,在串口上发送“Y ”,则在LED 点阵上显示“对号”,如若回答错误,在串口上发送“N ”,则在LED 点阵上显示“X ”。
设计方案:通过对单片机程序的编写,调用LED 灯,数码管,LED 点阵,按键,以及串口部分,控制好单片机的时序,实现设计要求,并加入适当的拓展模块。
流程框图:LED灯及数码管模块:由开发板原理图可知可以编写一个扫描函数,使用74HC138译码器实现对6个数码管以及LED 灯的控制。
代码如下:void LedScan(){static unsigned char i = 0;P0 = 0xFF;P1 = (P1 & 0xF8) | i;P0 = LedBuff[i];if (i < 7)i++;elsei = 0;}LED点阵模块:由开发板原理图可知,使能U4的74HC138控制点阵,即在调用LED点阵时赋ADDR3 = 0即可,同理可以将LED点阵理解成8个数码管显示,使用取模软件,取出想要的图片显示,并存放在数组里,通过对LED点阵的循环赋值,可以达到LED点阵纵向移动的功能。
按键模块:由开发板原理图可知,将P2^3口置0,是KeyOut1输出低电平,即使K1~K4转换为独立按键使用。
串口模块:可以通过配置串行控制寄存器,调好通信的波特率,完成串口通信模块。
配置方法:⏹1、配置串口为模式1。
⏹2、配置定时器T1为模式2,即自动重装模式。
⏹3、根据波特率计算TH1和TL1的初值,如果有需要可以使用PCON进行波特率加倍。
⏹4、打开定时器控制寄存器TR1,让定时器跑起来。
配置波特率的函数:void ConfigUART(unsigned int baud){SCON = 0x50;TMOD &= 0x0F;TMOD |= 0x20;TH1 = 256 - (11059200/12/32)/baud;TL1 = TH1;ET1 = 0;ES = 1;TR1 = 1;}设计完整代码:#include <reg52.h>sbit ADDR3 = P1^3;sbit ENLED = P1^4;sbit KEY1 = P2^4;sbit KEY2 = P2^5;sbit KEY3 = P2^6;sbit KEY4 = P2^7;unsigned char code LedChar[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};unsigned char LedBuff[8] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,0xFF};unsigned char code led[ ]={ 0xFF,0xC1,0xDF,0xDF,0xC1,0xDF,0xDF,0xC1,0xFF,0xC1,0xDF,0xDF,0xC1,0xFD,0xFD,0xC1, 0xFF,0xF7,0xF3,0xF7,0xF7,0xF7,0xF7,0xF7,0xC1,0xFF,0xFF,0xFF,0x10,0x5E,0x5E,0x52,0x56,0x10,0xF7,0xFF,0xFF,0xFF,0xFF,0xFFF };unsigned char image[] = {0xFF,0xFF,0x7F,0xBF,0xDF,0xEE,0xF5,0xFB};unsigned char no[]={0xFF,0x7D,0xBB,0xD7,0xEF,0xD7,0xBB,0x7D};unsigned char T0RH = 0;unsigned char T0RL = 0;unsigned char RxdByte = 0;unsigned char index = 0;unsigned char tmrs;unsigned int sec = 10;unsigned int cnt = 0;unsigned int over = 0;unsigned int go = 0;unsigned int flag1s = 0;unsigned int flag250ms = 0; unsigned int begin = 1;void ConfigTimer0(unsigned int ms); void ConfigUART(unsigned int baud); void main(){bit backup1 = 1;bit backup2 = 1;bit backup3 = 1;bit backup4 = 1;EA = 1;ENLED = 0;ADDR3 = 1;P2 = 0xF7;ConfigTimer0(1);ConfigUART(9600);while (1){if(go == 1){LedBuff[0] = led[index+0];LedBuff[1] = led[index+1];LedBuff[2] = led[index+2];LedBuff[3] = led[index+3];LedBuff[4] = led[index+4];LedBuff[5] = led[index+5];LedBuff[6] = led[index+6];LedBuff[7] = led[index+7];}if(flag1s&begin == 1){if(sec == 0){begin = 0;over = 0;}LedBuff[0] = LedChar[sec];LedBuff[1] = LedChar[0];LedBuff[2] = 0xFF;LedBuff[3] = 0xFF;LedBuff[4] = 0xFF;LedBuff[5] = 0xFF;LedBuff[6] = 0xFF;}if(begin == 0){if(over == 0){if(KEY1 != backup1 ) { o ver = 1;if(backup1 == 0){LedBuff[6] = 0x7F;LedBuff[0] = LedChar[1];LedBuff[1] = LedChar[0];SBUF = 0x01;while(!TI);TI = 0;RI = 0;}backup1 = KEY1;}}if(over == 0){if(KEY2 != backup2) {if(backup2 == 0){ over = 1;LedBuff[6] = 0xBF; LedBuff[0] = LedChar[2]; LedBuff[1] = LedChar[0];SBUF = 0x02;while(!TI);TI = 0;RI = 0;}backup2 = KEY2;}if(over == 0){if(KEY3 != backup3) {if(backup3 == 0) { over = 1;LedBuff[6] = 0xDF; LedBuff[0] = LedChar[3]; LedBuff[1] = LedChar[0]; SBUF = 0x03;while(!TI);TI = 0;RI = 0;}}backup3 = KEY3;}}if(over == 0){if(KEY4 != backup4) {if(backup4 == 0){ over = 1;LedBuff[6] = 0xEF; LedBuff[0] = LedChar[4]; LedBuff[1] = LedChar[0];SBUF = 0x04;while(!TI);TI = 0;RI = 0;}backup4 = KEY4;}}}}}void ConfigTimer0(unsigned int ms) //定时器配置函数{unsigned long tmp;tmp = 11059200 / 12;tmp = (tmp * ms) / 1000;tmp = 65536 - tmp;tmp = tmp + 18;T0RH = (unsigned char)(tmp>>8);T0RL = (unsigned char)tmp;TMOD &= 0xF0;TMOD |= 0x01;TH0 = T0RH;;TL0 = T0RL;ET0 = 1;TR0 = 1;}void ConfigUART(unsigned int baud) //波特率配置函数{SCON = 0x50;TMOD &= 0x0F;TMOD |= 0x20;TH1 = 256 - (11059200/12/32)/baud;TL1 = TH1;ET1 = 0;ES = 1;TR1 = 1;}void LedScan() //数码管及LED扫描函数{static unsigned char i = 0;P0 = 0xFF;P1 = (P1 & 0xF8) | i;P0 = LedBuff[i];if (i < 7)i++;elsei = 0;}void InterruptTimer0() interrupt 1 //定时器0中断函数{static unsigned int tmr1s = 0;TH0 = T0RH;TL0 = T0RH;LedScan();tmr1s++;tmrs++;if(tmrs >=250){tmrs = 0;flag250ms =1;index++;if(index >= 32){if(go == 1){go = 0;ADDR3 = 1;begin = 1;flag1s = 1;sec = 9;}index = 0;}}if(tmr1s >= 1000){tmr1s = 0;flag1s = 1;if (sec > 0){sec--;}else{sec = 0;}}}void InterruptUART() interrupt 4 //串口中断函数{if (RI){RI = 0;RxdByte = SBUF;SBUF = RxdByte;if( SBUF == 'A'){ADDR3 = 0;go = 1;sec = 9;index = 0;}if( SBUF == 'Y'){ADDR3 = 0;LedBuff[0] = image[0];LedBuff[1] = image[1];LedBuff[2] = image[2];LedBuff[3] = image[3];LedBuff[4] = image[4];LedBuff[5] = image[5];LedBuff[6] = image[6];LedBuff[7] = image[7]; }if(SBUF == 'N'){ADDR3 = 0;LedBuff[0] = no[0];LedBuff[1] = no[1];LedBuff[2] = no[2];LedBuff[3] = no[3];LedBuff[4] = no[4];LedBuff[5] = no[5];LedBuff[6] = no[6];LedBuff[7] = no[7];}}if (TI){TI = 0;}}实验现象图:按下按钮2,其他按钮在重新开始之前无法使用判断对错:发送’A’重新开始:LED移动显示3,2,1,GO后从09~00显示完后可以进入抢答环节四、项目设计结果分析(分析试验过程中,现象或问题的正确性和必然性,以及对有没有达到技术要求进行分析,写出整个调试经过和现象,并分析产生不正确结果的原因和处理方法。