单片机六路抢答器C语言程序

合集下载

单片机六路抢答器课程设计

单片机六路抢答器课程设计

单片机六路抢答器课程设计
单片机六路抢答器是一种用于教育培训场景的设备,旨在提高学生的抢答能力和思维敏捷性。

在这个课程设计中,我们将使用单片机来实现一个具有六个按钮的抢答器系统。

首先,我们需要准备硬件部分的材料。

一个典型的单片机抢答器系统包括一个单片机主控板、六个按钮、一个显示器以及一些连接线材。

在这里,我们选择使用常见的Arduino Uno作为单片机主控板,并将六个按钮分别连接到主控板的不同IO口上。

接下来,我们需要编写相应的代码来实现抢答器的功能。

在Arduino 编程环境中,我们可以使用C/C++语言来编写代码。

首先,我们需要初始化IO口和显示器。

然后,我们可以设置一个定时器,用于限制每个学生的抢答时间。

当某个按钮被按下时,我们可以通过判断相应的IO口状态来确定哪个学生抢答成功。

最后,我们将抢答结果显示在显示器上。

除了基本的抢答功能,我们还可以进一步扩展课程设计。

例如,我们可以加入抢答器的计分功能,每次学生抢答成功后,可以在显示器上显示相应的分数。

此外,我们还可以设置难度级别,给不同的学生设置不同的抢答时间限制,以提高学生的竞争性和抢答能力。

在课程设计的过程中,我们可以引入一些有趣的抢答游戏,例如多人对战、团队比赛等,以增加学生的参与度和趣味性。

此外,我们还可以加入音效和灯光效果,使整个抢答过程更加生动有趣。

总之,单片机六路抢答器是一个很好的教育培训工具,可以帮助学生提高抢答能力和思维敏捷性。

通过合理设计课程内容和引入一些有趣的元素,我们可以创造一个富有活力和互动性的课堂氛围,激发学生的学习兴趣和积极性。

六路抢答器源程序

六路抢答器源程序

源程序代码#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned char#define led_seg P0#define led_bit P2 //高四位位选#define JZ_KEY P2 //矩阵扫描Unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0};//共阳段码,0-9unsigned char code rest[]={0xbf,0xbf,0xbf,0xbf};bit action = 0; //允许抢答标志bit key_flag=0;bit qianda_flag=0;bit Rest_flag=0;sbit K7=P1^6; //抢答指示灯sbit buzzer=P3^7; // 蜂鸣器uchar qianda_time=5,dati_time=30; //抢答、答题倒计时uchar qianda_time_m=5,dati_time_m=30;uchar timer0_count = 0;uchar player=0;uchar key=100;uchar GD_player=0;//成功者编号(存储用数组)void K_scan4x4(void);void alert();void show_QD();void show_DT();void dati();void DelayMs(uint Delay){uchar i;for(;Delay>0;Delay--)for(i=0;i<128;i++);}uchar FW_wait(){uchar i;Rest_flag=1;P1=~0xaa;do //等待按键{K_scan4x4();led_bit =~(0x10); led_seg = rest[0]; DelayMs(10);led_bit =~(0x20); led_seg = rest[1]; DelayMs(10);led_bit =~(0x40); led_seg = rest[2]; DelayMs(10);led_bit =~(0x80); led_seg = rest[3]; DelayMs(10);i++;if(i==6) {i=0;P1=~P1;} //闪烁延时DelayMs(30);if(key==0x0a) break;if(key==0x0b) break;if(key!=0x0c){if(action==0&&key_flag==1) {alert();}}}while(key!=0x0c);return (key);}uchar QD_wait(){P1=~(0x02);dati_time=dati_time_m;do //等待启动按键{K_scan4x4();led_bit =~(0x10); led_seg = table[GD_player];DelayMs(10); led_seg=0xff; //led_seg=0xff 消影led_bit =~(0x20); led_seg = rest[1];DelayMs(10); led_seg=0xff;led_bit =~(0x40); led_seg = table[(dati_time/10)];DelayMs(10); led_seg=0xff;led_bit =~(0x80); led_seg = table[(dati_time%10)];DelayMs(10); led_seg=0xff;if(key==0x0d) {key=1;return (key);}}while(key!=0x0c);key=0;return (key);}void show_QD(){qianda_time=qianda_time_m;led_bit =~(0x10); led_seg = rest[0];DelayMs(10); led_seg=0xff;led_bit =~(0x20); led_seg = rest[1];DelayMs(10); led_seg=0xff;led_bit =~(0x40); led_seg = table[(qianda_time/10)];DelayMs(10); led_seg=0xff;led_bit =~(0x80); led_seg = table[(qianda_time%10)];DelayMs(10); led_seg=0xff;}void show_DT(){dati_time=dati_time_m;led_bit =~(0x10); led_seg = table[GD_player];DelayMs(10); led_seg=0xff;led_bit =~(0x20); led_seg = rest[0];DelayMs(10); led_seg=0xff;led_bit =~(0x40); led_seg = table[(dati_time/10)];DelayMs(10); led_seg=0xff;led_bit =~(0x80); led_seg = table[(dati_time%10)];DelayMs(10); led_seg=0xff;}void K_scan4x4(void){char a=0;key_flag=0;JZ_KEY=0x0f;if(JZ_KEY!=0x0f)//读取按键是否按下{DelayMs(10);//延时10ms进行消抖if(JZ_KEY!=0x0f)//再次检测键盘是否按下{key_flag=1;JZ_KEY=0x0f; //读取列值switch(JZ_KEY){case(0X07): player=0; key = player;break;case(0X0b): player=1; key = player;break;case(0X0d): player=2; key = player;break;case(0X0e): player=3; key = player;break;}JZ_KEY=0xf0; //读取行值switch(JZ_KEY){case(0X70): player=player; key = player;break;case(0Xb0): player=player+4; key = player;break;case(0Xd0): player=player+8; key = player;break;case(0Xe0): player=player+12;key = player;break;}while((a<50)&&(JZ_KEY!=0xf0)) { DelayMs(10);a++; } //检测按键松手检测}}}void alert(){uchar i=0;for(i=100;i>0;i--) //i:警报长短{buzzer=0;DelayMs(20); //不同声音buzzer=1;}}void qianda(){qianda_flag=1;qianda_time=qianda_time_m;K7=0;key=100;do{K_scan4x4();show_QD();if(qianda_time == 0) {qianda_time = qianda_time_m; qianda_flag=0; break; } ////抢答倒计时,10s结束DelayMs(10);if((key>4)&&(key<16)) //这里设置路数按错键退出{if(key==0x0d) {qianda_flag=0; break;}else {alert();qianda_flag=0; break;}}} while(!(key<8));if(qianda_flag==0){ qianda_flag=0;} //未抢答成功else{qianda_flag=1; //抢答成功,关闭定时TR0 = 0;K7=1;GD_player=key+1;key=0;action = 0;}}void dati(){dati_time = dati_time_m;player=0;while(player!=0x0d){K_scan4x4();show_DT();if(dati_time == 0) { dati_time = 20; break;}}}void mod_time_q(){uchar flag=0;do{K_scan4x4();if(player==0x0e) { player=0; flag=1; qianda_time_m++; }if(player==0x0f) { player=0; flag=1;qianda_time_m--; }if(flag==0&&key_flag==1) {if(key!=0x0d) {key_flag=0;alert();}}DelayMs(50);show_QD();} while(key!=0x0d);qianda_time=qianda_time_m;dati_time=dati_time_m;}void mod_time_d(){uchar flag=0;do{K_scan4x4();if(player==0x0e) { player=0; flag=1; dati_time_m++; }if(player==0x0f) { player=0; flag=1; dati_time_m--; } if(flag==0&&key_flag==1) {if(key!=0x0d){key_flag=0;alert();} }DelayMs(50);show_DT();} while(key!=0x0d);qianda_time=qianda_time_m;dati_time=dati_time_m;}void main(){TMOD=0x01; //使用定时0,工作方式1,16位定时器TH0=(65536-20000)/256; //定时50msTL0=(65536-20000)%256;EA=1;ET0=1;TR0=0;while(1){FW_wait(); //复位状态等待按键switch(key){case 0x0a: if(Rest_flag==1){key=0;Rest_flag=0;mod_time_q();break;} break;case 0x0b: if(Rest_flag==1){key=0;Rest_flag=0;mod_time_d();break;}break;case 0x0c: key=0;K7=0;DelayMs(10); action=1; TR0=1; qianda();//启动抢答if(qianda_flag==0) {break;} //抢答不成功else QD_wait(); //抢答成功,执行答题等待界面if(key==0) {K7=0; TR0=1; dati(); K7=1;break;}//启动if(key==1) {break;} //复位case 0x0d: if(action==1) {key=0; FW_wait();break;} //抢答复位键if(qianda_flag==1) {key=0;QD_wait();break;}break; //答题复位键}}}void timer0() interrupt 1 //定时时间为1s{TH0=(65536-20000)/256; //定时20msTL0=(65536-20000)%256;timer0_count ++;if(timer0_count == 50){timer0_count = 0;qianda_time--;dati_time--; //答题记时}}。

