单片机实验8路抢答器C语言版_第1页
单片机实验8路抢答器C语言版_第2页
单片机实验8路抢答器C语言版_第3页
单片机实验8路抢答器C语言版_第4页
单片机实验8路抢答器C语言版_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机综合实验报告题 目: 8路抢答器实验 班 级: 姓 名: 学 号: 指导老师: 时 间: 一、实验内容:以单片机为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮S0S7表示。本实验有Protues软件仿真。分别设置一个抢答控制开关S1和复位开关S2,由主持人控制。抢答器具有锁存与显示功能。即选手按按钮抢答时,锁存相应的编号,并且优先抢答选手的编号一直保持显示在显示器上,直到主持人将系统复位为止。抢答器具有定时抢答功能,且一次抢答的时间由主持人设定为30秒。当主持人启动“开始”键后,定时器进行减计时,同时绿色LED灯亮。二、实验电路及功能说明分别设置一个抢答控

2、制开关S1和复位开关S2,由主持人控制。抢答器具有锁存与显示功能。即选手按按钮抢答时,锁存相应的编号,并且优先抢答选手的编号一直保持显示在显示器上,直到主持人将系统复位为止。参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统复位为止。复位后参赛队员可继续抢答。如果定时时间已到,无人抢答,本次抢答无效,系统报警红色LED灯亮,并禁止抢答,定时显示器上显示00。 三、实验程序流程图: 主程序;非法抢答序;抢答时间调整程序;回答时间调整程序;倒计时程序;正常抢答处理程序;犯规处理程序;显示及发声程序。主流程图如下图所示子程序四、实验结果

3、分析五、心得体会6、 程序清单#include <reg51.h>#define uchar unsigned char#define uint unsigned intsbit wela_a=P30;sbit wela1=P31;sbit wela2=P37;sbit rest=P35;sbit host=P36;sbit led1=P34;/绿灯sbit led2=P33;/红灯sbit led3=P32;/黄灯sbit key1=P10;sbit key2=P11;sbit key3=P12;sbit key4=P13;sbit key5=P14;sbit key6=P15;

4、sbit key7=P16;sbit key8=P17;uchar x,q,d,s,ge,t0,t1,start,flag;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void init();/*初始函数申明*/void display(uchar s,uchar ge,uchar a);void delay(uint z);void keyscan();void main() init(); display(s,ge,a); while(1)

5、if(host=0)/主持人控制开关 delay(5); if(host=0) flag=1; start=1; delay(5); 延时 while(!host); 检测开关 if(rest=0)/复位 delay(5); if(rest=0) q=30; led2=1; led3=1; x=0;delay(5);start=1; delay(5); while(!rest); if(flag=1) if(start=0)/选手按下,倒计10秒开始 led3=0; wela1=0; wela2=0;delay(1);TR0=0;TR1=1; display(s,ge,a); delay(1)

6、; if(start=1)/主持人按下,倒计时30秒 led1=0;wela1=0;wela2=0; delay(1);TR0=1; TR1=0; display(s,ge,a);delay(1);keyscan(); void init()/*初始化*/ t0=0; t1=0; flag=0; q=30; d=10; wela_a=0; a=0; TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; ET0=1; ET1=1; T

7、R0=0; TR1=0;void display(uchar s,uchar ge,uchar a)/*数码管动态扫描*/ wela1=1; P0=tablege; delay(5); wela2=1; P0=tables; delay(5); wela_a=0; P2=tablea; delay(5);void keyscan()/*按键扫描函数*/ if(key1=0) delay(5);if(key1=0) a=1; P2=tablea; start=0; TR1=1; TR0=0; delay(5); while(!key1); if(key2=0) delay(5);if(key2=

8、0) a=2; P2=tablea; start=0; delay(5); while(!key2); if(key3=0) delay(5);if(key3=0) a=3; P2=tablea; start=0; delay(5); while(!key3); if(key4=0) delay(5);if(key4=0) a=4; P2=tablea; start=0; delay(5); while(!key4); if(key5=0) delay(5);if(key5=0) a=5; P2=tablea; start=0; delay(5); while(!key5); if(key6=

9、0) delay(5);if(key6=0) a=6; P2=tablea; start=0; delay(5); while(!key6); if(key7=0) delay(5);if(key7=0) a=7; P2=tablea; start=0; delay(5); while(!key7); if(key8=0) delay(5);if(key8=0) a=8; P2=tablea; start=0; delay(5); while(!key8); void delay(uint z)/*延时函数*/ uint i,j; for(i=z;i>0;i-) for(j=110;j&

10、gt;0;j-);void time0() interrupt 1/*定时器0*/ TH0=(65536-50000)/256; TL0=(65536-50000)%256; s=q/10; ge=q%10; t0+; if(t0=20) t0=0; q-; s=q/10; ge=q%10; if(q=0) while(1) q=0; a=0; led1=1; led2=0; wela1=0; wela2=0; delay(1); display(s,ge,a); void time1() interrupt 3/*定时器1*/ TH1=(65536-50000)/256; TL1=(65536-50000)%256; s=d/10; ge=d%10; t1+; if(t1=20) t1=0; d-; s=d/10; ge=d%10; if(d=0) while(1) d=0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论