《八路抢答器设计说明书.doc》由会员分享,可在线阅读,更多相关《八路抢答器设计说明书.doc(9页珍藏版)》请在三一办公上搜索。
1、八路抢答器的设计一、设计要求(1)设计一个智力抢答器,可同时供8名选手或八个代表队参加比赛,他们的编号分别是1,2,3,4,5,6,7,8,各用一个抢答按钮,按钮的编号与选手的编号相对应,分别是S0,S1,S2,S3,S4,S5,S6,S7。(2)节目主持人设置一个控制开关,用来控制系统的复位和抢答开始。(3)抢答器具有数据锁存和显示功能。抢答开始后,若有选手按动抢答按钮,编号立即锁存,并在LED数码管上显示出选手的编号,同时扬声器发出提示声音,此外封锁输入电路,禁止其他选手抢答。优先抢答的选手的编号一直保持到主持人将系统复位为止。二、总体设计思路本次设计采用T0外部中断来实现主持人的控制开关
2、,用P0口输出选手的段码,用P2口来读取按键选手号,用P1口来点亮选手相应的发光二极管。三、硬件设计3.1 原理综述单片机:使用了AT89C51单片机芯片控制电路。显示电路:P0口输出选手段码,P1口点亮相应的发光二极管。按键电路:P32管脚接一个开关来实现主持人的控制开关,通过P2口接的按键来读取选手号。图3.1 硬件框图3.2 元器件清单序号名称型号1单片机AT89C512数码管7SEG-MP*1-CA3上拉电阻RN12204上拉电阻RP12205电阻R18806电阻R22207开关(10个)BUTTON8晶振12M9电容(C1、C2)22pf10电容C31uf11三极管PNP12扬声器B
3、UZZER13发光二极管(8个)LED_BLUE3.3 硬件原理图图3.2 硬件原理图四、软件设计4.1 程序流程图 图4.1 主程序流程图4.2 程序及注释#include/包含头文件REG51.H#define uchar unsigned char#define uint unsigned int /数据类型的宏定义uchar code seg79=0xff,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80;/7段数码管0-8断码uchar act9=0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; /低电平有效的位
4、码uchar num; /宏定义全局变量numbit bdata start; /定义开始按键startsbit bz=P33;/定义P3.3为bz/延时函数*void delay(uint k) uint i,j; for(i=0;ik;i+) for(j=0;j121;j+);/蜂鸣器*void buzzer(void) while(1) bz=bz; delay(10); /外中断0 *void EA_INT0() interrupt 0 /定义函数名为EA_INT0的T0外中断服务函数,中断号为0 uchar in=1; /定义in=1 start=!start; /start取反 i
5、f(start=1) /判断是否开始抢答 while(in) /循环 待添加的隐藏文字内容3 P2=act0; /初始化P2 if(P2!=0xff) /判断有无选手按下 delay(10); /延时确定有选手按下 for(num=1;num9;num+) /判断选手号 if(P2=actnum) /读取选手号 bz=1;in=0;break; /停止循环 else num=0; P3=0xff; bz=0; /* void main(void) /主函数 start=0; /初始化start P0=seg70; /初始化段码 P1=act0; /初始化发光二级管 bz=0; /初始化蜂鸣器
6、EX0=1; /允许外中断T0 IT0=1; /外中断T0设为边沿触发 EA=1; /开启总中断 while(1) /无限循环 P0=seg7num; /P0输出段码 P1=actnum; /点亮相应的二极管五、软硬件调试5.1 软硬件仿真环境设置1)Keil 与Proteus连接连接开始必须在proteus安装目录下VDM51.dll文件复制到Keil安装目录的 C51BIN 目录中,但新版本中没有,所以必须下载安装补丁vdmagdi.exe,则在Keil安装目录的 C51BIN 目录中有文件:VDM51.dll2)修改keil安装目录下 Tools.ini文件用记事本(其它的编辑软件也可以
7、,如Ultra Edit)打开Keil 根目录下的 TOOLS.INI 文件,在C51 栏目下加入TDRV3=BINVDM51.DLL (Proteus VSM Monitor-51 Driver ) ,其中“TDRV3” 中的 “3”要根据实际情况写,不要和原来的重复。3) 打开proteus,画出相应电路。在proteus的debug菜单中选中use remote debug monitor 。在keil中编写MCU的程序。 进入KEIL的project菜单option for target 工程名。在DEBUG选项中右栏上部的下拉菜选中 Proteus VSM Monitor-51 Dr
8、iver。进入seting,如果同一台机IP 名为127.0.0.1,如不是同一台机则填另一 台的IP地址。端口号一定为8000。5.2 调试步骤图5.1 中断初始化图5.2 开始抢答图5.3 有选手抢答图5.4 显示选手号和点亮相应的发光二极管5.3 调试结果图5.5 开始和停止抢答图5.6 显示选手号和点亮相应的发光二极管图5.7 复位六、结束语仿真运行表明基本完成这次设计的要求,进一步还可以采用双色二极管用于抢答过程的指示能够更加清晰。参考文献1周兴华.手把手教你学单片机C程序设计M.北京:北京航空航天大学出版社,2007.2彭伟.单片机C语言程序设计实训100例:基于8051+Proteus仿真M.北京:电子工业出版社,2012.103杨文龙.单片机原理及应用M.西安:西安电子科技大学出版社,2000.4何立民.单片机实验与实践教程(二)M.北京:北京航空航天大学出版社,2001.5王建校,等.51系列单片机及C51程序设计M.北京:科学出版社,2002.