基于AT89C51控制的抢答器设计与制作_第1页
基于AT89C51控制的抢答器设计与制作_第2页
基于AT89C51控制的抢答器设计与制作_第3页
基于AT89C51控制的抢答器设计与制作_第4页
基于AT89C51控制的抢答器设计与制作_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

湖南商务职业技术学院毕业设计

目录

1项目简介............................................................................................................1

2核心元器件选择................................................................................................1

2.1主控芯片.................................................................................................1

2.2显示器件.................................................................................................2

2.3设计方案.................................................................................................2

3产品硬件设计....................................................................................................3

3.1系统方框图............................................................................................3

3.2主要功能电路的设计............................................................................4

3.3焊接.........................................................................................................9

3.4调试.......................................................................................................11

5系统软件设计..................................................................................................12

5.1软件设计环境.......................................................................................12

5.2程序流程图...........................................................................................13

6产品使用说明..................................................................................................16

7设计小结..........................................................................................................16

附录1电路原理图.............................................................................................18

附录2PCB设计图.............................................................................................18

附录3作品实物照.............................................................................................19

附录4程序代码.................................................................................................20

参考资料.............................................................................................................28

湖南商务职业技术学院毕业设计

基于单片机控制的抢答器设计与制作

1项目简介

项目产品所实现的功能是:设计由主持人控制具有优先抢答、定时抢答、

抢答报警功能的多路抢答器电路,利用数码管分别显示抢答者的编号及抢答时

间。可同时供8名选手进行抢答的多路抢答器,设置主持人控制开关,用来控

制电路清零和抢答开始。抢答器的定时抢答功能,其时间可由节目主持人自行

设定。当主持人启动“开始”键后,蜂鸣器报警,并立即进行倒计时显示;若

有选手抢答,则倒计时停止,数码管分别显示抢答选手的编号和当前时间,并

且保持不变直至主持人将系统清零为止,同时电路发出声响表示抢答完成。此

外,电路禁止其他选手继续抢答;抢答开始后,如果抢答时间到,却无选手抢

答,则电路进行报警,表示抢答时间结束。

根据研究和设计验证的结果,采用单图技术设计的应答器与目前市面上销

售的抢答器进行了比较。第一,电路连接简单。因为几乎所有的功能单元都是

在单片机内部编程的。第二,工作性能可靠,抗干扰能力优于目前的应答器。

本设计主要采用一般的单片机系统,对各部分的功能块进行分割设计。最终完

成了8路响应器的设计,根据电路设计进行了焊接,并制作了相应的实物进行

演示,得到了预期的结果。

2核心元器件选择

2.1主控芯片

采用AT89C51做主控制芯片。AT89C51是美国ATMEL公司生产的低电压,

高性能CMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器

