基于单片机的多路抢答器设计说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文理学院机械与材料工程学院
课程设计报告
专业班级测控1502
课程单片机课程设计
题目抢答器的设计
教研室测控技术与仪器
学号 2807150205
学生高宇璠
指导教师森林
2017年9月
摘要
本次的课程设计基于单片机技术原理,以美国ATMEL公司开发的AT89S52芯片作为核心控制器。通过硬件电路的制作及软件程序的编制,设计制作了一种具有复位、校时功能的数字时钟系统。利用七段数码管实现星期、上下午和时间信息并且可以通过蜂鸣器和二极管实现整点提醒功能,用户可通过系统上的按键对时间进行调整,实现实时的时钟显示。本次设计的硬件由主控模块、提示模块以及显示模块构成。复位模块主要由电阻、电容、按键组成;提示模块主要由蜂鸣器、三极管、二极管、排阻组成;显示模块则由七段数码管构成,用于显示提示信息和实时时钟。
关键词:AT89S51;七段数码管; 蜂鸣器
目录
摘要 (1)
1.任务与要求 (3)
2.电路设计 (4)
2.2基本电路 (7)
2.2.1整体电路 (7)
2.2.2片机的最小系统 (7)
2.2.3晶振模块 (8)
2.2.4复位模块 (8)
2.2.5数码管显示模块 (9)
2.2.7发声模块 (10)
4. 总结与感悟 (11)
附录 0
运行程序 0
1.任务与要求
设计任务:
以51单片机为核心,设计一个供4组选手比赛的抢答器。每组设置一个抢答按钮,按钮的编号与选手的编号对应。主持人控制开始、复位和分数按键。初始状态,每组成绩均为0分,倒计时和组号显示全零。
抢答开始,主持人按下开始键,系统显示15秒倒计时,绿灯亮。
如果15秒有选手抢答,则所有抢答开关被锁定,系统显示相应的组号,蜂鸣器响1声。此时,主持人按下答题键,选手开始答题,系统开始30秒倒计时显示。时间到,红灯亮1秒,蜂鸣器响1秒。答题结束,主持人将选手回答情况进行加分或减分,每按一次“+”或“—”对应1分;每题分值改变围为-3~3分。
如果15秒没有选手抢答,则所有抢答开关都将无效,此时红灯闪烁3秒,蜂鸣器间断响3秒。
比赛结束,主持人按下复位键,系统将回到初始状态。
设计要求:
1.完成系统的硬件电路设计与软件设计;
2.采用C51语言编程;
3.采用Proteus、Keil C等软件实现系统的仿真调试;
4.设计报告要求思路清晰,结构合理,语言流畅,书写格式符合要求。5.能条理清晰地讲述每个设计环节,完成设计答辩。2.单片机的设计方案
2.电路设计
2.1 电路元件清单及部分元件简介
2.1.1电路基本元件
2.1.2部分主要元器件简介
AT89S51芯片
AT89s51管脚图
图1..AT89S51引脚
A T89S51是一个低功耗,高性能CMOS 8位单片机,片含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片集成了通用8位中央处理器和ISP Flash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。
管脚说明
VCC:电源电压输入端。
GND:电源地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写"1"时,其管脚被部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址"1"时,它利用部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入"1"后,它们被部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口除了作为普通I/O口,还有第二功能:
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
P3.3 /INT1(外部中断1)
P3.4 T0(T0定时器的外部计数输入)
P3.5 T1(T1定时器的外部计数输入)
P3.6 /WR(外部数据存储器的写选通)
P3.7 /RD(外部数据存储器的读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口时实际上并不从外部读入数据,而是把端口锁存器的容读入到部总线,经过某种运算或变换后再写回到端口锁存器。只有读端口时才真正地把外部的数据读入到部总线。89C51的P0、P1、P2、P3口作为输入时都是准双向口。除了P1口外P0、P2、P3口都还有其他的功能。
RST:复位输入端,高电平有效。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:地址锁存允许/编程脉冲信号端。当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:外部程序存储器的选通信号,低电平有效。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VPP:外部程序存储器访问允许。当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有部程序存储器。注意加密方式1时,/EA将部锁定为RESET;当/EA端保持高电平时,此间部程序存储器。在FLASH编程期间,此引脚也用于施加12V 编程电源(VPP)。
XTAL1:片振荡器反相放大器和时钟发生器的输入端。
XTAL2:片振荡器反相放大器的输出端。
7SEG-MPX8-CA-BULL
7seg-mpx8-ca是共阳极数码管显示器,它左下侧的abcdefg dp是LED数码管显示器的I/O 口,是段选信号,右下侧的12345678是它的位选信号,就是从左到右分别是第一位到第八位,段选信号与位选信号分别接到单片机的不同输出口,例如段选信号可以接到P0口,位选信号可以接到P2口,共阳极的字形显示代码为:uchar cod
shuzi[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 }.位选信号代码为:uchar
wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};当选中第一位时,段选信号就执行从0到9的显示。如果想显示数字的话,就要通过程序来执行:
#include
#include
#define uchar unsigned char
#define uint unsigne int