C51单片机8路抢答器实训报告Word文件下载.docx
- 文档编号:21746925
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:24
- 大小:847.74KB
C51单片机8路抢答器实训报告Word文件下载.docx
《C51单片机8路抢答器实训报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《C51单片机8路抢答器实训报告Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
1)制作一个8人抢答器,以开关中的某个开关的按下(闭合)作为抢答按键。
2)无人抢答时,8只数码管轮流循环显示1~8(跑马),谁先抢答,数码管停止跑马,8个数码管同时亮谁的编号,并用蜂鸣器发提示音;
其后再有人按键,系统不予响应,直到复位键按下,开始下一轮抢答。
3)主持人端有一个复位键,可重新开始抢答;
有一个答案正确的按键,和一个答案错误的按键,按下时有不同的提示音;
要想实现8路抢答器,首先要清楚抢答器的功能。
需要设置多少个功能键?
功能按键通过哪个I/O口控制?
对于此系统,我们第一步应该做什么,先完成哪个部分?
1.2本系统涉及的知识点
本系统涉及到的知识点有:
1.按键的处理。
2.数码管的动态静态显示。
2系统硬件设计
2.1模块图
2.2部分模块电路图
1.4*3矩阵键盘,本系统中只用到3个功能键,故令P1^4=0控制列线,P1^1,P1^2,P^3分别为横线,不需要做扫描。
分别控制S1,S5,S9.
2.8路独立按键,为本系统的8路抢答按键。
通过P3口输入控制。
3.蜂鸣器,接在P1^5.
3系统软件设计
延时函数模块代码如下:
VoidmDelay(unsignedintDelay){
unsignedinti;
for(;
Delay>
0;
Delay--){
for(i=0;
i<
124;
i++){
;
}
}
}
主程序函数模块,代码:
#include<
reg51.h>
sbitP14=P1^4;
sbitRight=P1^1;
sbitFalse=P1^2;
sbitP13=P1^3;
sbitBeep=P1^5;
unsignedchartable[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
unsignedcharwei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};
voidmain()
{
inti,t;
P14=0;
//ap1:
P3=0xff;
while
(1)
{
8;
i++)
{
P2=wei[i];
//从这里开始修改选手编号跑马效果
P0=table[i];
mDelay(150);
if(P3!
=0xff)
{
//r8=P3;
switch(P3){
case0xfe:
{
//for(t=0;
t<
2;
t++)//抢答后选手编号闪烁次数
//{
P2=0xfe;
//按下哪一个按键,则数码管位码送该位。
即3号抢答,调到3号数码管,4号抢答跳到4号数码管
P0=0x06;
mDelay(500);
P0=0x00;
//}
while
(1){
P0=0x06;
P2=0x00;
//此处写蜂鸣器提示音
if(Right==0){
for(t=0;
3;
{
P2=0xfe;
P0=0x06;
mDelay(500);
P0=0x00;
}
Beep=0;
mDelay(150);
Beep=1;
mDelay(500);
}
if(False==0){
P0=0xff;
if(P13==0)
break;
}
break;
}
case0xfd:
P2=0xfd;
P0=0x5b;
P2=0x00;
if(Right==0){
}
//退出switch
case0xfb:
P2=0xfb;
P0=0x4f;
case0xf7:
P2=0xf7;
P0=0x66;
case0xef:
P2=0xef;
P0=0x6d;
case0xdf:
P2=0xdf;
P0=0x7d;
case0xbf:
P2=0xbf;
P0=0x07;
while
(1){
mDelay(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51 单片机 抢答 器实训 报告