(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的

高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8

位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提

供许多高性价比的应用场合,可灵活应用于各种控制领域。AT89C51具体参数及

引脚如图2-1所示。

1

湖南商务职业技术学院毕业设计

图2-1:AT89C51芯片参数及引脚

AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RA

M,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,

一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz

的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的

工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式

保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬

件复位。

2.2显示器件

使用LCD12864LCD显示屏。具有中文字符库的128X64为4位/8位并行,

2线或3线串行接口模式,显示分辨率为128×64,内置819216*16汉字和12816*

8ASCII字符。通过该模块灵活的界面模式和简单方便的操作说明,可以形成完

整的中文人机交互图形界面。它可以显示8×4行的16×16点矩阵汉字,并且

还可以完成图形显示。低电压和低功耗是另一个突出的特点。尽管LCD12864LCD

功能强大,但显示内容太大,造成显示空间的浪费,并且LCD的成本很高。结

合以上描述,根据显示器的设计大多是数字和简单的字母,因此数字电子管显

示器的选择更加合理。

2.3设计方案

通过上述对各个模块介绍,本设计最终选择了AT89C51作为本设计的主控

2

湖南商务职业技术学院毕业设计

芯片,通过四位数码管实时显示抢答信息包括倒计时及选手编号等内容,抢答器

一共设置有8个选手按键,以及3个主持人按键(包括确定、加、减)。在游戏开

始之前,主持人可以先设置抢夺时间,当然,系统还会预置时间设置。当比赛

是正式比赛时,蜂鸣器会发出哔哔声提示玩家开始比赛,当比赛持续到最后5

秒钟时,如果没有选手回答,蜂鸣器会发出哔哔声提示答案将结束。

3产品硬件设计

为使硬件电路设计尽可能合理,应注意以下几方面:

(1)尽可能采用高性能芯片,简化电路,高性能芯片取代一些普通芯片。随

着生产工艺的提高,新芯片的价格会不断下降,不一定会高于普通芯片的价格

总和。

(2)给设计留有空间,在设计硬件电路时,考虑到将来修改扩展的方便性。

因为很少有通用的电路设计,现在不留下任何空间可能会迫使完全的返工,以

便在未来进行小的修改或扩展。

(3)序空间,选择空间足够大的单片机芯片,本设计采用AT89C51单片机。

(4)关于I/O端口,我们制作了样机,在现场进行了试验,发现了一个简单

的软件对策无法解决的问题。如果需要采集一些新的信号,就要增加输入的检

测端;需要控制的物理量必须增加输出。如果在硬件的电路设计中准备好I/O端

口,即使当时空着,该用的时候也能用。

3.1系统方框图

控制系统方框图即控制系统各部分的相对位置和功能的一种图解描述。本

设计产品的系统方框图如图3-1所示。

3

湖南商务职业技术学院毕业设计

图3-1系统方框图

3.2主要功能电路

3.2.1时钟频率电路

单片机必须由时钟驱动才能工作。在单片机中有一个时钟振荡电路,只需要

连接一个外部振荡源就可以向单片机内部单元产生一定的时钟信号,确定单片

机的工作速度。(外部震荡源电路见图3-2)

图3-2外部震荡源电路

一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在

XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振

的频率确定。电路中两个电容C1,C2的作用有两个:一是帮助振荡器起振;二是

对振荡器的频率进行微调。C1,C2的典型值为30PF。

单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单

4

湖南商务职业技术学院毕业设计

元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,常用fosc

表示。如时钟频率为12MHz,即fosc=12MHz,则时钟周期为1/12µs。

3.2.3复位电路

复位电路由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可

以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由

电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以

上就将复位,所以,适当组合RC的取值就可以保证可靠的复位。(实际电路见图

3-3)

图3-3复位电路

图3-4复位原理分析图

上电复位是利用电容充电来实现的,即上电瞬间RST端的电位与VCC相同,

随着充电电流的减少,RST的电位逐渐下降。图2(a)中的R是施密特触发器

输入端的一个10KΩ下拉电阻,时间常数为10×10-6×10×103=100ms。只要VCC

的上升时间不超过1ms,振荡器建立时间不超过10ms,这个时间常数足以保证

5

湖南商务职业技术学院毕业设计

完成复位操作。上电复位所需的最短时间是振荡周期建立时间加上2个机器周

期时间,在这个时间内RST的电平应维持高于施密特触发器的下阈值。(原理

分析见图5)

上电按键复位2(b)所示。当按下复位按键时,RST端产生高电平,使单

片机复位。复位后,其片内各寄存器状态见表,片内RAM内容不变。

3.2.4显示电路

LED(LightEmittingDiode发光二极管)显示器是由发光二极管构成

的最为常用的显示器件。数字LED显示器利用7个发光二极管显示数字,通常

被称为七段LED显示器、或者数码管。另外,数码管中还有一个圆点型发光二

极管,用于显示小数点。结构图如图6所示。

LED显示器有共阳极接法和共阴极接法。共阳极接法的发光二极管的阳极连

在一起构成公共阳极。使用时,公共阳极接+5V电压。在阴极端输入低电平,

发光二极管就导通发光。共阴极接法的发光二极管的阴极连在一起构成公共阴

极。使用时,公共阴极接地,在阳极端输入高电平时,发光二极管就导通发光。

使用时要注意区分这两种不同接法的LED显示器。

LED导通电压在1.5V左右,工作电流每段约为20mA,直接接在+5V电平上

会使数码管过亮导致损坏,需接一个100~300Ω的限流电阻。

图3-5显示电路

3.2.5键盘扫描电路

键盘是由一组规则排列的按键组成,一个按键实际上是一个开关元件,也

就是说键盘是一组规则排列的开关。

在单片机应用系统中,除复位按钮具有特殊的复位电路和特定的复位功能

6

湖南商务职业技术学院毕业设计

外,其他按键都是通过开关状态来设置控制功能或输入数据。按下功能键或数

字键时,计算机应用系统应完成按键设定的功能。关键信息的输入是一个与软

件结构密切相关的过程。

对于一组键或键盘,总是有一个接口电路连接到CPU。CPU可以使用查询或

中断的方式来知道按键是否输入并检查按下了哪个按键,将按键的数字存入累

加器A,然后通过跳转指令进入实现按键功能的程序,之后执行主程序。

图3-6键盘扫描电路

为了减少I/O端口的占用,大量的键被安排在一个矩阵中。在矩阵键盘中,

每条水平线和垂直线在交叉处不是直接相连的,而是通过一个键相连的。通过

这种方式,一个港口(如P1端口)可以形成1×8键,比直接端口线用于键盘的两

倍多,行数,差异越明显,例如,添加另一个线可以形成一个20名关键的键盘,和

直接使用端口线只是一键(9键)。因此,在需要多个键的情况下,采用矩阵法制

作键盘是合理的。

3.2.6功放电路

一般的音箱电路包括:喇叭、功放电路、音量控制电路、输入信号连接器、

输出信号连接器、AC-DC降压整流滤波电路、电源开关以及电源开启发光只是电

7

湖南商务职业技术学院毕业设计

路以及相应元器件组成。(分析电路见图8)

当喇叭接收到由音源设备输出的电信号时,电流会通过喇叭上的线圈(音

圈),并产生磁场反应。而通过线圈的电流是交变电流,它的正负极是不断变

化的;正极和负极相遇会相互吸引,线圈受到喇叭上磁铁的吸引向后(箱体内)

运动;正极和正极相遇则相互排斥,线圈向外(箱体外)运动。这一收一扩的

节奏会产生声波和气流,并发出声音,它和我们讲话的喉咙振动是同样的效果。

图3-7功放电路原理分析图.

3.2.7复位电路

系统上电时提供复位信号,当系统电源稳定后,复位信号被取消。为了可

靠性,复位信号应在电源稳定后经过一定的延迟后取消,以免因电源开关抖动

或电源插头的拆合过程而影响复位。如图1所示的RC复位电路可以实现上述基

本功能,其输入输出特性如图9所示。但无法解决功率毛刺(点A)、功率下降缓

慢(电池电压不足)等问题。另外,通过调整RC常数来改变延迟会使其行驶性能

变差。左侧电路为高电平有效复位,右侧电路为低电平Sm,手动复位开关Ch可

避免高频谐波对电路的干扰。

8

湖南商务职业技术学院毕业设计

图3-8复位电路图

使用比较电路,不但可以解决电源毛刺造成系统不稳定,而且电源缓慢下

降也能可靠复位。图9是一个实例当VCCx(R1/(R1+R2))=0.7V时,Q1截止

使系统复位。Q1的放大作用也能改善电路的负载特性,但跳变门槛电压Vt受

VCC影响是该电路的突出缺点,使用稳压二极管可使Vt基本不受VCC影响。见

图,当VCC低于Vt(Vz+0.7V)时电路令系统复位。

3.3焊接

(1)焊前准备:

焊接前检查电烙铁是否处于允许工作温度。选择合适的烙铁头与焊点的接

触位置,只有这样才能得到良好的焊点。

(2)正确的焊接操作的5个步骤

1、准备施焊:左手拿焊丝,右手拿烙铁。烙铁头应保持清洁,无焊渣等氧

化物,表面应涂一层焊料。

2、加热焊件:将烙铁的尖端压在两个焊缝的接头上,整个焊接部分加热1-2

秒左右。在印制板上焊接元件时,要注意烙铁头接触元件的焊盘和引线。

3、送入焊丝:当焊件的焊接表面加热到一定温度时,焊锡丝从烙铁的对面

接触焊件。注意:不要将焊锡丝送到烙铁头上。

4、移开焊丝:当焊丝充分熔化后,向左移去45度。

5、移开烙铁:待焊料母猪进入焊盘和焊接部位后,向右上方45度方向取

下烙铁,即可完成焊接。

9

湖南商务职业技术学院毕业设计

(3)注意事项

A.首先检测各元件

B.提前对PCB板进行排版及布线,为电路拓展留出足够空间

C.完成A、B两步后再进行焊接

3.3.1对PCB板进行排版及连线

在本实验中使用的面包板的内部链接,如果破坏了背面的绝缘胶布,可以

剥下胶布看内部配线的结构,有不知道内部配线的错误电路的情况。当然,最

好的方法是使用测试电路来回插孔,验证其内部构造。

1)首先了解面包板在连线和焊接的注意事项。

