ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:89.08KB ,
资源ID:21297185      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21297185.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(#51单片机三路抢答器Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

#51单片机三路抢答器Word文档下载推荐.docx

1、采用宏晶公司的STC89C52作为系统控制器的CPU方案。原理框图如图1所示:图1 原理方框图2系统的主要功能本系统是借用单片机采用模块化设计的抢答器,包括3路抢答按钮、开始按钮、复位按钮,指示灯显示,倒计时显示部分。用中断0和中断1的控制按钮做复位和开始控制。主持人按键开始后,选手开始抢答为有效,相应成功指示灯亮,并开始倒时,回答问题的时间限定为10秒,满时后系统计时自动复位及主控复位。 3抢答器的硬件设计31 STC89C52简介STC89C52引脚图如图2所示:图2 STC89C52引脚图主要性能: 和MCS-51单片机产品兼容8K字节在系统可编程Flash存储器 1000次擦写周期 全

2、静态操作:0Hz33Hz 三级加密程序存储器 32个可编程I/O口线 三个16位定时器/计数器 八个中断源 全双工UART串行通道 低功耗空闲和掉电模式 掉电后中断可唤醒 看门狗定时器 双数据指针 掉电标识符 功能特性描述:STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用宏晶高密度非易失性存储器技术制造,和工业80C51 产品指令和引脚完全兼容。 片上Flash允许程序存储器在系统可编程, 亦适于常规编器。 在单芯片上,拥有灵巧的8位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制使用系统提供高灵活、超有效的解决方案

3、。STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结。VCC : 电源 GND: 地 P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存

4、储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作 为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。在flash编

5、程和校验时,P1口接收低8位地址字节。P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用) P1.7 SCK(在系统编程用) P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行M

6、OVX DPTR)时,P2 口送出高八位地址。在这种使用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。 P3口亦作为STC89S52特 殊功能(第二功能)使用,。在flash编程和校验时,P3口也接收一些控制信号。P3.0 RXD(串行输入) P3.1 TXD(串行输出) P

7、3.2 INT0(外部中断0) P3.3 INT0(外部中断0) P3.4 T0(定时器0外部输入) P3.5 T1(定时器1外部输入) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器写选通) RST: 复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作

8、编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。 如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位 (地址为8EH的SFR的第0位) 的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号 (PSEN) 是外部程序存储器选通信号。 当STC89C52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部

9、数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。3、2 LED灯 LED灯示意图如图3所示:图3 LED灯示意图单片机的P1.0P1.7分别接到D4-D11这8个LED灯。33 8255接口芯片 单片机系统里常用的82551芯片是一个典型的可编程通用并行接口芯片,用来扩展单片机的端口,它具有3个8位的并行口,有

10、三种工作方式,可作为单片机和各种外部设备连接的接口电路。 8255的引脚图如图4所示。图4 8255的引脚图8255引脚功能说明:RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 PB0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。 PC0PC7:端口C输入输出线, 一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一

11、个4位的锁存器,分别和端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。 CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255和CPU进行通讯。RD:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。WR:写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。D0D7:三态双向数据总线,8255和CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口

12、和控制寄存器。 当A0=0,A1=0时,PA口被选择; 当A0=0,A1=1时,PB口被选择; 当A0=1,A1=0时,PC口被选择; 当A0=1.A1=1时,控制寄存器被选择。在本次设计中,8255芯片用来扩展系统的外部接口,将8255的PA、PB、PC口给数码管、键盘使用。34 数码管显示模块数码管原理图如图5所示:图5 数码管原理图在本次设计中,数码管的8段是由芯片8255的PB口控制亮灭,每个数码管的公共脚分别由8255的PA0-PA5经三极管扩流后进行控制,且数码管是共阳极的。当公共脚接上电源正极,笔画脚通过一个220欧姆电阻接负极,对应的笔画就会点亮。 要在某位数码管上显示一个数字