单片机C语言实现抢答器程序

单片机C语言实现抢答器程序
TEAM_c++; //a队举手次数+1
// }
}
void main()
{
unsigned int n; //用于控制等待时LED显示的形状
SECBOOL=15; //设置定时15s
P1=0xff; //p0口拉高
if(TIME_SWICH15==0){ //如果 15秒 按钮被按下 并且之前没有人举过手 )&&(TEAM_a==0&&TEAM_b==0)
Speed(0); //去抖
if(TIME_SWICH15==0){
D1=LED[3]; //显示1
S1=1; //用2号数码管
BELL=0; //响铃
Speed(3); //延时
BELL=1; //响铃
while(1){
if(wrong==0){ //允许答题按钮被按下
void Speed(unsigned char n){ //延时函数
unsigned char i,j,k;
for(k=0;k<n;k++)
for(i=0;i<255;i++)
for(j=0;j<255;j++);
}
void Speed1(){ //延时函数2
Speed(0); //去抖动
if(wrong==0){
KG=1; //开关被按下
break;
}
}
else
continue;
break;
}
TEAM_3=1;
BOOL=0; //
sbit TIME_SWICH30=P2^2; //连接(30秒 切换)按钮 (主持人控制)

六路抢答器课程设计(附程序)

六路抢答器课程设计(附程序)

北京科技大学本科生课程设计说明书题目:六路抢答器学院:专业:姓名:学号:指导教师签字:摘要随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的作用。

各种技术都离不开计算机,计算机已经在人们生活的各个方面普及了。

本课程设计是微机原理及接口技术的简单应用。

运用所学的微机原理和接口技术知识完成六路抢答器。

通过硬件与软件的结合,用我们刚刚学过的汇编语言编写程序模拟分析了六路抢答器出现的各种情况。

该抢答器以主持人为中心,操作抢答器的开始与复位,选手们可以根据主持人的提示进行抢答,该抢答器基本能满足现在社会抢答的需要,设计简单,成本低,适合小型抢答场合。

关键词:抢答器硬件电路软件编程模拟系统前言随着人们生活水平的提高,微机已经成为人们生活中重要的部分,掌握微机原理是我们信息类专业的必备知识。

8086/8088CPU是基础且广泛应用的处理器,它由执行单元和总线接口部分组成。

本说明书是包括课程设计的要求、汇编语言程序以及相关的硬件设计等内容组成。

根据汇编语言的优点,运用汇编语言的来编写程序,使程序更加便于阅读和理解。

本说明书是根据本人课堂上所学的知识以及参考相关文献的基础上编写的。

通过这次的编写,使我对微机原理和各种软硬件系统的认识变得更加深刻,打下实践的基础。

全书共分为4章,第1章为课题的来源,为本说明书的导论,基本概括来介绍了本设计题目的基本要求。

第2章为总体的设计思路,系统的介绍了本课题的具体如何实现。

第3章为硬件设计,该部分主要介绍了所需要的硬件和硬件的连接。

第4章为软件设计,该部分主要介绍了设计流程和具体实现的程序代码。

本说明书的编写得到了许多同学的关心和帮助,正是由于他们的指导、帮助和大力支持,才使本说明书得以顺利的完成。

由于本人水平有限,说明书中难免存在不足与疏漏之处,恳请老师不吝指正。

目录摘要 (2)引言 (3)课程设计任务书 (5)1[课题来源] (6)1.1[需求分析] (6)1.1.1[课题来源的意义] (6)1.1.2[设计内容] (6)1.1.3[设计目的] (6)1.1.4[系统功能] (6)2[总体设计思路] (8)2.1[设计思路] (8)2.2[红黄绿灯的表示] (9)3[硬件设计] (10)3.1[芯片8255] (10)3.1.1[芯片8255,8253,8259的引脚] (10)3.1.2[芯片8255,8253,8259的工作方式] (11)3.2[硬件连接] (12)3.2.1[硬件连接图] (12)3.2.2[其他配置] (14)4[软件设计] (15)4.1[程序流程图] (15)4.2[程序设计] (16)小结 (23)参考文献 (24)课程设计任务书一.设计内容设计一个具有6路抢答的抢答器,启动计算机,计算机自动为系统各芯片进行初始化,抢答器开始工作。

单片机课程设计——抢答器源程序

单片机课程设计——抢答器源程序

READY EQU 64H;抢答开始标志位RING EQU 56H;铃声标志位ORG 0000HLJMP MAINORG 0003H ;外部中断0入口LJMP INT0SUBORG 000BH ;定时器0入口LJMP T0INTORG 0013H ;外部中断1入口LJMP INT1SUBORG 001BH ;定时器1入口LJMP T1INTORG 0040HMAIN: MOV R1,#10;设置初始抢答时间10SMOV R2,#60;设置初始答题时间60SMOV TMOD,#11H;设置定时器0、1的工作模式MOV TH0, #0F0HMOV TL0,#0FFH;设置蜂鸣器发声频率MOV TH1, #3CHMOV TL1,#0B0H;设置100ms为一次溢出中断SETB EASETB ET0SETB ET1SETB EX0SETB EX1;允许四个中断T0、T1、INT0、INT1CLR READYCLR RINGSETB TR1SETB TR0;开始就运行定时器,一开始显示000;查询程序START: MOV R5, #0BHMOV R4, #0BHMOV R3, #0BHACALL DISPLAY;未开始抢答时显示000JB P3.0,NEXT; 主持人未按下"开始"键,程序跳转到非法抢答中,否则顺序执行延时去抖动ACALL DELAYJB P3.0,NEXT;确实按下"开始"键就向下执行,否则跳到非法抢答查询ACALL BAOJING;按键发声MOV A, R1MOV R6,A;抢答时间R1送R6,SETB READY;抢答标志位,用于COUNT子程序中判断是否查询抢答MOV R7,#01H;读抢答键数据信号标志,这里表示只读一次有用信号MOV R3,#0AH;抢答只显示计时,灭号数AJMP COUNT;进入倒计时程序NEXT: JNB P1.0,FALSE1 ;P1.0 为0时转到非法抢答程序,否则顺序执行JNB P1.1, FALSE2JNB P1.2, FALSE3JNB P1.3, FALSE4JNB P1.5, FALSE6JNB P1.6, FALSE7JNB P1.7, FALSE8AJMP START;非法抢答处理程序FALSE1:MOV R3,#01H;1号非法抢答AJMP ERRORFALSE2: MOV R3, #02HAJMP ERRORFALSE3: MOV R3, #03HAJMP ERRORFALSE4: MOV R3, #04HAJMP ERRORFALSE5: MOV R3, #05HAJMP ERRORFALSE6: MOV R3, #06HAJMP ERRORFALSE7: MOV R3, #07HAJMP ERRORFALSE8: MOV R3, #08HAJMP ERROR;调整抢答时间R1的程序INT0SUB: MOVA, R1MOV B, #0AHDIV ABMOV R5, AMOV R4, BMOV R3, #0AHACALL DISPLAY ;在两个LED上显示抢答时间倒计时R1JNB P3.4,QIANGADD ;P3.4为加1s键,如果按下跳到QIANGADD,否则顺序执行JNB P3.5,QIANGSUB ;P3.5为减1s键,如果按下跳到QIANGSUB ,否则顺序执行JNB P3.1,QIANGFH ;P3.1为确定键,如果按下跳到QIANGFH 否则顺序执行AJMP INT0SUBQIANGADD: MOV A, R1CJNE A,#63H,QINGZ;如果不是99,R1加到99,R1就置0 重新加起MOV R1, #00H;ACALL DELAY1AJMP INT0SUBQINGZ: INC R1ACALL DELAY1AJMP INT0SUBQIANGSUB: MOV A, R1JZ SETR1;如果R1为0,R1就置99DEC R1AJMP INT0SUBSETR1: MOV R1, #63HACALL DELAY1AJMP INT0SUBQIANGFH: RETI; 调整回答时间R2的程序INT1SUB: MOVA, R2MOV B, #0AHDIV ABMOV R5, AMOV R4, BMOV R3, #0AHACALL DISPLAYJNB P3.4, HUIADDJNB P3.5, HUISUBJNB P3.1, HUIFHAJMP INT1SUBHUIADD: MOV A, R2CJNE A, #63H, HUIZMOV R2, #00HACALL DELAY1AJMP INT1SUBHUIZ: INC R2ACALL DELAY1AJMP INT1SUBHUISUB: MOV A, R2JZ SETR2DEC R2ACALL DELAY1AJMP INT1SUBSETR2: MOV R2, #63HACALL DELAY1AJMP INT1SUBHUIFH: RETI;抢、回答倒计时程序COUNT:MOV R0,#00H;重设定时器中断次数MOV TH1, #3CHMOV TL1,#0B0H;重设定时100ms的初值RECOUNT:MOV A,R6;R6保存了抢、回答倒计时的时间MOV B, #0AHDIV ABMOV R5,A;取十位数字MOV R4,B;取个位数字MOV A, R6SUBB A, #07HJNC LARGER; 大于5s跳到LARGER,否则顺序执行MOV A, R0CJNE A,#0AH,LESS;1s中0.5s向下运行AJMP CHECKLESS:CJNE A,#14H,CHECK;下面是2s的情况,响并显示号数并清R0重新计SETB RINGMOV A, R6JZ QUIT;计时完毕MOV R0, #00HDEC R6;一秒标志减1AJMP CHECKLARGER: MOV A, R0CJNE A,#14H,CHECK;如果2s向下运行,否则跳到查询"停/显示"DEC R6;计时一秒R6自动减1MOV R0,#00HCHECK:JNB P3.1,QUIT;若按下停止键则退出NEXTT: ACALL DISPLAYJB READY, ACCOUNTAJMP RECOUNTACCOUNT: MOV A, 36HJNB ACC.0, TRUE1JNB ACC.1, TRUE2JNB ACC.2, TRUE3JNB ACC.3, TRUE4JNB ACC.4, TRUE5JNB ACC.5, TRUE6JNB ACC.6, TRUE7JNB ACC.7, TRUE8AJMP RECOUNTTZ1: JMP TRUE7TZ2: JMP TRUE8QUIT: CLR READYCLR RINGAJMP START; 正常抢答处理程序TRUE1: ACALL BAOJINGMOV A, R2MOV R6,A;抢答时间R2送R6MOV R3,#01HCLR READY;答题计时不再进行查询抢答,所以就锁了抢答AJMP COUNTTRUE2: ACALL BAOJINGMOV A, R2MOV R6, AMOV R3, #02HCLR READYAJMP COUNTTRUE3: ACALL BAOJINGMOV A, R2MOV R6, ACLR READYAJMP COUNTTRUE4: ACALL B AOJINGMOV A, R2MOV R6, AMOV R3, #04HCLR READYAJMP COUNTTRUE5: ACALL B AOJINGMOV A, R2MOV R6, AMOV R3, #05HCLR READYAJMP COUNTTRUE6: ACALL B AOJINGMOV A, R2MOV R6, AMOV R3, #06HCLR READYAJMP COUNTTRUE7: ACALL B AOJINGMOV A, R2MOV R6, AMOV R3, #07HCLR READYAJMP COUNTTRUE8: ACALL BAOJINGMOV A, R2MOV R6, AMOV R3, #08HCLR READYAJMP COUNT; 犯规抢答处理程序ERROR: MOV R0, #00HMOV TH1,#3CHMOV TL1, #0B0HMOV 34H,R3;犯规号数暂存到34H单元HERE: MOV A, R0CJNE A,#06H,SHANSHUO;0.6s向下运行灭并停响CLR RINGMOV R3, #0AHMOV R4, #0AHMOV R5,#0AH;三灯全灭AJMP CHECK1SHANSHUO:CJNE A,#0CH,CHECK1;下面是1.2s的情况,响并显示号数并清R0,重新计SETB RINGMOV R0, #00HMOV R3,34H;取回号数MOV R5, #0BHMOV R4,#0BH;显示00和号数AJMP CHECK1CHECK1: JNB P3.1, QUIT1LCALL DISPLAYAJMP HEREQUIT1: CLR RINGCLR READYLJMP START; 显示程序DISPLAY:MOV DPTR,#TAB1;查询显示程序利用P0口做段选码口输出,P2口低3位做位选码输出MOV A, R3MOVC A,@A+DPTRMOV P2, #0FEHMOV P0, AACALL DELAY2;最左边的LED显示选手号MOV DPTR, #TAB2MOV A, R5MOVC A,@A+DPTRMOV P2, #0FDHMOV P0, AACALL DELAY2 ;左边第三个LED显示倒计时的十位数字MOV A, R4MOVC A,@A+DPTRMOV P2, #0FBHMOV P0, AACALL DELAY2;最右边的LED显示倒计时的个位数字RETTAB1:DB 00H,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,3FH ;灭、1、2、3、4、5、6、7、8、9、灭、0TAB2:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,3FH;0、1、2、3、4、5、6、7、8、9、灭、0; 按加减键的加减延时程序DELAY1: MOV 35H, #10HLOOP0: ACALL D ISPLAYDJNZ 35H, LOOP0RET; 键盘去抖动延时13msDELAY: MOV 32H, #12HLOOP: MOV 33H, #0AFHLOOP1: DJNZ 33H, LOOP1DJNZ 32H, LOOPRET;LED显示延时DELAY2: MOV 32H, #43HLOOP3: MOV 33H, #1EHMOV A, R7JNZ A1;没读到有效数据时继续转到A1LOOP2: DJNZ 33H, LOOP2DJNZ 32H, LOOP3RET; 读抢答按键数据口程序A1: MOV A, P1CJNE A,#0FFH,A3;当不全为1时的数据为有效数据,即此时有选手按下按键A2:MOV 36H,A;将有效数据送到36H单元暂存AJMP LOOP2A3: DEC R7AJMP A2; 发声程序BAOJING: SETB RINGACALL DELAY1ACALL DELAY1CLR RING;按键发声RET; T0溢出中断T0INT: MOV TH0, #0ECHMOV TL0, #0FFHJNB RING, OUTCPL P3.6;取反使喇叭发出一定频率的声音OUT: RETI; T1溢出中断(计时程序)T1INT: MOV TH1, #3CHMOV TL1, #0B0HINC R0RETIEND。

单片机设计的六路抢答器

单片机设计的六路抢答器

目录一、设计任务与要求 (2)二、元器件清单及简介 (2)三、设计原理分析及简单设计过程 (3)四、设计中的问题及改进 (8)五、总结 (8)六、参考文献6路抢答器设计一、设计任务与要求1、第一人抢答开关按下后,红LED亮,别人不能再抢答,用1位数码管显示抢答号。

2、主持人有复位开关,按下开关后绿LED灯亮,同时两位动态数码管进行20秒倒计时,有人抢答后停止。

二、元器件清单及简介1.原器件清单如下表所示:2.元器件简介2.1 关于SM420364的介绍SM420364是12个引脚的8段数码管,其中6、7、10、11管脚要通过上拉电阻接电源。

SM420364的逻辑符号和管脚排列如下图所示:2.2 关于AT89S51的介绍2.2.1、AT89S51单片机采用40个引脚的双列直插封装方式,如下图所示:2.2.2、40个引脚按其功能可分为如下三类:(1)电源及时钟引脚(2)控制引脚(3)I/O口引脚2.2.3、AT89S51单片机的片内集成了如下功能部件:AT89S51单片机片内集成了一个8位CPU,数据存储器,4KB Flash ROM,4个8位可编程并行I/O口(P0、P1、P2、P3)。

1个全双工的异步串行口,2个可编程的16位定时器/计数器,1个看门狗定时器,中断系统具有5个中断源、5个中断向量,特殊功能寄存器(SFR)26个,低功耗节电模式有空闲模式和掉电模式,且具有掉电模式下的中断恢复模式、3个程序加密锁定位。

2.3 其他器材的简单说明限流电阻:保护二极管不被烧坏。

三、设计原理分析及简单设计过程3.1 设计思路此抢答器的设计采用模块化结构,主要由以下3个组成,即数码管显示模块、按键控制模块、LED发光显示模块。

在设计此抢答器时,采用模块化的设计思想,使设计起来更加简单、方便、快捷。

此电路是一时钟产生,触发,倒计时计数,数码码显示,在此结构的基础上,构造主体电路和辅助电路两个部分。

3.2 基本原理该抢答器供六人个的抢答比赛使用。

单片机六路抢答器课程设计

单片机六路抢答器课程设计

单片机六路抢答器课程设计概述在现代教育中,抢答器是一种被广泛应用的工具,能够有效提高学生的积极性和参与度。

本课程设计旨在使用单片机设计一个六路抢答器,实现简单、高效的抢答系统,为教学活动增添趣味和互动性。

设计要求1.使用单片机实现六个抢答按键,每个按键代表一个选手。

2.设计一个显示屏,显示抢答结果,包括选手编号和抢答时间。

3.实现按键的状态检测和抢答时间的计时功能。

4.提供简单的用户界面,包括开始抢答、停止抢答和重置功能。

结构设计按键和状态检测为了实现六个抢答按键,可以使用六个GPIO口作为输入端,通过外部上拉电阻连接到VCC电源。

当按键按下时,GPIO口会检测到低电平。

使用中断机制可以实现按键状态的实时检测,当检测到按键按下时,触发中断处理函数进行相应的操作。

抢答时间计时抢答时间计时可以使用定时器实现,定时器在启动抢答过程后开始计时,当有选手按下按键时,记录下计时器的当前值作为该选手的抢答时间。

为了满足要求,可以选择使用32位定时器,以提供足够的计时范围。

显示屏和界面设计为了显示抢答结果,可以使用简单的数码管或液晶显示屏。

数码管可以显示选手编号和抢答时间,而液晶显示屏可以提供更多的显示信息,如选手姓名等。

为了方便用户操作,可以设计几个按钮实现开始抢答、停止抢答和重置功能。

可以使用单片机的GPIO口作为输出端,通过外部上拉电阻连接到VCC电源。

当按钮按下时,GPIO口会检测到低电平。

使用中断机制可以实现按钮状态的实时检测,当检测到按钮按下时,触发中断处理函数进行相应的操作。

硬件原理图以下是单片机六路抢答器的硬件原理图:1. VCC2. GND3. 抢答器按键14. 抢答器按键25. 抢答器按键36. 抢答器按键47. 抢答器按键58. 抢答器按键69. 显示屏数据线10. 显示屏使能线11. 按钮112. 按钮213. 按钮3软件设计初始化在软件设计中,首先需要进行初始化设置,包括初始化GPIO口、定时器、中断等。

基于某AT89C51单片机六路抢答器的设计

基于某AT89C51单片机六路抢答器的设计

基于某AT89C51单片机六路抢答器的设计AT89C51单片机六路抢答器设计一、引言抢答器是一种常见的电子设备,特别是在教育领域中,常用于学生课堂上积极参与课堂互动和答题的工具。

本设计以AT89C51单片机为核心,设计了一款六路抢答器,能够实现多个人同时抢答的功能,提高学生参与课堂互动的积极性。

二、系统设计该抢答器设计包括六个按键、六个LED指示灯和一个液晶显示屏。

具体设计如下:1.硬件设计(1)按键设计:设计六个按键,分别对应六个抢答按钮。

当按下一些按键时,相应的LED指示灯亮起,并通过串口数据传送给单片机,单片机根据接收到的数据来判断相应的学生抢答情况。

(2)LED指示灯设计:设计六个LED指示灯,用于显示学生抢答情况。

当一些学生按下相应的按键抢答时,其对应的LED指示灯亮起。

(3)液晶显示屏设计:设计一个液晶显示屏,用于显示当前的抢答情况。

通过串口将单片机接收到的学生抢答情况传送给液晶显示屏,实时显示当前的抢答情况。

2.软件设计(1)按键扫描程序:通过循环扫描六个按键的状态,当一些按键被按下时,将按键对应的值通过串口传送给单片机。

(2)按键控制程序:单片机接收到按键传来的值后,根据不同的值对相应的LED指示灯进行控制,实现抢答状态的显示。

(3)串口通信程序:设计单片机与液晶显示屏之间的串口通信程序,实现单片机将学生抢答情况传送给液晶显示屏的功能。

(4)液晶显示程序:通过串口接收到的数据,将学生抢答情况显示在液晶显示屏上,实时显示当前的抢答情况。

三、系统实现1.硬件实现:按照设计要求,搭建相应的电路,包括按键、LED指示灯和液晶显示屏等模块的连接。

2.软件实现:根据设计要求,进行相应的程序编写。

四、系统测试五、结论本设计基于AT89C51单片机,设计了一款六路抢答器,能够实现多个人同时抢答的功能。

经过测试,系统能够准确地显示学生的抢答情况,并且操作简便。

通过该抢答器,能够有效提高学生的参与度,促进课堂互动,加深学生对知识的理解和记忆。

用单片机设计并制作抢答器Microsoft Word 文档

用单片机设计并制作抢答器Microsoft Word 文档

目录一、课程设计任务书 (1)二、方案设计说明................................. - 1 -三、硬件设计说明................................. - 2 -1、硬件电路结构框图........................... - 2 -2、完整电路图................................. - 2 -3.电路图电气说明.............................. - 3 -四、软件设计说明................................. - 4 -1、程序流程图................................. - 4 -2、程序清单................................... - 4 -五、制作调试.................................... - 10 -六、使用说明.................................... - 10 -七、总结........................................ - 11 -八、参考文献.................................... - 12 -二、方案设计说明利用单片机设计并制作抢答器:该抢答器设6个按键:2个供主持人分别用于“开始抢答”和“复位”操作,4个供选手作“抢答”操作;用1个发光二极管指示灯点亮后表示开始抢答,再用4个灯分别显示4个选手的抢答状况;开始抢答后,哪一个选手的抢答键最先按下,该选手的抢答状态指示灯点亮,表示抢答成功,其他选手再按下抢答键将无效;开始抢答前若谁按下抢答键,对应的抢答状态指示灯闪亮,表示该选手犯规。

有选手犯规后其他抢答键也将无效;抢答成功后开始3秒钟计时,到时指示灯将变为闪亮,以提醒选手抢答后必须在3秒内回答问题,否则为犯规;出现犯规后,主持人可利用“复位键”重新开始。

单片机课程设计(完整版六路抢答器)

单片机课程设计(完整版六路抢答器)

学号 2010《单片机中级教程原理与应用》课程设计(2010届本科)题目:六路抢答器设计学院:物理与机电工程学院专业:电气程及其自动化作者姓名:指导教师:职称:副教授完成日期: 201 年12 月15 日摘要本设计是六路智力抢答器。

使用51系列单片机,编写应用程序来实现智力抢答功能。

硬件设计使用的是51系列单片机中的89C51。

硬件设计利用其中断控制程序进行抢答部分的处理,通过非门的控制去申请单片机内部的中断,以达到显示抢答的目的。

软件设计利用中断系统的基本构成原理编写中断服务程序,其信号由按键电路提供,由CPU响应中断,并输出响应。

用到了查询按键模块、定时器模块、显示时间模块、显示组号模块、报警模块等。

关键词:89C51 中断定时器报警电路等目录第1章绪论 (3)1.1 智能抢答器的发展现状 (3)1.2 抢答器的背景和特点 (3)第2章抢答器的系统概述 (3)2.1 六路抢答器设计功能要求 (3)2.2 抢答器设计方案 (4)第3章系统硬件电路设计 (4)3.1 系统电路图 (4)3.2 时钟频率电路的设计 (5)3.3 键盘扫描电路的设计 (5)3.4 显示电路的设计 (6)第4章系统软件设计 (7)4.1 程序流程图 (7)4.2 系统程序 (7)第5章仿真调试及性能分析 (8)5.1 仿真调试 (8)一、上电显示 (8)二、开始抢答倒计时显示 (8)三、正确抢答显示 (9)四、违规抢答显示 (9)5.2 性能分析 (10)第6章设计出现的问题及总结 (10)6.1 设计出现的问题 (10)6.2 总结 (10)附录 (13)第1章绪论1.1 智能抢答器的发展现状随着电子技术的发展,现在的抢答器功能越来越强,可靠性和准确性也越来越高。

能够实现抢答器功能的方式有多种,可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式,但这种方式制作过程复杂,而且准确性与可靠性不高,成品面积大。

对于目前抢答器的功能描述,如涵盖抢答器、抢答限时、选手答题计时及犯规组号抢答器具有抢答自锁,灯光指示、暂停复位、电子音乐报声、自动定时等功能,还有工作模式的切换和时间设定,对于这些,随着科学技术的发展,肯定还要得到进一步的改进。

单片机六人抢答器程序讲解

单片机六人抢答器程序讲解

题目如下:六人抢答器,以拨动开关K0~K5中的某个开关为ON作为抢答按键,无人抢答时,6只数码管循环轮流显示1~6跑马,谁先抢答,数码管停止跑马,6个数码管同时亮谁的编号,气候再有按键按下,系统不予回应,知道此拨为OFF,恢复1~6跑马开始下一轮抢答。

#include<reg51.h>#define uchar unsigned char#define uint unsigned intvoid delay(uchar x);void Js_Scan1(void);void Js_Scan2(void);int flag=0,i;int code LED_Num[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d};void main(){EA=1;ET0=1;EX0=1;while(1){Js_Scan1();flag=0;}}void key() interrupt 0 using 0{int x;x=P2;if(x==0xfe&&flag==0){i=0;Js_Scan2();flag=1;}if(x==0xfd&&flag==0){i=1;Js_Scan2();flag=1;}if(x==0xfb&&flag==0){i=2;Js_Scan2();flag=1;}if(x==0xf7&&flag==0){i=3;Js_Scan2();flag=1;}if(x==0xef&&flag==0){i=4;Js_Scan2();flag=1;}if(x==0xdf&&flag==0){i=5;Js_Scan2();flag=1;}}void Js_Scan1() //数码管扫描函数{P1=0xfe;P0=LED_Num[0];delay(100);P1=0xfd;P0=LED_Num[1];delay(100);P1=0xfb;P0=LED_Num[2];delay(100);P1=0xf7;P0=LED_Num[3];delay(100);P1=0xef;P0=LED_Num[4];delay(100);P1=0xdf;P0=LED_Num[5];delay(100);}void Js_Scan2() //数码管扫描函数{uchar j; //定义j数据类型for(j=0;j<5;j++) //建立循环{P1=0x00;P0=LED_Num[i];delay(1);}}void delay(uchar x) //延时函数,防止数码管显示不稳定{uchar k;while(x--)for(k=0;k<125;k++);}基本功能:(1)抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0 ~ S7表示。

单片机六路抢答器C语言程序

单片机六路抢答器C语言程序

单片机六路数显计时抢答器c语言程序 #include <>#define uint unsigned int#define uchar unsigned charunsigned char codetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0} ;sbit start=P3^6;sbit reset=P3^7;sbit key1=P1^0;sbit key2=P1^1;sbit key3=P1^2;sbit key4=P1^3;sbit key5=P1^4;sbit key6=P1^5;sbit key7=P1^6;sbit key8=P1^7;sbit jia=P3^4;sbit jian=P3^5;bit action = 0;uchar second=10,a[7]={0}; uchar timer0_count = 0; uchar number=0;uchar number_display = 0; uchar k;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=120;y>0;y--);}void display(uchar number,uchar second){P2 = 0x01;P0 = table[second];delay(1);P2 = 0x02;P0 = table[number];delay(1);P2 = 0x04;P0 = table[a[0]];delay(1);P2 = 0x08;P0 = table[a[1]];delay(1);P2 = 0x10;P0 = table[a[2]];delay(1);P2 = 0x20;P0 = table[a[3]];delay(1);P2 = 0x40;P0 = table[a[4]];delay(1);P2 = 0x80;P0 = table[a[5]];delay(1);}void start_keyscan(){void fengling();while(start == 0){key7=0;display(number_display,second);if(start == 1){key7=1;action = 1;TR0 = 1;}}}uchar key_scan8(){if(key1 == 0){delay(8);if(key1 == 0){number = 1;number_display = number;}}if(key2 == 0){delay(8);if(key2 == 0){number = 2;number_display = number;}}if(key3 == 0){delay(8);if(key3 == 0){number = 3;number_display = number;}}if(key4 == 0){delay(8);if(key4 == 0){number = 4;number_display = number;}}if(key5 == 0){delay(8);if(key5 == 0){number = 5;number_display = number;}}if(key6 == 0){delay(8);if(key6 == 0){number = 6;number_display = number;}}if(number_display != 0){return number_display;}else{return 0;}}void reset_keyscan(){if(reset == 0){delay(8);if(reset == 0){number_display = 0;second=10;}}}void main(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=0;P2=0x00;while(1){reset_keyscan();start_keyscan();if(jia==0&&a[number-1]<9){delay(10);while(jia==0) display(number_display,second);a[number-1]=a[number-1]+1;}if(jian==0&&a[number-1]>0){delay(10);while (jian==0)display(number_display,second);a[number-1]=a[number-1]-1;}while(action){while(!key_scan8()){display(number_display,second);if(second == 0){second = 10;break;}}TR0 = 0;key7=0;delay(80);display(number_display,second);key7=1;action = 0;break;}display(number_display,second);}}void timer0() interrupt 1{}TH0=(65536-50000)/256;TL0=(65536-50000)%256;timer0_count ++;if(timer0_count == 20){second --;timer0_count = 0;if(second==0){key7=0;delay(60);key7=1;}}。

单片机抢答器程序设计

单片机抢答器程序设计

单片机抢答器程序设计简介在现代教育中,抢答是一种常见的教学方法。

为了更好地组织抢答活动,并提高教学的互动性和趣味性,我们可以利用单片机来设计一个抢答器程序。

本文将详细介绍单片机抢答器程序的设计过程及实现方法。

硬件准备要设计一个单片机抢答器程序,首先需要准备以下硬件材料:1.单片机开发板:推荐使用常见的Arduino开发板。

2.按键模块:用于抢答器参与者按下回答问题的按钮。

3.显示模块:用于显示抢答器参与者的抢答次序和结果。

4.线路连接和电源供应。

硬件连接按照以下步骤进行硬件连接:1.将按键模块的一个引脚连接到单片机开发板的某个数字引脚上,并连接到地线(GND)。

2.将显示模块的引脚连接到单片机开发板的数字引脚上,并连接到地线(GND)。

3.连接电源供应。

程序设计下面是单片机抢答器程序设计的步骤:1.引入所需库文件。

2.定义按键和显示模块的引脚。

3.设置变量来记录抢答次序和结果。

4.设置变量来记录是否有人先按下了按钮。

5.设置变量来记录回答问题的时间。

6.初始化按键和显示模块。

7.设置主循环,监测是否有人按下了按钮。

8.当有人按下按钮时,检查是否已经有人先按下了按钮。

如果没有,则记录抢答次序和结果,并将变量标记为已按下。

9.更新显示模块的显示内容,显示抢答次序和结果。

10.延迟一段时间,然后清除显示内容。

11.返回主循环。

代码实现#include <LiquidCrystal.h>const int buttonPin = 2;const int lcd_rs = 12;const int lcd_en = 11;const int lcd_d4 = 5;const int lcd_d5 = 4;const int lcd_d6 = 3;const int lcd_d7 = 7;LiquidCrystal lcd(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7);int order = 0;bool isAnswered = false;bool isButtonPressed = false;void setup() {pinMode(buttonPin, INPUT);lcd.begin(16, 2);}void loop() {if (digitalRead(buttonPin) == HIGH && !isButtonPressed) {if (!isAnswered) {order++;lcd.setCursor(0, 0);lcd.print("Order: ");lcd.print(order);lcd.setCursor(0, 1);lcd.print("Answered");isAnswered = true;}isButtonPressed = true;}if (!isButtonPressed) {lcd.clear();isAnswered = false;}delay(100);isButtonPressed = false;}程序解释1.代码开始引入了LiquidCrystal库,该库用于控制液晶显示模块。

基于某AT89C51单片机六路抢答器的设计

基于某AT89C51单片机六路抢答器的设计

学号:xxxxxxxxxx课程设计报告基于AT89C51单片机抢答器的设计院系电子信息工程学院专业电子信息工程班级 1姓名xxx摘要单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。

在工业生产中,单片微型计算机是微型计算机的一个重要分支,也是颇具生产力的机种。

单片微型计算机简称单片机,特别适用于控制领域,故又称微控器。

学校和电视台等单位场举办各种比赛,抢答器是必要设备。

在我校举行的各种竞赛中我们经常看到有抢答的环节,举办方多数采用让选手通过举答题板的方法判断选手的答题权,这在某种程度上会因为主持人的主观判断造成比赛的不公平性。

抢答器是一名公正的裁判员,他由主体电路与扩展电路组成。

单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。

在工业生产中,单片微型计算机是微型计算机的一个重要分支,也是颇具生产力的机种。

单片微型计算机简称单片机,特别适用于控制领域,故又称微控器。

学校和电视台等单位场举办各种比赛,抢答器是必要设备。

在我校举行的各种竞赛中我们经常看到有抢答的环节,举办方多数采用让选手通过举答题板的方法判断选手的答题权,这在某种程度上会因为主持人的主观判断造成比赛的不公平性。

抢答器是一名公正的裁判员,他由主体电路与扩展电路组成。

AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

v-1 单片机六路抢答器C语言程序

v-1 单片机六路抢答器C语言程序

把216程序去掉空格添上下括号} v4扦测无错一处警告单片机六路数显计时抢答器c语言程序#include <reg52.h>#define uint unsigned int#define uchar unsigned charunsigned char codetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0};sbit start=P3^6;sbit reset=P3^7;sbit key1=P1^0;sbit key2=P1^1;sbit key3=P1^2;sbit key4=P1^3;sbit key5=P1^4;sbit key6=P1^5;sbit key7=P1^6;sbit key8=P1^7;sbit jia=P3^4;sbit jian=P3^5;bit action = 0;uchar second=10,a[7]={0};uchar timer0_count = 0;uchar number=0;uchar number_display = 0; uchar k;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=120;y>0;y--);}void display(uchar number,uchar second) {P2 = 0x01;P0 = table[second];delay(1);P2 = 0x02;P0 = table[number];delay(1);P2 = 0x04;P0 = table[a[0]];delay(1);P2 = 0x08;P0 = table[a[1]];delay(1);P2 = 0x10;P0 = table[a[2]];delay(1);P2 = 0x20;P0 = table[a[3]];delay(1);P2 = 0x40;P0 = table[a[4]];delay(1);P2 = 0x80;P0 = table[a[5]];delay(1);}void start_keyscan(){void fengling();while(start == 0){key7=0;display(number_display,second);if(start == 1){key7=1;action = 1;TR0 = 1;}}}uchar key_scan8(){if(key1 == 0){delay(8);if(key1 == 0){number = 1;number_display = number;} }if(key2 == 0){delay(8);if(key2 == 0){number = 2;number_display = number;}}if(key3 == 0){delay(8);if(key3 == 0){number = 3;number_display = number;}}if(key4 == 0){delay(8);if(key4 == 0){number = 4;number_display = number;}}if(key5 == 0){delay(8);if(key5 == 0){number = 5;number_display = number;}}if(key6 == 0){delay(8);if(key6 == 0){number = 6;number_display = number;}}if(number_display != 0){return number_display;}else{return 0;}}void reset_keyscan(){if(reset == 0){delay(8);if(reset == 0){number_display = 0;second=10;}}}void main(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=0;P2=0x00;while(1){reset_keyscan();start_keyscan();if(jia==0&&a[number-1]<9){delay(10);while(jia==0)display(number_display,second);a[number-1]=a[number-1]+1;}if(jian==0&&a[number-1]>0){delay(10);while (jian==0) display(number_display,second);a[number-1]=a[number-1]-1;}while(action){while(!key_scan8()){display(number_display,second);if(second == 0){second = 10;break;}}TR0 = 0;key7=0;delay(80); display(number_display,second);key7=1;action = 0;break;}display(number_display,second);}}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;timer0_count ++;if(timer0_count == 20){second --;timer0_count = 0;if(second==0){key7=0;delay(60);key7=1;}}}。

基于单片机的抢答器系统设计

基于单片机的抢答器系统设计

《单片机原理及接口》课程设计报告题 目: 抢答系统设计 专业名称: 电子信息工程 班 级:学 号:姓 名:2011年 1月抢答器系统设计1、设计目标:1.1制作一个6人抢答器,以开关(K1—K6)按下作为抢答按键。

有人按下时,有声音提醒。

1.2无人抢答时,6只数码管轮流循环显示1~6(跑马)。

1.3若有人先抢答,数码管停止跑马,6个数码管同时亮谁的编号,其后再有人按键,系统不予响应,直到复位键按下,开始下一轮抢答。

1.4设一个复位键(主持人),当按下时无论数码管处于什么状态,都恢复跑马,进行抢答。

2、设计环境Windows xp Keil uVision3 Proteus 7.53、硬件设计3.1控制系统及所需元件3.2 控制系统主要由单片机应用电路、存储接口电路、显示接口电路、复位电路组成。

其中单片机A T89C52是系统工作的核心,它主要负责控制各个部分协调工作。

3.3所需元件A T89C52、6位数码管(共阴)、74HC138、BUZZER蜂鸣器、PNP三极管、晶振、电容C1、C2、C3、上拉电阻。

4、各模块方案选择及硬件模块设计4.1 AT89C52功能介绍4.1.1A T89C52有40个引脚,32各外部双向输入/输出(I/O)端口,同时内含2各外中端口,3各16位可编程定时计数器,2各全双工串行通信口,2各读写口线,A T89C52可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

同时A T89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。

4.1.2主要功能特性:兼容MCS51指令系统。

8K可反复擦写(>1000次)Flash ROM。

32个双向I/O口,256x8bit内部RAM。

3个16位可编程定时/计数器中断,时钟频率0-24MHz。

2个串行中断,可编程UART串行通道。

基于51单片机的六路智能抢答器设计

基于51单片机的六路智能抢答器设计

基于51单片机的六路智能抢答器设计摘要在抢答中,只靠人的视觉是很难判断出哪组先答题。

利用单片机来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。

能够实现抢答器功能的方式有多种,可以采用模拟电路、数字电路或模拟与数字电路相结合的方式。

实现抢答器功能的方式有多种,可以采用早期的模拟电路、数字电路或模数混合电路。

本文利用AT89C51单片机及外围接口设计了一个六路抢答器。

关键词: AT89C51 LED数码管抢答器计时报警Design of six way intelligent responder based on 51 single chipmicrocomputerAbstract:In the answer, only by people's vision is difficult to determine which group first answer. Using single-chip microcomputer to design responder, so that the above problems can be solved, even if the two groups of responder time difference between a few microseconds, you can identify which group of priority questions. There are many ways to realize the function of responder, which can be simulated by means of analog circuits, digital circuits or analog and digital circuits. There are many ways to realize the function of answering device, and the early analog circuit, digital circuit or analog digital mixed circuit can be adopted. This paper uses AT89C51 microcontroller and peripheral interface to design a six way responder. Key words: AT89C51 LED digital tube responder, timing alarm目录第一章系统总体方案的设计 (1)1.1 硬件电路的设计 (1)1.2 总体原理图 (2)1.3 时钟频率电路的设计 (2)1.4 复位电路的设计 (3)1.5 显示电路的设计 (4)1.5.1 显示模块在系统软件中的安排 (4)1.6 键盘扫描电路的设计 (6)1.7 发声 (7)1.8 系统复位 (7)第二章软件设计 (9)2.1 主程序系统结构图 (9)2.2软件任务分析 (9)2.3 程序流程图 (10)致谢 (12)参考文献 (13)第一章系统总体方案的设计1.1 硬件电路的设计本设计分为硬件设计和软件设计,这两者相互结合,不可分离;从时间上看,硬件设计的绝大部分工作量是在最初阶段,到后期往往还要做一些修改。

基于单片机实现的六路抢答器设计毕业设计

基于单片机实现的六路抢答器设计毕业设计

目录一、六路抢答器设计任务及要求 (1)1.1设计任务 (1)1.2设计要求 (1)1.2.1系统设计要求 (1)1.2.2设计目标………………………………………………………………二、系统组成及工作原理 (2)2.1方案选择 (2)2.1.1 利用译码芯片 (2)2.1.2 利用单片机 (2)2.2原理分析 (3)2.3设计方案 (3)三、抢答器硬件系统设计 (4)3.1时钟电路和复位电路 (4)3.1.1时钟电路 (5)3.1.2复位电路 (5)3.2键盘电路 (6)3.3 显示电路 (7)3.3.1 显示驱动电路 (7)3.3.2显示报警电路 (8)3.4芯片介绍 (9)3.4.1集成芯片AT89S52 (9)3.5共阳数码管介绍 (11)四、软件系统设计 (12)4.1 设计思想 (12)4.2 资源分配 (12)4.3 程序设计流程图 (13)4.3.1 定时器中断服务程序流程 (13)4.3.2抢答违规流程图 (13)4.3.3 显示程序流程 (14)4.3.4主程序流程图 (15)五、调试及使用说明 (16)5.1实物调试 (16)5.2 使用说明 (16)六、设计心得体会及教学建议 (17)6.1 设计体会 (18)6.2教学建议 (18)致谢 (19)参考文献 (20)附录Ⅰ电路原理图 (21)附录Ⅱ PCB元器件布局图 (22)附录Ⅲ PCB顶层图 (23)附录Ⅳ PCB底层图 (24)附录Ⅴ元器件清单 (25)附录Ⅵ程序清单 (27)一、六路抢答器设计任务及要求1.1设计任务设计一个智力竞赛抢答器,可同时供8名选手或8个代表队参加比赛,他们的编号分别是1、2、3、4、5、6、各用一个抢答按钮,按钮的编号与选手的编号相对应,分别是S0、S1、S2、S3、S4、S5。

要求一人一组在一周时间内完成实物并打印《单片机技术》课程设计说明书一份。

1.2设计要求1.2.1系统设计要求:(1)该抢答器上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态;(2)主持人按下开始按钮后,抢答开始并限定时间30S;10S内无人抢答,蜂鸣器发出音响;(3)主持人按下开始按钮之前有人按下抢答器,抢答违规,显示器显示违规台号,违规指示灯亮,其它按钮不起作用;(4)正常抢答下,从按下抢答按钮开始30S内,答完按钮没按下,则作超时处理,超时处理时,违规指示灯亮,数码管显示违规台号;(5)在30S,内选手提前答完,由主持人按下停止,并显示答题时间,主持人按复位,等待下一轮抢答:(6)各台数字显示的消除,蜂鸣器音响及违规指示灯的关断,都要通过主持人按复位按钮;1.2.2设计目标:(1)通过理论设计和实物制作解决相应的实际问题,巩固和运用在《单片机技术》中所学的理论知识和实验技能;(2)熟悉电路中所用到的各集成芯片的管脚及其功能;(3)进行电路的装接、调试,直到电路能达到规定的设计要求;(4)掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力告,以后从事电子电路设计、研发电子产品打下良好的基础。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档