2)了解实验原件及器材后,按照原理图在面包板上连接电路;

3)焊接要注意,电子电路在焊接时,应遵循的规则。

3.3.2焊接的技巧和注意事项

(1)烙铁在焊接前应插上电源,加热烙铁。

(2)焊接时,焊锡与线路板、电烙铁与线路板的角度最好成45度,所以焊

锡与电烙铁的角度最好成90度。

(3)焊接时,焊锡与烙铁接触的时间不宜过长,以免焊锡太多或造成漏锡;

也不要太短,以免造成虚焊。

(4)构件支腿应尽量伸直,且不要伸得太长,以1mm为好,多余的可以剪掉。

(5)焊完时,焊锡最好呈圆滑的圆锥状,而且还要有金属光泽。

元件必须清洁和镀锡,电子元件在保存中,由于空气氧化的作用,元件引

脚上附有一层氧化膜,同时还有其它污垢,焊接前可用小刀刮掉氧化膜,并且

立即涂上一层焊锡(俗称搪锡),然后再进行焊接。经过上述处理后元件容易

焊牢,不容易出现虚焊现象。焊接的温度和焊接的时间焊接时应使电烙铁的温

度高于焊锡的温度,但也不能太高,以烙铁头接触松香刚刚冒烟为好。焊接时