13、,首先把待显示数字的显示码送给8255的PB口,接着选中要显示的位。35 按键模块 按键示意图如图6所示:图6 按键示意图在单片机系统中键盘中按钮数量较多时,为了减少I/O 口的占用,常常将按钮排列成矩阵形式,在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按钮加以连接。这样,一个端口(如P1口)就能组成4*4=16个按钮,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就能组成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。 矩阵式键盘的按钮识别办法确定矩阵式键盘上何键被按下,介绍

14、一种“行扫描法”。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按钮识别办法。 判断键盘中有无键按下将全部列线置高电平,然后检测行线的状态。只要有一行的电平为高,则表示键盘中有键被按下,而且闭合的键位于高电平线和4根列线相交叉的4个按钮之中。若所有行线均为低电平,则键盘中无键按下。 判断闭合键所在的位置:在确认有键按下后,即可进入确定具体闭合键的过程。其办法是:将全部列线置为高电平,在确定某根行线位置为高电平后,再逐列对列线置高再检测先前返回高电平的行线的电平状态。若此行返回为高,则该列线和返为高电平的行线交叉处的按钮就是闭合的按钮。本次设计虽只用到其中三个按键但考虑到以后对系统升级,所

15、以采用了矩阵式键盘。36 外部中断0和外部中断1外部中断0和外部中断1示意图如图7所示:图7 外部中断0和外部中断1示意图在单片机上有两个引脚,名称为INT0、INT1,也就是P3.2、P3.3这两个引脚。在单片机内部的TCON寄存器中有四位是和外中断有关的。 IT0: INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。IT1、IE1的用途和IT0、IE0相同。按键0接单片机P32脚,按键1接单片

16、机的P33脚。本次设计用到了外中断1和外中断0,需接上跳帽W1和W2。4抢答器的软件设计41 主程序流程及分析抢答器的基本工作原理:在抢答竞赛或呼叫时,有多个信号同时或不同时送入主电路中,抢答器内部的寄存器工作,并识别、记录第一个号码,同时内部的定时器开始工作,记录有关时间并产生超时信号。在整个抢答器工作过程中,显示电路还要根据现场的实际情况向外电路输出相应信号。抢答器的工作流程分为:系统复位、正常流程、违例流程等几部分,如图8所示,下面予以介绍。1、主持人按复位键,复位指示灯亮,进入准备状态,主持人出题。3、主持人按开始键,进入抢答部分,有人抢答就开始回答倒计时,抢答人在此限定时间内做出回答

17、,计时完毕后停止做答并返回复位状态。无人抢答则主持人根据实际情况做出处理后可进入下一轮抢答。4、如果主持人未按开始键,而有人按了抢答按键,犯规抢答,相应犯规灯亮。主持人根据实际情况做出处理后可进入下一轮抢答。图8 工作流程图42 总程序模块 在本次设计中,总程序可分为主程序部分,显示部分,延时部分,键盘部分,计时部分,定时器工作模式设定及初始化部分,中断程序部分。 主程序:main() unsigned char flag=0; light=0xc0;Timer1_Init(); while(1) GInt_Init(); P1=light; display(6,second); if(sec

18、ond=0) second=0x09; TR1=0; light=0x7f; flag=keyboard(); if(light=0x3f) switch(flag) case 1: light= 0xfd,TR1=1; break; case 2: light= 0xf7, TR1=1 ; case 3:light=0xdf, TR1=1; default : light =0x3f; if(light=0x7f) switch(flag) case 1: light=0xfe;light=0xfb;light= 0xef; default : light =0x7f;打开中断及相应的设定:

19、 void GInt_Init(void) EA = 1; EX0 = 1; IT0 = 1; EX1= 1; IT1 = 1; ET1=1; 外中断0: void ISR_Ex0(void) interrupt 0 light=0x7f;外中断1:1void ISR_Ex1(void) interrupt 2 light&=0xbf; 定时器工作模式设定及初始化:void Timer1_Init(void) TMOD=0x10; TH1=(65535-50000 )/256; TL1=(65535-50000)%256; 1秒时间的设定: void ISR_Timer1(void) inte

