1、三人抢答器模拟实验报告一 目的与要求1 目的(1) 培养学生综合利用 MCS51 单片机的软硬件知识进行程序设计的能力,解决一定实际问题。(2) 进一步加深对 MCS51 单片机的内部结构和程序设计方法的理解。(3) 提高学生建立程序文档,归纳总结的能力。2 基本要求(1) 要求用 MCS51 单片机知识完成程序的设计。(2) 源代码程序要求必要的注释。3 创新要求在基本要求达到后,可以进行创新设计,更加完善程序功能。二 系统总体设计基于 MCS51 单片机的智能抢答器的设计,主要实现以下几种功能:(1) 当主持人按下控制按钮时,抢答开始,蜂鸣器响起,提醒选手可以开始抢答。(2) 从开始抢答起
2、,自动计时 5 秒抢答时间,在此期间如有选手要回答问题,那么可以按下自己的抢答开关,若抢到,与之相对应的 LED 灯亮起。(3) 如在规定抢答时间内,无人抢答问题,那么此题作废,主持人可按键进行下一题抢答。三 硬件系统设计该抢答器的设计是基于 MCS51 单片机的,使用到的硬件主要有 8051 的 P1 和 P3 口,LED 灯,外部中断 INT0 和定时/计数器 01.使用的三个开关 SW1、SW2、SW3 分别代表的是三名选手的控制按键,选用 P1 口中的P1.0、P1.1、P1.2 标是三名选手。2.使用的三盏 LED 灯表示相应的选手的指示灯,亮起即表示该名选手抢得该题。3.外部中断
3、0 与 P3.2 相连,功能为主持人按键,按下此开关抢答即开始。4.P3.3 与蜂鸣器相连。四 程序流程图五 程序ORG 8000H LJMP MAINORG 8003HLJMP INTORG 800BHLJMP TOSMAIN: SETB EA SETB EX0SETB IT0 ;开中断MOV TMOD,#01H ;设置 T/C0WAIT: JB P3.5,STOP ;判别抢答位JNB P3.4,WAITSETB TR0 ;开始计时SETB ET0MOV R7, #00HLoop: MOV R6, #15HDJNZ R6, $DJNZ R7, LoopCPL P3.3 ;蜂鸣器响起JNB P
4、1.3,L1JNB P1.4,L2JNB P1.5,L3LJMP WAITL1: CPL P1.0CLR P3.4CLR ET0CLR TR0LJMP WAIT L2: CPL P1.1CLR P3.4CLR ET0CLR TR0LJMP WAITL3: CPL P1.2CLR P3.4CLR ET0CLR TR0LJMP WAITTOS: MOV TL0,#00HMOV TH0,#4CH ;T0 中断为50msINC R0MOV A,R0CJNE A,#100,NEXT ;抢答时间设置为50msMOV R0,#00HSETB P3.5NEXT: RETISTOP: CLR TR0CLR ET
5、0SETB P3.6SETB P1.0SETB P1.1SETB P1.2MOV R0,#00HLJMP WAIT INT: CPL P3.5SETB P3.4 RETIEND六 调试程序的方法在调试的过程中,可采用单步执行的方法调试,在单步执行的过程中可穿插使用运行至光标处,然后加入中断,执行中断任务。七 所设计问题的不足和改进方案由于时间和设备资源限制,本设计内容较为简单,而且功能比较单一,且选手抢答后开关不能自己复位,需靠选手自行将开关拨回。 (后附改进版)八 收获体会通过单片机的设计实习,我还是学到了很多的东西。在平时上课没有注意到的地方或是还不太明白的知识点,我都通过设计当中自己查相关资料和询问其他同学解决掉了。设计当中还学到了一些相关的课外知识。设计实习提高了我的思能力,动手能力,还有团队合作的能力,以上这些都是在课上体会不到而在以后的工作当中相当重要的。这次单片机的设计实习,我虽然参考了很多的资料,但由于知识有限,经验不足,实验仪器的限制,再加上时间并不是十分充裕,做的并不是十全十美。虽然程序能够运行,但程序没有考虑到所有可能的情况,程序本身也存在一些漏洞。希望王老师能够指教。2007-12-30