间太短,焊点的温度过低,焊点融化不充分,焊点粗糙容易造成虚焊,反之焊

接时间过长,焊锡容易流淌,并且容易使元件过热损坏元件。焊接点的上锡数

量焊接点上的焊锡数量不能太少,太少了焊接不牢,机械强度也太差。而过多

则容易造成大量的外部与内部的脱节。焊料应浸泡在焊点上的所有元件引脚上,

且外形不可区分。初学者在焊接时注意烙铁的位置和焊点,一般电烙铁在焊接

的地方来回移动或强行挤压,这种方法是错误的。正确的方法是用电烙铁的锡

衬表面接触焊点,这样传热面积大,焊接速度快。

10

湖南商务职业技术学院毕业设计

3.4调试

将电路板焊接好后,在检查电路板是否能正常工作时,通常不是直接给电

路板上电,而是按照以下步骤确保每个步骤都没有问题,然后再上电。

3.4.1系统的调试

嵌入式系统是以应用为中心,基于计算机技术,可以对软件和硬件进行定

制,适用于应用系统,对功能、可靠性、成本、体积、功耗有严格要求的特殊

计算机系统。一般情况下,嵌入式微型处理器,周边硬件设备、嵌入式操作系统

及嵌入式操作系统上运行的特定的功能,实行各种各样的应用软件的4个部分

