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

下载本文档

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

文档简介

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

2、手按按钮抢答时,锁存相应的编号,并且优先抢答选手的编号一直保持显示在显示器上,直到主持人将系统复位为止。参赛选手在设 定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答 的时间,并保持到主持人将系统复位为止。复位后参赛队员可继续抢答。如果定时时间已到,无人抢答,本次抢答无效,系统报警红色LED灯亮,并禁止抢答,定时显示器上显示00。三、实验程序流程图:主程序;非法抢答序;抢答时间调整程序;回答时间调整程序;倒计时程序;正常抢答处理程序;犯规处理程序;显示及发声程序。主流程图如下图所示子程序初松化-Y*1F调蔡抢屮芥法抢4 答处理正常A 抢答显示a 犯规回答4时间四、实验

3、结果分析五、心得体会六、程序清单#in elude #defi ne uchar un sig ned char#defi ne uint un sig ned intsbit wela_a=P3A0;sbit wela 1=卩3人1;sbit wela2=P3A7;sbit rest=P3A5;sbit host=P3A6;sbit led 仁P3A4;绿灯sbit led2=P3A3;红灯sbit led3=P3A2;黄灯sbit key1=P1A0;sbit key2=P1Al;sbit key3=P1A2;sbit key4=P1A3;sbit key5=P1A4;sbit key6=

4、P1A5;sbit key7=P1A6;sbit key8=P1A7;uchar x,q,d,s,ge,tO,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 keysca n();void mai n()in it();display(s,ge,a);w

5、hile(1)if(host=0) / 主持人控制开关delay(5);if(host=0)flag=1;start=1;dela y(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=O)选手按下,倒计10秒开始led3=0;wela1=0;wela2=0;delay(1);TRO=O;TR1=1;display(s,ge,a);delay(1);if(start=1)/主

6、持人按下,倒计时 30秒led 仁0;wela1=0;wela2=0;delay(1);TR0=1;TR1=0;display(s,ge,a);delay(1);keysca n();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;TR0=0;TR1=0;void display(uchar s,u

7、char ge,uchara)/*数码管动态扫描*/wela1=1;P0=tablege;delay(5);wela2=1;PO=tables;delay(5);wela_a=O;P2=tablea;delay(5);void keyscan()/*按键扫描函数*/if(key1=O)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=0)a=2;P2=tablea;start=0; delay(5); while(!key2);if(key3

8、=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=0)delay(5);if(key6=0)a=6;P2=tablea; start=0;delay(5); while(!key6); if(ke

9、y7=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; i0;i-)for(j=110;j0;j-);void time0() interrupt 1/*定时器 0*/TH0=(65536-50000)/256;TL0=(65536-50000)%256;s=q/10;ge=q%1

10、0;t0+;定时器1*/最后,给朋友们一点点提示,本程序有一 点点小问题,有个中断没关,当主持人复位 之后,后面的选手回答问题的时间就没有10秒了(可怜啊)。但还是可以运行的,要求 不高的朋友可借鉴一哈。if(t0=20)to=o;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() in terrupt 3/*TH1=(65536-50000)/256;TL1=(65536-50000)%256;s=d/10;ge=d%10;t1+;t仁0;

温馨提示

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

评论

0/150

提交评论