基于单片机的多路抢答器设计 下载本文

内容发布更新时间 : 2024/5/18 9:36:31星期一 下面是文章的全部内容请认真阅读。

西安文理学院课程设计报告

图1..AT89S51引脚

AT89S51是一个低功耗,高性能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口被写\时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址\时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入\后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口除了作为普通I/O口,还有第二功能: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0)

第 5 页

西安文理学院课程设计报告 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

第 6 页

西安文理学院课程设计报告 #define uchar unsigned char #define uint unsigne int #define uint unsigned int

uchar code shuzi[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 }; uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void main() { uchar i; while(1)

{ for(i=0;i<8;i++) { P0=shuzi[i]; P2=位[i]; } }

}

这样它就能显示数字了,这是在AT89s51单片机下的程序,P0口还要加一个上拉电阻。

2.2基本电路 2.2.1整体电路

图2.抢答器基本电路图

第 7 页

西安文理学院课程设计报告 2.2.2片机的最小系统

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。 AT89S51单片机的最小系统电路图:

图3.AT89S51最小系统

2.2.3晶振模块

单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。单片机晶振两端有2 个电容,这2 个电容叫晶振的负载电容,分别接在晶振的2 个脚上和对地的电容,一般在几十皮法。它会影响到晶振的振谐频率和输出幅度。晶振的负载电容=[(Cd*Cg)/(Cd+Cg)]+Cic+C。

图4.晶振模块示意图

第 8 页

西安文理学院课程设计报告 2.2.4复位模块

电路由电容、电阻、复位按键组成,如图3.2 所示。AT89C51的复位引脚(RESET) 是第9 脚,当此引脚连接高电平超过2 个。机器周期,即可产生复位的动作。以12MHZ 的时钟脉冲为例,每个时钟脉冲为1uS,两个机器周期为2us,因此,在第9脚上连接一个2US的高电平脉冲,即可产生复位动作。最简单的就是只有一个电阻跟一个电容就可组成一个可靠复位的电路,复杂一点的就加个按键,可以进行手动复位。如图所示

图5.晶振模块示意图

2.2.5数码管显示模块

根据设计,系统包含4个LED数码管,都为八段(a、b、c、d、e、f、g、d p ),数码管分别显示四位参赛选手的分数。该系统采用共阳极数码管,对于阳阴极数码管,其公共端必须接高电平。数码管中选手初始分都为0分,每当主持人控制对应选手加减分时,数码管显示的数字对应发生改变。

图6.数码管显示模块

第 9 页