组成。嵌入式系统通常包括对硬件的直接控制,并且限于特定功能。

嵌入式系统自底向上包括四个主要部分:硬件环境、硬件抽象层、嵌入式

操作系统和嵌入式应用程序。硬件抽象层将上层软件从下层硬件中分离出来。

系统的底层驱动与硬件无关,上层软件开发人员不需要关心底层硬件的具体情

况,可以根据硬件抽象层提供的接口进行开发。当使用硬件抽象层API设计操

作系统或应用程序时。只要硬件抽象层api可以在底层硬件平台上实现,操作

系统和应用程序代码就可以移植。

3.4.2具体调试

(1)具备通关装置和抢答控制,主持人操作后有人对主持人说

“开始”前抢答是违反规则的。

(2)具有计时功能,在60秒内没有回答即表示所有队员在此情况下弃权。

(3)60秒时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答。

(4)要显示响应时间,按下按钮减少1秒,按下“-1s”按钮,时间LED会

显示变化时间,调节范围为0s~60s。

(5)当主机按下“开始”键时,会有提示音,并立即进入倒计时(预设60秒

时间)。如果有选手回答问题,将会有提示音,并显示号码。只有第一个回答问

题的选手才是有效的。

(6)如果在倒计时过程中,主机想要停止倒计时可以随时按下“停止”键,

系统会自动进入准备状态,等待主机按下“开始”键进入下一次。

我遇到的问题:有时候在自己创建的元器件的管脚上无法实现连线该怎么办?

分析回答:应该是管脚的间距太小了。因为在ISIS中,每个元器件的管脚

都要占据一块区域,该区域会排斥外部的走线。解决这个问题的方法是按住

11

湖南商务职业技术学院毕业设计

“CTRL”键,行走线,直到线绕过狭窄的保护区。当然,最基本的方法是编辑

元件,引脚间距比较大。

主机密钥控制主开关,按下开关然后开始,数码管为0到60,和球员们必须

在规定的时间内进行抢答,如果我们没有60秒抢答抢答,如果玩家有一个规定

的时间内抢答成功,其余选手不能再争先回答,即选手争先回答成功。

5系统软件设计

软件任务分析与硬件电路设计相结合,硬件完成功能,软件完成任务。硬

件电路设计基本定稿后,就基本确定了。

5.1软件设计环境

设计软件在KeiluVision4环境下进行设计。KeiluVision4软件提供了丰

富的库功能和强大的集成开发调试工具,完整的Windows界面。另一个重要的

一点是,您只需要查看编译后的汇编代码就可以看到Keil的优势。Keil

uVision4界面如图5-1所示。

图5-1KeiluVision4界面

μVision和Ishell分别是针对Windows和Dos的C51集成开发环境(IDE),

可以完成编辑、编译、连接、调试、仿真等整个开发过程。开发人员可以使用IDE

本身或其他编辑器编辑C或汇编源文件。然后分别用C51和C51编译器编译目

标文件(.obj)。对象文件可以由LIB51生成,也可以由L51连接库文件生成绝

对对象文件(.abs)。Abs文件由OH51转换为标准十六进制文件,用于源级调试,

12

湖南商务职业技术学院毕业设计

调试器dScope51或tScope51。模拟器也可以直接使用它们来调试目标板,或者

直接将它们写入程序内存(如EPROM)。

KeiluVision提供用于创建应用程序的构建模式和用于调试应用程序的调

试模式你可以使用集成。的KeiluVision模拟器或直接在硬件上调试应用程序,如Keil

ULINKUSB-JTAG系列适配器。开发人员还可以使用其他AGDI适配器或外部第三

方工具来分析应用程序。我们可以很容易地区分菜单栏、工具栏、项目管理

区、程序代码区和信息输出窗口。

图5-2烧录程序界面