20、rrupt 3 Timer_Count+;if(Timer_Count = 20) Timer_Count = 0; second-; Timer1_Init();延时部分:void delay(unsigned int x) unsigned char i,j,k; while(x-) for(i=0;i=5;i+) for(j=0;j=10;j+) ;显示部分:#includereg51.h#include ABSACC.H #define a8255_PA XBYTE0xD1FF #define a8255_PB XBYTE0xD2FF #define a8255_PC XBYTE0xD

21、5FF #define a8255_CON XBYTE0xD7FF unsigned char const num_table16= 0xA0, /*0*/ 0xBB, /*1*/ 0x62, /*2*/ 0x2A, /*3 */ 0x39, /*4*/ 0x2C, /*5 */ 0x24, /*6*/ 0xBA, /*7*/ 0x20, /*8*/ 0x28, /*9 */ 0x30, /*A*/ 0x25, /*B*/ 0xE4, /*C*/ 0x23, /*D*/ 0x64, /*E*/ 0x74, /*F */ ; void display(unsigned char place, u

22、nsigned char number) a8255_CON=0x89; a8255_PA =0xff; a8255_PB=0xff; a8255_PA=(0x01(place-1); a8255_PB=num_tablenumber; 键盘部分:unsigned char keyboard() unsigned char PC_data; unsigned char j; unsigned char y=0; a8255_CON=0x89; a8255_PA=0xf1; a8255_PB=0xff; delay(1); PC_data=a8255_PC; for(j = 0;4; if(PC

23、_data&(1j) = (1j) y= j+1; return(y) ;完整总程序见附录。5 调试结果及分析本设计主要是在编写的程序编译通过后,用下载软件将编写的程序下载到实验开发板上,验证结果是否满足设计要求。主要通过按键部分进行控制,通过数码管和LED灯部分进行观察。经验证,在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效,相应犯规灯亮;主持人按键开始后,选手开始抢答为有效,相应成功指示灯亮,并开始倒时,回答问题的时间限定为10秒,满时后系统计时自动复位及主控复位,满足设计要求。参考文献1张鑫编著.单片机原理及使用M .北京:电子工业出版社,2005.8.105136.2陈家骏

24、,郑滔主编.程序设计教程M .北京:机械工业出版社,2004.8.4192.3 余文俊主编.8051 C语言实习M . 北京:中国水利水电出版社,2002.10.5089. 4 孙育才编著.新型AT89S52系列单片机及其使用M .北京:清华大学出版社,2005.5.163.附录一:总体原理图总体原理图如图9所示:图9 总体硬件连接原理图图中U1为单片机STC89C52,U2为芯片8255,单片机的P1.0P1.7分别接到D4-D11这8个LED灯。复位按键和开始按键分别接到单片机的P3.2、P3.3脚,单片机的P0.0-P0.7脚接8255芯片D0-D7脚,8255的PA0-PA5分别接6个

25、数码管的位选 ,同时PA0-PA3接键盘的四列,PC3-PC0接键盘的四行,PB0接数码管引脚11, PB1接数码管引脚10, PB2接数码管引脚7, PB3接数码管引脚1, PB4接数码管引脚2, PB5接数码管引脚3,PB6接数码管引脚4, PB7接数码管引脚5。附录二:总程序 /包括一个51标准内核的头文件 #include /库函数 #define a8255_PA XBYTE0xD1FF /*PA口地址*/ #define a8255_PB XBYTE0xD2FF /*PB口地址*/ #define a8255_PC XBYTE0xD5FF /*PC口地址*/ #define a82

26、55_CON XBYTE0xD7FF /*控制字地址*/ unsigned char Timer_Count=0; /定义变量 unsigned char second=9; unsigned char light; unsigned char const num_table16= 0x74, /*F */ ;void Timer1_Init(void); /函数声明void GInt_Init(void);void delay (unsigned int x) ;void display (unsigned char place, unsigned char number) ;unsigned char keyboard(); main() / 主程序 Timer1_Init();定时器工作模式设定及初始化 while(1) /主程序循环 /函数调用(打开中断及相应的设定)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1