在菜单Edit-->Configuration-->Colors&Fonts里边,可以进行字体类型、

颜色、大小的设置。本设计采用的C语言编程,所以我们在Window栏中选择

8051:EditorCFiles,OUTPUT选择勾选输出HEX文件,这个文件将在接下来的

调试过程与最终系统运行用到。(烧录界面见图5-2)

5.2程序流程图

在本设计中包括了以下八个主要的程序:主程序;非法抢答序;抢答时间

调整程序;倒计时程序;正常抢答处理程序;犯规处理程序;显示及发声程序。

主流程图如图5-3,5-4,5-5所示:

13

湖南商务职业技术学院毕业设计

图5-3定时器程序流程图

图5-4总程序流程图

14

湖南商务职业技术学院毕业设计

图5-5外部中断的程序流程图

15

湖南商务职业技术学院毕业设计

6产品使用说明

外观介绍:抢答器包含单片机最小系统,共设有8个选手按键,1个主持人

按键(包含确定/加/减)以及1个复位按钮,蜂鸣器和数码显示器及其配套驱

动电路。

在比赛开始前主持人可以先对抢到的时间进行设置,通过主持人+-键调节

时间长短,按主持人键确定。比赛开始蜂鸣器会鸣叫一声提示比赛开始,数码

显示管开始倒计时,正式进入抢答环节。在比赛进入倒计时最后5s时如果还未

有人抢答,蜂鸣器会发出鸣叫提示抢答即将结束。如果有人在抢答未开始就进

行了抢答数码管上会显示犯规的选手编号。除此之外,还额外设计了临时出现

突发状况时的解决方案需要暂停计时,主持人只需要按下“主持人”键即可实

现即时暂停,当再次按下时抢答恢复。

正常抢答开始,选手通过按下对应编号的按钮进行抢答,数码显示管会显

示最快按下按钮选手的编号,表示抢答成功。

7设计小结

经过近两个星期的努力,在老师和同学的讨论和帮助下,我成功地完成了八

路抢答器的设计,通过此次课程设计,我重新认识到了对书本上的知识。在抢

答器设计过程中,发现了很多细节性的问题,也出现了很多错误,经过和同学

们研究、以及和指导老师的商讨最后都得到了圆满的解决,测试各个功能抢答、

暂停、报警等功能正常,和预期中的结果一致。感觉团队协作能力是非常有必

要的!通过此次的抢答器的设计,让我重新拾起了以前所学习的电路基础知识

和C语言程序编程,也使我加深了对单片机及接口技术的理解和应用,但由于

知识储备的局限,设计产品中可能会存在着一些不足,我真诚的接受老师和同

学的批评和指正。

本系统设计特点:

(1)电路采用模块化设计方案,硬件电路比较简单,制作方便。

(2)模块化硬件,调试方便,能够对单个模块进行测试,互相独立。

(3)C语言编程,可读性强,可移植性好。

(4)得益于单片机微处理器,系统稳定,高效节能。

本课题综合了《数字电子技术》、《C语言编程设计》、《单片机原理及应

16

湖南商务职业技术学院毕业设计

用》等课程相关知识,完成了基于单片机一个抢答器设计,具有完善的报警系

统,以及多参数检测。具体体现在:抢答器实现功能多样,可以满足不同的使

用场景,本设计是在经过本人深入分析比较后得出本系统应用的设计方案;本

设计涉及多方面的技术,综合应用了单片机、数字电子技术、C语言程序等相关

技术;本系统的设计需要将单片机最小系统和按钮,蜂鸣器、数码显示管、等

进行综合利用,具有较高综合性;系统设计中存在成本与可靠性之间的冲突,

该课题结合工程实际,设计了基于AT89C51单片机的抢答器。

我首先要感谢我的毕业设计指导老师。老师对我的设计方向做出了指导性

的意见和推荐,在论文撰写过程中及时对我遇到的困难和疑惑给予悉心指点,

提出了许多有益的改善性意见,投入了超多的心血和精力。蒋望金老师对我的

帮忙和关怀表示诚挚的谢意!

同时,还要感谢本校移动互联应用技术专业的授课老师们和所有同学们,

大家在毕业设计中互相学习,互相帮忙,共同度过了一段完美难忘的时光。

此外,还要感谢朋友以及同学们在论文编写中带给的大力支持和帮忙,给

我带来极大的启发。也要感谢参考文献中的作者们,透过他们的研究文章,使

我对研究课题有了很好的出发点。

最后,谢谢论文评阅老师们的辛苦工作。衷心感谢我的家人、朋友,以及

同学们,正是在他们的鼓励和支持下我才得以顺利完成此次毕业设计。

17

湖南商务职业技术学院毕业设计

附录1电路原理图

19移动互联一班唐涛

附录2PCB设计图

19互联

1班唐涛

18

湖南商务职业技术学院毕业设计

附录3作品实物照

19互联1班唐涛

19

19互联1班唐涛

湖南商务职业技术学院毕业设计

附录4程序代码

1.#include<reg52.h>//调用单片机头文件

2.#defineucharunsignedchar//无符号字符型宏定义变量范围

0~255

3.#defineuintunsignedint//无符号整型宏定义变量范围

0~65535

4.

5.//数码管段选定义

012345678

9

6.ucharcodesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x

90,

7.//ABCDEF不显示

8.0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};//断码

9.

10.sbitsmg_w1=P3^3;//数码管位选定义8

11.sbitsmg_w2=P3^4;

12.sbitsmg_w3=P3^5;

13.sbitsmg_w4=P3^6;

14.sbitbeep=P3^7;//蜂鸣器IO口定义

15.

16.

17.ucharflag_start;//开始抢答标志位

18.ucharflag_stop;//抢答违规标志位

19.

20.uchardis_smg[4]={0xc0,0xbf,0xa4,0xb0};//数码管显示缓冲区

21.ucharsmg_i=4;//显示数码管的个位数

22.uchars,s_time=30;//时间

23.ucharflag_num;//号码

24.ucharmenu_1;//菜单设置变量

25.bitflag_200ms=1;//200ms的标志位

26.ucharflag_get;//抢答

27.uchari;

28.

29.

30./***************************数码管位选函数

****************************/

31.voidsmg_we_switch(uchari)

32.{

20

湖南商务职业技术学院毕业设计

33.switch(i)

34.{

35.case0:smg_w1=0;smg_w2=1;smg_w3=1;smg_w4

=1;break;

36.case1:smg_w1=1;smg_w2=0;smg_w3=1;smg_w4

=1;break;

37.case2:smg_w1=1;smg_w2=1;smg_w3=0;smg_w4

=1;break;

38.case3:smg_w1=1;smg_w2=1;smg_w3=1;smg_w4

=0;break;

39.}

40.}

41.

42.

43./********************************************************************

44.*名称:delay_1ms()

45.*功能:延时1ms函数

46.*输入:q

47.*输出:无

48.**********************************************************************

*/

49.voiddelay_1ms(uintq)//延时1ms函数

50.{

51.uinti,j;

52.for(i=0;i<q;i++)

53.for(j=0;j<120;j++);

54.}

55.

56.

57./********************独立按键程序*****************/

58.ucharkey_can;//按键值

59.voidkey()//独立按键程序

60.{

61.staticucharkey_new;

62.key_can=20;

63.P2|=0xff;

64.if((P2&0xff)!=0xff)//按键按下

65.{

66.delay_1ms(1);//按键消抖动

67.if(((P2&0xff)!=0xff)&&(key_new==1))

68.{//确认是按键按下

21

湖南商务职业技术学院毕业设计

69.key_new=0;

70.switch(P2&0xff)

71.{

72.case0xfe:key_can=1;break;//得到按键值

73.case0xfd:key_can=2;break;//得到按键值

74.case0xfb:key_can=3;break;//得到按键值

75.case0xf7:key_can=4;break;//得到按键值

76.case0xef:key_can=5;break;//得到按键值

77.case0xdf:key_can=6;break;//得到按键值

78.case0xbf:key_can=7;break;//得到按键值

79.case0x7f:key_can=8;break;//得到按键值

80.}

81.//dis_smg[0]=smg_du[key_can];//显示按键值

82.}

83.}

84.else

85.key_new=1;

86.}

87.

88.

89./********************独立按键程序*****************/

90.ucharkey_scan;//按键值

91.voidkey_1()//主持人独立按键程序

92.{

93.staticucharkey_new;

94.key_scan=20;

95.P3|=0x03;

96.if((P3&0x03)!=0x03)//按键按下

97.{

98.delay_1ms(1);//按键消抖动

99.if(((P3&0x03)!=0x03)&&(key_new==1))

100.{//确认是按键按下

101.key_new=0;

102.switch(P3&0x03)

103.{

104.case0x01:key_scan=9;break;//得到按键值

105.case0x02:key_scan=10;break;//得到按键值

106.}

107.//dis_smg[0]=smg_du[key_scan];//显示按键值

108.}

109.}

22

湖南商务职业技术学院毕业设计

110.else

111.key_new=1;

112.}

113.

114./******************按键处理函数*****************/

115.voidkey_with()//按键处理函数

116.{

117.if(key_scan==10)//设置按键

118.{

119.menu_1++;

120.if(menu_1==1)

121.{

122.dis_smg[0]=smg_du[s_time%10];//显示设置值

123.dis_smg[1]=smg_du[s_time/10%10];//显示设置值

124.dis_smg[2]=0xbf;

125.dis_smg[3]=smg_du[10];//显示A

126.}

127.if(menu_1>1)

128.menu_1=0;

129.}

130.if(key_scan==9)//开始抢答键

131.{

132.flag_start=1;

133.for(i=0;i<2;i++)

134.{

135.beep=~beep;

136.delay_1ms(20);

137.}

138.}

139.if(key_can<9)

140.if(menu_1==0)

141.{

142.if(flag_get==0)//没有抢答

143.{

144.if(key_can==1)

145.flag_num=1;//1号选手

146.if(key_can==2)

147.flag_num=2;//2号选手

148.if(key_can==3)

149.flag_num=3;//3号选手

150.if(key_can==4)

23

湖南商务职业技术学院毕业设计

151.flag_num=4;//4号选手

152.if(key_can==5)

153.flag_num=5;//5号选手

154.if(key_can==6)

155.flag_num=6;//6号选手

156.if(key_can==7)

157.flag_num=7;//7号选手

158.if(key_can==8)

159.flag_num=8;//8号选手

160.}

161.if(flag_start==1)//开始抢答

162.{

163.flag_stop=0;

164.flag_get=1;//已经抢答

165.}

166.else

167.{

168.flag_stop=1;//违规了

169.}

170.}

171.if(menu_1==1)

172.{

173.if(key_can==8)//加键

174.{

175.s_time++;//设置倒计时加1

176.if(s_time>=99)

177.s_time=99;

178.dis_smg[0]=smg_du[s_time%10];//显示设置值

179.dis_smg[1]=smg_du[s_time/10%10];//显示设置值

180.}

181.if(key_can==7)

182.{

183.if(s_time>3)

184.s_time--;//设置倒计时减1

185.dis_smg[0]=smg_du[s_time%10];//显示设置值

186.dis_smg[1]=smg_du[s_time/10%10];//显示设置值

187.}

188.}

189.}

190.

191./******************倒计时处理*****************/

24

湖南商务职业技术学院毕业设计

192.voiddjs_dis()//倒计时处理

193.{

194.staticucharvalue;

195.if((flag_start==1)&&(flag_stop==0))

196.{

197.value++;

198.if(value>=5)//1s

199.{

2

温馨提示

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

评论

0/150

提交评论