基于51单片机的抢答器设计[最终定稿]

时间:2019-05-14 18:43:20下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《基于51单片机的抢答器设计》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《基于51单片机的抢答器设计》。

第一篇:基于51单片机的抢答器设计

1.系统设计

1.1设计要求

1、需要自己设计电路并焊接电路板。

2、基本要求:有一个主持人控制开关和6路抢答按扭,当主持人允许抢答时才能进行抢答操作,并用一个数码管显示抢答选手的号码,同时其他选手不能再抢答。

3、当主持人允许抢答后倒计时5秒时间,在这5秒内抢答有效,过后就不能进行抢答了。

4、电路上要加个蜂鸣器的电路,当有选手抢答时蜂鸣器响一下。

5、当有选手抢答后,进行倒计时20秒作为选手回答问题时间,用两个数码管显示,倒计时时间到时有声光提示。

6、画电路板时要增加下载接口,方便调试程序。

7、扩展功能(选做),8、用按键可设置倒计时的时间,范围在5秒到30秒之间。

1.2设计原理

1.3总体思路

以AT89S52单片机为核心的单片机,通过相应的程序,并且通过按键来进行电平识别,再由单片机输出相应的程序,并将相应数值通过数码管来显示。

1.4设计方案 通过平时所学知识、查找资料和老师的答疑。我得到了正确的交通灯原理图,在正确的电路图前提下进行编程把程序烧到52芯片里,再把芯片连接到电路板上通过52芯片实现程序功能,实现步骤如下:通过P1.0到P1.7分别控制按键一到八,P0控制位选,P2.3控制段选,这样就能基本达到了老师给我们抢答器 的要求了。

2、模块电路的设计

2.1 2.1 数码管显示模块

由于单片机的P0口没有上拉电阻,当它做为输出时,需要对其接上拉电阻。因为P0口做为数码管的段选输出,所以要在P0口接一个1K的排阻。P2口做为数码管的位选,任选其4个IO口接线,就可以了,然后利用软件来控制四个数码管的亮灭。

2.2 八个选手按键输入

当按键按下时,对P1口输入低电平,通过程序读取低电平的IO口,然后进行锁存,对数码管做相应的输出,提供抢答选手号数。

2.3 蜂鸣器输出

蜂鸣器电路是利用NPN开关电路,当基极为高电平时,三极管导通;当为低电平时,三极管截止。利用这一特性,可以画出蜂鸣器的电路图

3、程序编写调试过程 #include #define uchar unsigned char #define uint unsigned int

位定义

sbit s1=P3^0;sbit led=P3^3;sbit fmq=P3^4;段码表 uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0X07,0x7f,0x6f};

定义字符型变量

uchar flag1,flag2,num,m1,m,m2,t;延时程序

void ys(uchar z)

{ uchar i,j;for(i=z;i>0;i--)for(j=0;j<150;j++);}

void uinit()//初始化

{ fmq = 0;TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;num=0;m2=0;m1=0;led=0;flag2=1;}

void timer0()interrupt 1 { TH0=(65536-50000)/256;TL0=(65536-50000)%256;t++;if(t==20&&flag2==0){ t=0;

if(m1==0)

{

TR0=0;

flag2=1;

//flag1=0;

led=1;

fmq=1;

}

else m1--;

} if(t==20&&flag1==1&&flag2==1){ t=0;

m1=m%10;

m2=m/10;

if(m==0)

{

m=0;

led=1;

fmq=1;

}

else {m--;led=0;fmq=0;}

} }

void key(){

if(s1==0)

{

ys(10);

if(s1==0)

{

flag1=1;m1=5;flag2=0;num=0;led=0;m2=0;TR0=1;fmq=0;

}

}

if(flag2==0)

{

switch(P1)

{

case 0xfe:{TR0=0;num=1;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

case 0xfd:{TR0=0;num=2;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

case 0xfb:{TR0=0;num=3;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

case 0xf7:{TR0=0;num=4;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

case 0xef:{TR0=0;num=5;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

case 0xdf:{TR0=0;num=6;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

case 0xbf:{TR0=0;num=7;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

case 0x7f:{TR0=0;num=8;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

}

} } main(){

uchar k;uinit();while(1){

key();

k=0;

switch(k)

{

case 0:{P2=0XFe;P0=tab[m2];ys(5);}

case 1:{P2=0XFd;P0=tab[m1];ys(5);}

case 2:{P2=0XFb;P0=0x40;ys(5);}

case 3:{P2=0XF7;P0=tab[num];ys(5);}

}

}

}

4、焊接制作与调试过程

焊接制作过程:这次我们用的是万用板,直接焊接。先把器件布局,布局好以后,再把各个几件焊上去,最后再根据PCB图用绝缘线或者焊锡把各个器件,芯片连接起来。

调试过程:把程序烧进芯片后开始接电源,看看结果。如果出现乱码 哪检查线路没问题后 就看看程序的接口有没有错,主要问题就是在接口上。

5、心得体会

通过这次实训,我不仅提高了Keil uVision3 , Protel 99 SE这些应用程序的运用,还让我懂得了如何编写一些简单的程序,学会了如何制作单片机应用程序,还有焊接和程序固化,这几天我经过老师耐心的讲解和指导通过自己认真的动手操作,终于将一个完整的装有程序的单片机芯片版制作出来了。但在实训中间暴露出很多问题:对平时上课讲的理论知识没有完全掌握消化,到了实际操作中还得请教老师和同学,在焊接中焊接的基本工夫掌握不到家,手上工夫还是很欠缺的,使得电路板不是很美观。这些问题的发现,有助于提高我在以后的工作和学习中对此类问题的认识,确保不在同一问题上再次犯错。

给我的一个最大的感触就是一个好的电工不应该只会接线,而是会发现错误,改正错误。这次实训不仅加深了我们对知识的理解,更重要的是提高了我们的动手能力,增强了我对电工学习的热爱,增加了学习的动力和兴趣。

6、参考文献

1.《单片机C语言编程与实例》赵亮、侯国瑞 人民邮电出版社 2.《例说8051》 张义和编著 人民邮电出版社

7.附录(程序和原理图)1PCB图

2原理图 源程序

#include #define uchar unsigned char #define uint unsigned int

sbit s1=P3^0;sbit led=P3^3;sbit fmq=P3^4;

uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0X07,0x7f,0x6f};uchar flag1,flag2,num,m1,m,m2,t;

void ys(uchar z)

{ uchar i,j;for(i=z;i>0;i--)for(j=0;j<150;j++);}

void uinit()

//初始化

{

fmq = 0;TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;num=0;m2=0;m1=0;led=0;flag2=1;}

void timer0()interrupt 1 { TH0=(65536-50000)/256;TL0=(65536-50000)%256;t++;if(t==20&&flag2==0){ t=0;

if(m1==0)

{

TR0=0;

flag2=1;

//flag1=0;

led=1;

fmq=1;

}

else m1--;

} if(t==20&&flag1==1&&flag2==1){ t=0;

m1=m%10;

m2=m/10;

if(m==0)

{

m=0;

led=1;

fmq=1;

}

else {m--;led=0;fmq=0;}

} }

void key(){

if(s1==0)

{

ys(10);

if(s1==0)

{

flag1=1;m1=5;flag2=0;num=0;led=0;m2=0;TR0=1;fmq=0;

}

}

if(flag2==0)

{

switch(P1)

{

case 0xfe:{TR0=0;num=1;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

case 0xfd:{TR0=0;num=2;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

case 0xfb:{TR0=0;num=3;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

case 0xf7:{TR0=0;num=4;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

case 0xef:{TR0=0;num=5;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

case 0xdf:{TR0=0;num=6;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

case 0xbf:{TR0=0;num=7;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

case 0x7f:{TR0=0;num=8;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;

}

} } main(){

uchar k;uinit();while(1){

key();

k=0;

switch(k)

{

case 0:{P2=0XFe;P0=tab[m2];ys(5);}

case 1:{P2=0XFd;P0=tab[m1];ys(5);}

case 2:{P2=0XFb;P0=0x40;ys(5);}

case 3:{P2=0XF7;P0=tab[num];ys(5);}

}

}

}

第二篇:单片机课程设计8路竞赛抢答器

课程设计任务书 设计内容

⒈设计一个智力竞赛抢答器,可同时供8名选手或8个代表队参加比赛,他们的编号分别是1、2、3、4、5、6、7、8,各用一个抢答按钮,按钮的编号与选手的编号相对应,分别是S0、S1、S2、S3、S4、S5、S6、S7。

⒉给节目主持人设置一个控制开关,用来控制系统的清零(编号显示数码管灭灯)和抢答的开始。

⒊抢答器具有数据锁存和显示的功能。抢答开始后,若有选手按动抢答按钮,编号立即锁存,并在LED数码管上显示出选手的编号,同时蜂鸣器给出音响提示。此外,要封锁输入电路,禁止其他选手抢答。优先抢答选手的编号一直保持到主持人将系统清零为止。

4.用中小规模集成电路组成智力竞赛抢答器电路,画出各单元电路图和总体逻辑框图,正确描述各单元功能,合理选用电路器件,画出完整的电路设计图以及写出设计总结报告 2 设计要求

⒈抢答器具有定时抢答的功能,且一次抢答的时间可以由主持人设定(如30s)。当节目主持人启动“开始”键后,要求定时器立即减计时,并用显示器显示,同时蜂鸣器发出声响。

⒉参赛选手在设定的时间内抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人将系统清零为止。

⒊如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统短暂报警,并封锁输入电路,禁止选手超时后抢答,时间显示器上显示00。

摘要

抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。工厂、学校和电视台等单位常举办各种智力竞赛, 抢答记分器是必要设备。在我校举行的各种竞赛中我们经常看到有抢答的环节,举办方多数采用让选手通过举答题板的方法判断选手的答题权,这在某种程度上会因为主持人的主观误断造成比赛的不公平性。但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,为解决这个问题,我们小组准备就本次大赛的机会制作一个低成本但又能满足学校需要的八路数显抢答器。

本设计是以八路抢答为基本理念。考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。

目录

一.方案设计与论证.........................................................................................1 二.实现的原理和电路......................................................................................2

2.1组成部分............................................................................................2 2.2抢答器................................................................................................2 2.3锁存器................................................................................................2 三.硬件电路设计.............................................................................................3

3.1抢答器的电路框图..............................................................................3 3.2单元电路设计.....................................................................................4

3.2.1抢答器的设计...........................................................................4 3.2.2时序电路的设计.......................................................................4 3.2.2复位电路的设计.......................................................................5 3.2.4外部振荡电路...........................................................................5 3.2.5显示电路的设计.......................................................................6 3.2.6按钮输入电路的设计................................................................6 3.2.7报警电路的设计.......................................................................6 3.2.8发声.........................................................................................7

四.软件设计....................................................................................................7

4.1系统主程序的设计..............................................................................8 4.2抢答信号的处理设计..........................................................................9 4.3键盘扫描子程序...............................................................................10 4.4显示子程序......................................................................................12 五.系统的仿真...............................................................................................12 六.调试功能说明...........................................................................................14

6.1系统的调试......................................................................................14 6.2 软件调试问题及解决.......................................................................14 七.参考文献..................................................................................................15 八.心得体会..................................................................................................16

一.方案设计与论证

方案一:系统各部分采用中小规模集成数字电路,用机械开关按钮作为控制开关,完成抢答输入信号的触发。该方案的特点是中小规模集成电路应用技术成熟,性能可靠,能方便地完成选手抢答的基本功能,但是由于系统功能要求较高,所以电路连接集成电路相对较多,而且过于复杂,并且制作过程工序比较烦琐,使用不太方便。

方案二:该系统采用51系列单片机AT89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。MCS-51单片机特点如下:

<1>可靠性好:单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。

<2>单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统。

<3> 控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。

方案比较及其选用依据,显然方案二比方案一简单的多,不但从性能上优于方案一,而且在使用上及其功能的实现上都较方案一简洁,并且由于单片机具有优越的高集成电路性,使其工作速度更快、效率更高。另外80C51单片机采用12MHz的晶振,提高了信号的测量精度,并且使该系统可以通过软件改进来扩张功能。而方案一采用了中小规模集成电路,有其复杂的电路性能,从而可能会使信号的输入输出产生延时及不必要的误差。依此依据选择方案二比较适合。二.实现的原理和电路

2.1组成部分:

输入锁存控制电路——按键S1~S8,锁存器D1及相关门电路 数码显示电路——译码器,全加器,及3个数码管

报警电路——定时器(构成多谐振荡器)和三极管,蜂鸣器

2.2抢答器

工作过程:接通电源,主持人将控制开关置于“清除”位置,抢答器处于禁止工作状态,编号显示器灭灯。当主持人宣布抢答题目后,说一声“开始”同时将控制开关拨到“开始”位置,抢答器处于工作状态。当选手按动抢答时,抢答器完成3项工作。

1)优先编码电路立即分辨出抢答者的编号,并由锁存器进行锁 存,然后由数码管显示电路编号。

2)扬声器发出声响,提醒主持人注意

3)控制电路要对输入编码电路进行封锁,避免其他人再次抢答,并保持到主持人清零。当选手将问题回答完毕后,主持人操作控制开关,使系统恢复到禁止工作状态,以便下一次抢答。

2.3锁存器

锁存器输入信号均为同一电平时,锁存器控制电路的输出信号将锁存器打开,这时锁存器输入端的信号送往相应的输出端。当有一输入端的电平发生跳变时,其对应输出端电平也跟着变化,此变化的输出电平送入锁存器控制电路,控制电路立即产生控制信号封锁锁存器,此时输入不影响输出。电路图如下:

三.硬件电路设计

3.1抢答器的电路框图

如上图

(一)所示为电路框图。其工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置,“开始”状态,宣布“开始”抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作“开始,停止”。由电路框图下面的总体设计图

(二)总设计图的工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置,“开始”状态,宣布“开始”抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作“开始、停止”状态开关。

总体设计图

(二)3.2单元电路设计

3.2.1抢答器的设计

由总体设计图

(二)可知该电路完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。如有再次抢答需由主持人将S开关重新置,“清除”然后再进行下一次的抢答。

3.2.2时序电路的设计

时序控制电路是抢答器设计的关键,它要完成以下功能:

a.主持人将控制开关拨到“开始”位置时,扬声器发声,抢答电路和定时电路进人正常抢答工作状态。

b.当参赛选手按动抢答键时,扬声器发声,抢答电路和定时电路停止工作。3.2.2复位电路的设计

外部中断和内部中断并存,单片机硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值,因为本设计中功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它完成复位。复位电路如下图示:

3.2.4外部振荡电路

外部震荡电路单片机必须在AT89C51的驱动下才能工作,在单片机内部有一个时钟震荡电路,只需要外接一个振荡器就能产生一定的时钟信号送到单片机内部的各个单元,外部震荡电路如下图。3.2.5显示电路的设计

显示电路使用了七段数码管7SEG-MPX4-CC,它是共阴极的,由高电平点亮。

3.2.6按钮输入电路的设计

抢答器的输入按钮使用常开开关,这些常开开关组成了抢答按键,硬件电路简单,在程序设计上也不复杂,只要在程序中消除在按键过程中产生的“毛刺”现象就可以了。这里采用最常用的方法即延时法,其的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。

3.2.7报警电路的设计

报警电路用于报警,当遇到报警信号时,发出警报。一般喇叭是一种电感性,8951驱动喇叭的信号为各种频率的脉冲。因此,最简单的喇叭驱动方式就是利用达林顿晶体管,或者以两个常用的小晶体管连接成达林顿架势。利用晶体管的高电流增益,以达到电路快速饱和的目的。不过,如果要由P0输出到此电路,还需要连接一个10K的上拉电阻。选手在设定的时间内抢答时,实现:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次*作“清除”和“开始”状态开关。图面是数字抢答器的报警电路图。其中555构成多谐振荡器,振荡频率fo=1.43/[(RI+2R2)C],其输出信号经三极管推动扬声器。PR为控制信号,当PR为高电平时,多谐振荡器工作,反之,电路停振。

3.2.8发声

这里能利用程序来控制单片机P3.6口线反复输出高电平或低电平,即在该口线上产生一定频率的矩形波,接上扬声器就能发出一定频率的声音,再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使扬声器发出不同的声音。

四.软件设计

整个程序的设计思路如下:首先用进位标志C作为主持人按键的状态标志,C=0为可以开始抢答(如果需要也可用一个发光二极管将C的状态显示出来,只需将程序做小小的修改即可);接下来开外部中断0;然后是读取按键状态,只要有一个按键按下(引脚为高电平)并且为C=0,则开始进入分析按键状态程序,用循环移位指令分析出事第几个按键按下,并将其放入P1口进行显示输出。上述程序相对来说很简单,首先它从硬件的微妙数量级处理速度上确保了不会同时按下2个按键,因此程序没有区分重复按键的部分,另外程序使用了外部中断,从而保证了主持人按键的权限是所有按键中权限最高的。

主程序流程图如下:

4.1系统主程序的设计

主程序的功能主要是完成内部各寄存单元的初始化,对接口电路的初始化,内部定时器的初始化,中断的初始化及调节显示程序对初始状态的显示以及对外部信号的等待处理,也就是说完成前期的准备工作等待随时对外部信号进行响应。程序清单如下:

OK EQU 20H

;抢答开始标志位 RING EQU 22H ;响铃标志位 ORG 0000H AJMP MAIN ORG 0003H

AJMP INTOSUB

ORG 00BH

AIMP T01NT

ORG 0013H

AJMP INT1SUB

ORG 001BH

AJMP T1INT

ORG 0040H

MAIN:MOV R1,#30

;初设抢答时间为30S

MOV R2,#60

;初设答题时间为60S

MOV TMOD,#11H

;设置未定时器、模式1

MOV TH0,#0F0H

MOV TLO,#0FFH

;越高发声频率越高,越尖

MOV TH1,#3CH

MOV TL1,#0B0H

;50MS为一次溢出中断

SETB EA

SETB ETO

SETB T1

SETB EX0

SETB EX1

;允许四个中断,T0,T1,INTO,INT1

CLR OK

CLR RING

SETB TR1

SETB TRO 一开始就运行定时器,显示FFF,如果想重新计数,重置TH1,TL1就可以了。

4.2抢答信号的处理设计

当主持人按下开始抢答键后开始抢答,程序部分采用中断方式处理。在中断处理程序中完成相应操作,修改计时单元的数据并使红色指示灯亮。程序清单如下:

START:MOV R5,#0BH

MOV R4,#0BH

MOV R3,#0BH

ACALL DISPLAY

;未开时抢答的时候显示FFF

JB P3.0,NEXT

;DDDDDDD

ACALL DELAY

JB P3.0,NEXT

;去抖动如果“开始键”按下就向下执行,否则跳到非法抢答查询

ACALL BARK

;按键发声

MOV A,R1

MOV R6,A

;送R1->R6因为R1中保存了抢答时间

SETB OK ;抢答标志位,用于COUNT只程序中判断是否查询抢答

MOV R7,#01H ;读抢答键数据信号标志,这里表示只读一次有用信号

MOV R3,#0AH ;抢答只显示计时,灭号数

AJMP COUNT

;进入倒计时程序,“查询有效抢答的程序”在COUNT里

NEXT:JNB P1.0,FALSE1

JNB P1.1,FALSE2

JNB P1.2,FALSE3

JNB P1.3,FALSE4

JNB P1.4,FALSE5

JNB P1.5,FALSE6

JNB P1.6,FALSE7

JNB P1.7,FALSE8

AJMP START 4.3键盘扫描子程序

对行列式键盘的扫描方法有两种。一为扫描法,对键盘按行逐行扫描查询,其结构清晰但对于最后行列的按键需经多次扫描;一为反转法,它先使行全为零,读人列的状态暂存,然后使列全为零,读人行的状态保存,对两次保存数据进行查询即可得知按下键的行列数从而确定键值。在程序中采用反转法对键盘进行扫描。键盘扫描程序在确定键值后保存等待后续处理。程序清单如下:

AAAA1:MOV A,P1

CJNE A,#0FFH,AA1 ;当不全为0时的数据为有效数据

AA0:MOV 36H,A

;将有效数据送到36H暂存

AJMP LOOP2

AA1:DEC R7

AJMP AA0(1)键值处理子程序

此子程序根据键盘扫描所取得的键值作出相应的处理。在抢答时,只对数字(代表相应抢答分组)1^8按下有效,其他键按下无效。抢答成功,开始答题键按下给出相应信号指示。程序清单如下:

TRUE1:ACALL BARK

MOV A,R2

MOV R6,A

;抢答时间R2送R6

MOV R3,#01H

CLR OK ;因为答题的计时不在查询抢答,所以就锁了抢答

AJMP COUNT TRUE2:ACALL BARK

MOV A,R2

MOV R6,A

MOV R3,#02H

CLR OK

AJMP COUNT TRUE3:ACALL BARK

MOV A,R2

MOV R6,A

MOV R3,#03H

CLR OK

AJMP COUNT TRUE4:ACALL BARK

MOV A,R2

MOV R6,A

MOV R3,#04H

CLR OK

AJMP COUNT

TRUE5:ACALL BARK

MOV A,R2

MOV R6,A

MOV R3,#05H

CLR OK

AJMP COUNT TRUE6:ACALL BARK

MOV A ,R2

MOV R6,A

MOV R3,#06H

CLR OK

AJMP COUNT TRUE7:ACALL BARK

MOV A,R2

MOV R6,A

MOV R3,#07H

CLR OK

AJMP COUNT TRUE8:ACALL BARK

MOV A,R2

MOV R6,A

MOV R3,#08H

CLR OK

AJMP COUNT

4.4显示子程序

此程序仅完成6位数据的动态显示,可显示数据和代码。初始状态显示8位全熄灭。程序清单如下:

DISPLAY:MOV DPTR,#DAT1 ;查表显示程序,利用P0口做段选码口输出,P2低三位做选码输出

MOV A,R3

MOVC A,@A+DPTR

MOV P2,#0FEH

MOV P0,A

ACALL DELAY2

MOV DPTR,#DAT2

MOV A,R5

MOVC A,@A+DPTR

MOV P2,#0FDH

MOV P0,A

ACALL DELAY2

MOV A,R4

MOVC A,@A+DPTR

MOV P2,#0FBH

MOV P0,A

ACALL DELAY2

RET

DAT1:DB 00H,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,71H;“灭”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“灭”,“F”

DAT2:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,71H ; 第一个为零,其他与上同,因为十位如果为零显示熄灭

五.系统的仿真

1.抢答器protenus软件的仿真

绘制抢答器的软件仿真图步骤分一下四步:(1)、查找所需要的元器件;(2)、根据电路图进行连线;(3)、是用来写线所对应的坐标,即下图所示的P1.1等坐标;

(4)、下载所写完的C程序即可以仿真。通过以上步骤,来实现抢答器设计的仿真实现,仿真如上图所示:

六.调试功能说明

6.1系统的调试

系统调试包括硬件调试和软件调试,‘

硬件调试分单元电路调试和联机调试,单元电路试验在硬件电路设计时已经进行,主要用数字万用表测量电路。

软件调试一般包括分块调试和联机调试两个阶段。程序的分块调试一般在单片机开发装置上进行,可根据所调程序功能块的入口参量初值编制一个特殊的程序段,并连同被调程序功能块一起在开发装置上运行;也可配合对应硬件电路单独运行某程序功能块,然后检查是否正确,如果执行结果与预想的不一致,可以通过单步运行或设置断点的方法,查出原因并加以改正,直到运行结果正确为止。这时该 程序功能块已调试完毕,可去掉附加程序段。其它程序功能块可按此法进行调试。程序联机调试就是将已调试好的各程序功能块按总体结构联成一个完整程序,在所研制的硬件电路上运行。从而试验程序整体运行的完整性、正确性和与硬件电路的配合情况。在联调中可能会有某些支路上的程序、功能块因受条件制约而得不到相应的输入参数,这时,调试人员应创造条件进行模拟调试。

6.2 软件调试问题及解决

下面说一下如何在keil中调用proteus进行MCU外围器件的仿真。(1)、安装keil 与 proteus。

(2)、把安装proteus MODELS目录下 VDM51.dll文件复制到Keil安装目录的 C51BIN目录中。

(3)、修改keil安装目录下 Tools.ini文件,在C51字段加入 TDRV5=BINVDM51.DLL(“Proteus VSM Monitor-51 Driver”),保存。(注意:不一定要用TDRV5,根据原来字段选用一个不重复的数值就可以了。引号内的名字随意)

3、打开proteus,画出相应电路,在proteus的debug菜单中选中use remote debug monitor

4、在keil中编写C语言程序

5、进入KEIL的project菜单option for target '工程名'。在DEBUG选项中右栏上部的下拉菜单选中 Proteus VSM Monitor-51 Driver。

6、在keil中进行debug吧,同时在proteus中查看直观的结果(如LCD显示„)这样就可以像使用仿真器一样调。

问题:有时候在自己创建的元器件的管脚上无法实现连线。

回答:应该是管脚的间距太小了。因为在ISIS中,每个元器件的管脚都要占据一块区域(就像自己的保护区一样,不容别人随意侵犯),该区域会排斥外部的走线。解决问题的方法是在走线的同时按住 “CTRL”键,直到走线绕过狭窄的保护区。当然最根本的办法是重新编辑元器件,把其管脚间距调大一些。

七.参考文献

[1]51单片机原理与实践/高卫东,辛友顺,韩彦征编著.北京航空航天大学出版社,2008.1 [2]刘红玲、邵晓根,《微机原理与接口技术》,中国电力出版社,2006年第一版

[3]冯博琴,《微型计算机原理及接口技术》,清华大学出版社 [4]艾德才,《微型计算机原理与接口技术》,高等教育出版社 [5]沈美明,《IBM-PC汇编语言程序设计》,清华大学出版社 [6] 任致程,《经典集成电路400例》机械工业出版社,2002 [7] 胡 锦.《数字电路与逻辑设计》 高等教育出版社

八.心得体会

通过二周的课程设计,使我对数字电路有了进一步的了解,在设计抢答器、报警器、定时器的过程中,通过翻阅资料,上网搜索等,我对各电路器件(如:与非门和LED显像管等)及原理有了更深一层次的认识,既增强了我的理解能力,也使我能更好的运用所学的知识。开始时我还不太明白电路是如何连接的,并且对其原理也不甚了解,但通过对所学知识更深入的了解和同学的讲解和帮助,最终使我克服了难关,并成功地作出了设计。四周的锻炼,28天的不同感受,我有过对知识掌握不足时的迷茫,也有过思路不清时的懊恼,但一路走来,我却收获了知识,收获了希望和努力后的成果。

在此我要感谢老师的谆谆教导和同学们的帮助,我相信这十几天的不懈努力会给我未来的学习带来很多的启发,我会在以后的工作生活中更好的理论联系实际,证明自己的能力。

第三篇:基于单片机的数字抢答器的设计及仿真

基于单片机的数字抢答器的设计及仿真

一、摘 要:数字抢答器由主体电路与扩展电路组成。优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。经过布线、焊接、调试等工作后数字抢答器成形。

关键字: 抢答电路 定时电路 报警电路 时序控制

Summary The figure vies for the answering device by the subject circuit and expands the circuit to make up.Have priority in code circuit , latch , decipher circuit and export the input signal of the entrant team on the display;Starting the warning circuit with the control circuit and host's switch, two the above-mentioned parts make up the subject circuit.Through timing circuit and decipher second signal function while outputs and realizes counting on the displaying that pulse produce circuit, form and expand the circuit.Through connect up , weld , debug figure vie for answering device take shape after the work.Key word: Vie for answering the circuit Timing circuit Warning circuit Time sequence controlling

三、实验部分 1)、设计任务与要求

1.抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0 ~ S7表示。2.设置一个系统清除和抢答控制开关S,该开关由主持人控制。

3.抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。4.抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。

5.参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

6.如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。2)、实验仪器设备: 1.数字实验箱。

2.集成电路74LS148 1片,74LS279 1片,74LS48 3片,74LS192 2片,NE555 2片,74LS00 1片,74LS121 1片。

3.电阻 510Ω 2只,1KΩ 9只,4.7kΩ l只,5.1kΩ l只,100kΩ l只,10kΩ 1只,15kΩ 1只,68kΩ l只。

4.电容 0.1uF 1只,10uf 2只,100uf 1只。

5.三极管 3DG12 1只。

6.其它:发光二极管2只,共阴极显示器3只

三、方案论证与比较:与普通抢答器相比,本作品有以下几方面优势:

1、具有清零装置和抢答控制,可由主持人操纵避免有人在主持人说“开始”前提前抢答违反规则。

2、具有定时功能,在30秒内无人抢答表示所有参赛选手获参赛队对本题弃权。3、30秒时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答。

四、总体设计思路:

(一)设计任务与要求:

1.抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0 ~ S7表示。2.设置一个系统清除和抢答控制开关S,该开关由主持人控制。

3.抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

4.抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。

5.参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

6.如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。

(二)设计原理与参考电路 1.数字抢答器总体方框图

如图11、1所示为总体方框图。其工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置“开始”状态,宣布“开始”抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作“清除”和“开始”状态开关。

五、多功能硬件与软件设计及其理论分析与计算: 各单元部分电路设计如下:

(1)抢答器电路

参考电路如图2所示。该电路完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。工作过程:开关S置于“清除”端时,RS触发器的 端均为0,4个触发器输出置0,使74LS148的 =0,使之处于工作状态。当开关S置于“开始”时,抢答器处于等待工作状态,当有选手将键按下时(如按下S5),74LS148的输出 经RS锁存后,1Q=1, =1,74LS48处于工作状态,4Q3Q2Q=101,经译码显示为“5”。此外,1Q=1,使74LS148 =1,处于禁止状态,封锁其他按键的输入。当按键松开即按下时,74LS148的 此时由于仍为1Q=1,使 =1,所以74LS148仍处于禁止状态,确保不会出二次按键时输入信号,保证了抢答者的优先性。如有再次抢答需由主持人将S开关重新置“清除”然后再进行下一轮抢答。74LS148为8线-3线优先编码器,表1为其功能表。

表1 74LS148的功能真值表

由节目主持人根据抢答题的难易程度,设定一次抢答的时间,通过预置时间电路对计数器进行预置,计数器的时钟脉冲由秒脉冲电路提供。可预置时间的电路选用十进制同步加减计数器74LS192进行设计,具体电路如图3所示。表2为74192的真值表。

(3)报警电路

由555定时器和三极管构成的报警电路如图4所示。其中555构成多谐振荡器,振荡频率fo=1.43/[(RI+2R2)C],其输出信号经三极管推动扬声器。PR为控制信号,当PR为高电平时,多谐振荡器工作,反之,电路停振。

4)时序控制电路

时序控制电路是抢答器设计的关键,它要完成以下三项功能:

①主持人将控制开关拨到“开始”位置时,扬声器发声,抢答电路和定时电路进入正常抢答工作状态。②当参赛选手按动抢答键时,扬声器发声,抢答电路和定时电路停止工作。

③当设定的抢答时间到,无人抢答时,扬声器发声,同时抢答电路和定时电路停止工作。

根据上面的功能要求以及图 2,设计的时序控制电路如图 5所示。图中,门G1 的作用是控制时钟信号CP的放行与禁止,门G2的作用是控制74LS148的输人使能端。图11、4的工作原理是:主持人控制开关从“清除”位置拨到“开始”位置时,来自于图11、2中的74LS279的输出 1Q=0,经G3反相,A=1,则时钟信号CP能够加到74LS192的CPD时钟输入端,定时电路进行递减计时。同时,在定时时间未到时,则“定时到信号”为 1,门G2的输出 =0,使 74LS148处于正常工作状态,从而实现功能①的要求。当选手在定时时间内按动抢答键时,1Q=1,经 G3反相,A=0,封锁 CP信号,定时器处于保持工作状态;同时,门G2的输出 =1,74LS148处于禁止工作状态,从而实现功能②的要求。当定时时间到时,则“定时到信号”为0,=1,74LS148处于禁止工作状态,禁止选手进行抢答。同时,门G1处于关门状态,封锁 CP信号,使定时电路保持00状态不变,从而实现功能③的要求。集成单稳触发器74LS121用于控制报警电路及发声的时间。

六、系统的组装与调试及测试方法:

3块实验电路板分别做成数字抢答器电路、可预置时间的定时电路、报警电路及时序控制电路,根据EWB仿真电路及工程上的可操作性布置芯片、元件、导线等。

在焊接过程中,由于经验不足多次发生虚焊或者相邻焊点接触导致短路等事故,心急时也有小组成员被电烙铁烫伤的事发生。

制作的第一块板即数字抢答电路板一开始测试时不能工作,又由于没有稳压电源而不能检验。情急之下,灵机一动,把3节干电池制成4.5伏电压源,又用万用表逐点排查,原来有虚焊的点。找出原因后并排斥故障后,电路板正常工作。深感欣慰!

制作第2块板即可预置时间的定时电路时,3位成员都已有了自我感觉十分娴熟的焊接技术,不料忙中出错,重蹈覆辙,又有虚焊点。遂相互提醒,前事不忘,后事之师。

七、EWB仿真图:

由于EWB中没有74LS121,并且没有可以代替的74LS221,故时序控制电路的仿真无法完成。

八、仪器: 1.数字实验箱。

2.集成电路74LS148 1片,74LS279 1片,74LS48 3片,74LS192 2片,NE555 2片,74LS00 1片,74LS121 1片。

3.电阻 510Ω 2只,1KΩ 9只,4.7kΩ l只,5.1kΩ l只,100kΩ l只,10kΩ 1只,15kΩ 1只,68kΩ l只。

4.电容 0.1uF 1只,10uf 2只,100uf 1只。5.三极管 3DG12 1只。

6.其它:发光二极管2只,共阴极显示器3只。

九、扩展功能:

1、可以设计声控装置,在主持人说开始时,系统自动完成清零并开始计时的功能。

2、在主持人读题的过程中,禁止抢答,可以在主持人控制的开关上另接一个与图2一样的电路,即可实现“违规者可见”的功能,即在主持人读题时如果有人违反比赛规定抢先按动按钮,显示器可以显示是哪个参赛队抢先,便于作出相应的处理。

如果提供相应的器材及时间上的宽限,我想我们已定可以完成上述扩展功能,进一步完善我们的作品。

十、心得体会:

经历数星期的电子竞赛眼看尘埃落定,感觉忍不住要长出一口气。我们组的3位成员除学习外均有一定的日常工作,数日来,为了这个竞赛可谓废寝忘食,在实验室里日出而作,日落不息。将所有的课余时间均奉献给了这个比赛。

结果怎样已然不再重要,在这几日里,我们经历了阶段性成功的狂喜、测试失败后的绝望、陷入困境时的不知所措,重新投入的振作。这样的比赛是无法孤军作战的,只有通力合作才有可能成功。3位成员在数日里的朝夕相伴中培养出了无与伦比的默契和深厚的友谊。

由于前几次去实验室比较晚,结果没有空余的电脑可供使用,我们商量后,决定早上6点到实验室。于是,在零下的温度下,我们陆续到达。途中数次感叹,早晨的空气真好。

除此之外,我们学会了焊接电路板,掌握了书本以外的电子技术知识,培养了专心致志的工作学习习惯,懂得了相互之间的理解与体谅,可谓获益匪浅。

如果非要用一句话来概括我们的体会的话,那只能是:痛并快乐着。

十一、致谢:

感谢电气工程学院提供者次比赛的机会;感谢长通公司提供电子器件;感谢电子实习基地提供场所及工具;感谢电子信息系主任王建元老师在我们陷入困境时的点拨;感谢我队指导于建立同学对我们的切实指导;感谢02级学长学姐们在实验室对我们的帮助与鼓励。

十二、参考文献:

1、《电子技术基础.数字部分(第四版)》

高等教育出版社2003年3月 主编:康华光

2、《74系列芯片手册》

重庆大学出版社 1999年9月 主编:李海

图11、1数字抢答器框图

表10、1

11、2 数字抢答器电路

74LS148的功能真值表

2)定时电路

图11、3 可预置时间的定时电路

图11、4 报警电路

图 11、5 时序控制电路

第四篇:单片机课设_AT89C51八路抢答器

《单片机原理及应用》

课程设计

题 目∶

院 系∶ 专业班级∶ 姓 名∶ 学 号∶ 指导教师∶ 成 绩∶

流水灯 机电工程系 机电一体化机电0911

晓寒 21 沈全鹏

2011年 12 月 日

单片机课程设计任务书

1.课题名称

抢答器设计 2.设计目的

1. 进一步理解和掌握单片机理论课程知识,加强对专业知识的合运用;

2. 学会熟练使用单片机编程工具软件及单片机软件编程; 3. 学习单片机小系统的硬件设计及PCB布线。4. 学会如何整理资料,划分模块,提高自己的编程技巧;3.设计思路

a.了解抢答器的工作方式; b.单片机按键输入的设计;

c.单片机驱动发光二极管显示及数码管的动态扫描工作方式; d.延时子程序设计; e.定时器的应用; 4.设计要求

1.在本设计中要求设计一个八组单片机控制的抢答器模拟器; 2.要求由两个LED(红绿)指示抢答成功或失败; 3.要求由1位数码管显示抢答成功(或失败)的组; 4.发挥部分:剩余时间显示,各组积分显示; 5.课程设计结束后,要求交设计心得,课程设计报告;

目录

第一章 概述 ………………………………………………………………

第二章 八路抢答器设计方案及选取 …………………… 2

2.1电路设计方案一 ………………………………………… 2 2.2电路设计方案二 ………………………………………… 2 2.3电路设计方案的选取 …………………………………… 2 第三章 电路设计原理及硬件设计 …………………………

3.1单片机最小系统的原理 ………………………………… 3 3.2八路抢答器工作原理 ………………………………… 4 3.3控制系统及所需元件 …………………………………

第四章 软件系统设计及仿真 ……………………………… 7

4.1软件系统设计 …………………………………………… 7 4.2电路仿真 ………………………………………………… 8

第五章 电路板制作与调试 ……………………………………

5.1电路板制作 ……………………………………………… 9 5.2电路调试 ………………………………………………… 9 第六章 心得体会 ………………………………………………

第七章 参考文献 ……………………………………………

鸣谢

………………………………………………………………

附录一 源程序……………………………………………………

2 第一章 概述

《单片机原理及应用技术》是一门技术性,应用性、实践性很强的学科。课程设计是学好本门课程的又一重要实践性教学环节,课程设计的目的和任务就是配合单片机的教学和平时实验,以达到巩固消化课程的内容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,启发创新思维,使之具有独立单片机产品和科研的基本技能,是以培养学生综合运用所学知识的过程,是知识转化为能力和能力转化为工程素质的重要阶段。在实际生活中有好多地方都用到了单片机,因此学习好这门课程有着十分重要的意义。

在本设计中要求设计一个八组单片机控制的抢答器模拟器;要求由两个LED(红绿)指示抢答成功或失败;要求由1位数码管显示抢答成功(或失败)的组;发挥部分:剩余时间显示,各组积分显示;

1)控制系统主要由单片机应用电路、存储器接口电路、显示接口电路组成。其中单片机AT89C51是系统工作的核心,它主要负责控制各个部分协调工作.2)硬件组成及所需元件:该系统的核心器件是AT89C51。在其外围接上复位电路、上拉电阻、数码管、按钮及扬声器(没有驱动器,所以就没有用扬声器了)。元件为:晶振X1、电容C1、C2、C3、电阻RP1。P3.0和P3.1由裁判控制,分别是抢答开始和停止键。P1.0-P1.7是8组抢答的输入口, P2.0--P2.3口为数码管的段选口,位选口用的是P0.0--P0.6口输出,外部中断0、1实现的对个队进行计时,P3.6为蜂鸣器的控制口。

控制系统防真用到了protuse软件,用keil软件与protuce软件级联可以进行模拟调试,既可以检测方案的正确性,又可以避免实物多次调试。Keil集成调试环境,集成了编缉器、编译器、调试器,支持软件模拟,支持项目管理功能强大的观察窗口,支持所有的数据类型。支持ASM(汇编)、C语言,多语言多模块源程序混合调试,在线直接修改、编译、调试源程序,错误指令定位。功能很强大。可通过仿真可以完全显示出所设计系统的功能,对于程序的调试等有很大的帮助.第二章 八路抢答器设计方案及选取

2.1电路设计方案一: 系统各部分采用中小规模集成数字电路,用机械开关按钮作为控制开关,完成抢答输入信号的触发。该方案的特点是中小规模集成电路应用技术成熟,性能可靠,能方便地完成选手抢答的基本功能,但是由于系统功能要求较高,所以电路连接集成电路相对较多,而且过于复杂,并且制作过程工序比较烦琐,使用不太方便。

2.2电路设计方案二: 该系统采用MCS-51系列单片机AT89S51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改性。CS-51单片机特点如下: 可靠性好:单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以烧写在ROM许多信号通道都在同一芯片,因此可靠性高。易扩充:单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统 控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。

2.3电路设计方案的选取:

方案比较及其选用依据,显然方案二比方案一简单的多,不但从性能上优于方案一,而且在使用上及其功能的实现上都较方案一简洁,并且由于单片机具有优越的高集成电路性,使其工作速度更快、效率更高。另外AT89S51单片机采用12MHz的晶振,提高了信号的测量精度,并且使该系统可以通过软件改进来扩张功能。而方案一采用了中小规模集成电路,有其复杂的电路性能,从而可能会使信号的输入输出产生延时及不必要的误差。依此依据选择方案二比较适合。第三章 电路设计原理及硬件设计

3.1单片机最小系统的原理

本课题采用了单片机最小系统来实现八路抢答器,下面是单片机最小系统的原理。单片机的主要功能是负责整个系统的控制,不承担复杂的数据处理任务,因此在设计单片机最小系统时通常选用AT89C5l、AT89C52、AT89S51、AT89S52(S系列芯片支持ISP功能)等型号的8位单片机作为MCU。本单片机最小系统采用的是AT89S51。

一个典型的单片机最小系统一般由时钟电路、复位电路、片外RAM、片外ROM、按键、数码管、液晶显示器、外部扩展接口等部分组成,图3-1、图3-2分别给出了单片机最小系统的结构框图、原理图。

图3-1 单片机最小系统的结构框图

图3-2单片机最小系统的原理图

3.2八路抢答器工作原理

智力竞赛抢答器用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成, 采用单片机AT89C51,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。该智力竞赛抢答器的准确度很高,其误差主要由晶振自身的误差所造成。

AT89C51单片机由微处理器,存储器,I/O口以及特殊功能寄存器SFR等部分构成。其存储器在物理上设计成程序存储器和数据存储器两个独立的空间,片内程序存储器的容量为4KB,片内数据存储器为128个字节。89C51单片机有4个8位的并行I/O口:P0口,P1口,P2口和P3口。各个接口均由接口锁存器,输出驱动器,和输入缓冲器组成。P1口是唯一的单功能口,仅能用作通用的数据输入/输出口。P3口是双功能口除了具有数据输入/输出功能外,每条接口还具有不同的第二功能,如P3.0是串行输入口线,P3.1口是串行输出口线。在需要外部程序存储器和数据存储器扩展时,P0可作为分时复用的低8位地址/数据总线,P2口可作为高8位的地址总线。P3口也可作为AT89C51的一些特殊功能口,同时为闪烁编程和编程校验接收一些控制信号。3.3控制系统及所需元件

控制系统主要由单片机应用电路、存储器接口电路、显示接口电路组成。其中单片机AT89C51是系统工作的核心,它主要负责控制各个部分协调工作.所需元件:该系统的核心器件是AT89C51。在其外围接上复位电路、上拉电阻、数码管、按钮及扬声器。元件为:晶振X1、电容C1、C2、C3、电阻RP1、P3.0和P3.1由裁判控制,分别是抢答开始和停止键。P1.0-P1.7是8组抢答的输入口, P2.0--P2.3口为数码管的段选口,位选口用的是P0.0--P0.6口输出, P3.6为蜂鸣器的控制口。

AT89C51的管脚图如下图3-3所示:

图3-3 AT89c51的管脚图

外部振荡电路单片机必须在AT89C51的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元。外部振荡电路见图3-4所示:

图3-4外部振荡电路 外部中断和内部中断并存,单片机有硬件复位端,只要输入持续4个机器周期的高电平即可实现复位。硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值,应为本设计功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位。只能用软复位。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程。复位电路采用图3-5所示:

图3-5复位电路

采用七段码7SEG-MPX4-CC 显示,它是共阴极的由高电平点亮。图形如下图3-6所示。:

图3.6 共阴极

采用八个BUTTON按钮作为抢答的选择按键如图3-7所示:

图3-7八个BUTTON按钮

第四章 软件系统设计及仿真

4.1软件系统设计

智力竞赛抢答器要求有计时记忆功能,一次时间设置完, 复位后不需重新进行时间设定,通过键盘扫描输出按键信息,再通过单片机将它转换成能在七段数码管上显示字型码.当抢答完毕时,会在数码管上显示抢答者数字号码提示以表示抢答成功.同时显示其分数,分数的加减可由裁判手动进行.采用独立式键盘,可实现8路抢答.在显示时使用的是七段数码管显示在本设计中根据实际情况采用的是动态显示方法.并通过查表法 将其在数码管上显示出来,其中P1口为字型码输入端,P2口低6位为字选段输入端.通过查表将字型码送给7段数码管显示的数字。软件去抖动,如果“开始键”按下就向下执行,否者跳到开始。采用倒计时程序,使其具有倒计时功能。回答倒计时30秒。抢答时间5秒。采用发声警报(缺少驱动器,所以没有用扬声器了),起到报警作用。

1、如果想调节抢答时间或答题时间,按“抢答时间调节”键或“答题时间调节”键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,主持人按“抢答开始”键,会有提示音,并立刻进入抢答倒计时(预设30s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设30s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。数码管上只显示第一个抢答的选手号,倒数时间到小于5s会每秒响一下提示音。如倒计时期间,主持人想停止倒计时可以随时按“停止”按键,系统会自动进入准备状态,等待主持人按“抢答开始”进入下次抢答计时。下次抢答是先按复位键。

4、如果主持人未按“抢答开始”键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下“停止” 键为止。

5、P3.0为开始抢答,P3.1为停止,p1.0-p1.7为八路抢答输入 数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。P3.6为蜂鸣器的控制口。八路抢答器的源程序见附录1.7 4.2 电路仿真

利用keil软件编写源程序,其源程序见附录1,在protues中画好其总电路图如下图4.1所示::

图4-1 八路抢答器总电路图

把keil软件中的源程序生成可执行文件,下载到protuce中进行仿真,调试。其选手没有抢答时的状态如下图4-2所示:

图4-2 选手准备抢答时的显示图

6号选手抢答成功如下图4-3所示:

图4-3 6号选手抢答成功显示

第五章 电路板制作与调试

5.1电路板制作:

单片机最小系统的PCB图如下图4-1所示:

图4-1单片机最小系统的PCB图

将打印好PCB的转印纸平铺在覆铜板上,准备转印。再用电熨斗加温(要很热)将转印纸上黑色塑料粉压在覆铜板上形成高精度的抗腐层。准备好三氯化铁溶液进行腐蚀。腐蚀好后进行焊接。清理出焊盘部分,剩下的部分用于阻焊,安装所需预定原件并焊接好。然后进行调试。

5.2电路调试

5.2.1总结调试的原则和方法(1)通电观察 把经过准确测量的电源接入电路。观察有无异常现象,包括有无元件发热,甚至冒烟有异味电源是否有短路现象等;如有此现象,应立即断电源,待排除故障后才能通电。(2)静态调试

交流和直流并存是电子电路工作的一个重要组成部分。一般情况下,直流为交流服务,直流是电路工作的基础。因此,电子电路的调试有静态和动态调试之分。静态调试过程:如,通过静态测试模拟电路的静态工作点,数字电路和各输入端和输出端的高低电平值及逻辑关系等,可以及时发现已损坏的元器件,判断电路工作情况,并及时调整电路参数,使电路工作状态符合设计要求。(3)动态调试

调试的方法是在电路的输入端接入适当频率和幅值的信号,并循着信号流向来检测各有关点的波形,参数和性能指标。发现故障应采取各种方法来排除。通过调试,最后检查功能块和整机的各种指标是否满足设计要求,如必要再进一步对电路参数提出合理的修正。5.2.2调试中注意的事项

我们在调试时,为了保证效果,必须尽量减小测量误差,提高测量精度。调试结果是否正确,很大程度受测量正确与否和测量精度的影响。为此,需注意以下几点:

(1)正确使用测量仪器的接地端。

(2)测量电压所用仪器的输入端阻抗必须远大于被测处的等效阻抗。因为,若测量仪器输入阻抗小,则在测量时会引起分流给测量结果带来很大误差。(3)要正确选择测量点,用同一台测量仪进行测量进,测量点不同,仪器内阻引起的误差大小将不同。

(4)调试过程中,不但要认真观察和测量,还要于记录。记录的内容包括实验条件,观察的现象。只有有了大量的可靠实验记录并与理论结果加以比较,才能发现电路设计上的问题,完善设计方案。

(5)调试时出现故障,要认真查找故障原因,切不可一遇故障解决不了的问题就拆掉线路重新安装。因为重新安装的线路仍可能存在各种问题。我们应该认真检查.第六章 心得体会

单片机课程设计是一门很实用,很难的设计。这次课程设计历时二个星期多左右,通过这两个星期的学习,发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。

这次的课程设计也让我看到了团队的力量,我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。刚开始的时候,大家就分配好了各自的任务,大家有的绘制原理图,进行仿真实验,有的积极查询相关资料,并且经常聚在一起讨论各个方案的可行性。在课程设计中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。团结协作是我们成功的一项非常重要的保证。而这次设计也正好锻炼我们这一点,这也是非常宝贵的。

在这个过程中,我也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。虽然这只是一次的极简单的课程制作(八路抢答器),可是平心而论,也耗费了我们不少的心血,这就让我不得不佩服专门搞单片机开发的技术前辈,才意识到老一辈对我们社会的付出,为了人们的生活更美好,他们为我们社会所付出多少心血啊!但当课程设计完成时,那感觉是甜蜜的,没有耕耘,哪来得收获的喜悦,不懂付出怎么能知道回报的快乐,一分耕耘一分收获,有付出才会有回报,就在这样的痛与快乐的交换中,我学到了知识,学到了做人的道理。

这次的课程设计,让我学到了很多书本上学不到的东西,学到了实际应用时,是取用成本的最小化,做设计不仅要考虑大的方面,小的方面也必须做到完美。最大的收获是:对键盘,显示器,C51语言(虽然最后还是用汇编语言编写的,但是,我也试着学用了C51)的应用有了深刻的了解。还有学会了团队合作精神。

第七章 参考文献

[1]谢自美.电子线路设计.华中科技大学出版社, 2005-08.[2]曹才开,电工电子实训教程.清华大学出版社,1998.[3] 余发山,单片机原理及应用技术.中国矿业大学出版社,2002.[4] 张淑清,单片微型计算机接口技术及其应用.国防工业出版社,2002.[5]李光飞,单片机课程设计实例指导,北京航空航天大学出版社,2001.鸣谢

在这三个星期的课程设计中,感谢老师的细心指导;感谢实验室老师的鼎力支持;感谢同学们的热心帮助;感谢湖南工学院。因为有了你们的帮助,才使我们圆满的完成了这次课程设计。附录1 源程序

OK EQU 20H;抢答开始标志位 RING EQU 22H;响铃标志位 ORG 0000H AJMP MAIN ORG 000BH AJMP TT0 ORG 001BH AJMP TT1 ORG 0040H;避开中断向量区

MAIN: MOV R1,#30;初设抢答时间为30s MOV TMOD,#11H;设置定时器/方式1 MOV TH0,#0F0H MOV TL0,#0FFH;越高发声频率越高,越尖 MOV TH1,#3CH MOV TL1,#0B0H;50ms为一次溢出中断/F=12MHz SETB EA SETB ET0 SETB ET1;允许2个中断,T0/T1 CLR OK CLR RING SETB TR1 SETB TR0;一开始就运行定时器,以开始显示PPP.如果想重新计数,重置TH1/TL1就可以了;=====查询程序===== START: MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY;未开始抢答时候显示PPP JB P3.0,FEIFA;ACALL DELAY JB P3.0,FEIFA;去抖动,如果“开始键”按下就向下执行,否者跳到非法抢答查询

ACALL BARK;按键发声 MOV A,R1 MOV R6,A;送R1->R6,因为R1中保存了抢答时间

SETB OK;抢答标志位,用于COUNT子程序中判断是否查询抢答 MOV R3,#0AH;抢答只显示计时,灭号数

AJMP COUNT;进入倒计时程序,“查询有效抢答的程序”在COUNT里面 FEIFA: JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,FALSE3 JNB P1.3,FALSE4 JNB P1.4,FALSE5 JNB P1.5,FALSE6 JNB P1.6,FALSE7 JNB P1.7,FALSE8 AJMP START;=====非法抢答处理程序===== FALSE1: ACALL BARK;按键发声 MOV R3,#01H AJMP ERROR FALSE2: ACALL BARK MOV R3,#02H AJMP ERROR FALSE3: ACALL BARK MOV R3,#03H AJMP ERROR FALSE4: ACALL BARK MOV R3,#04H AJMP ERROR FALSE5: ACALL BARK MOV R3,#05H AJMP ERROR FALSE6: ACALL BARK MOV R3,#06H AJMP ERROR FALSE7: ACALL BARK MOV R3,#07H AJMP ERROR FALSE8: ACALL BARK MOV R3,#08H AJMP ERROR;=====倒计时程序(抢答倒计时跳到改程序)===== COUNT: MOV R0,#00H;重置定时器中断次数 MOV TH1,#3CH MOV TL1,#0B0H;重置定时器

RECOUNT: MOV A,R6;R6保存了倒计时的时间,之前先将抢答时间给R6 MOV B,#0AH DIV AB;除十分出个位/十位 MOV 30H,A;十位存于(30H)MOV 31H,B;个位存于(31H)MOV R5,30H;取十位 MOV R4,31H;取个位 MOV A,R6 SUBB A,#016H JNC LARGER;大于10s跳到LARGER/小于等于10s会提醒 MOV A,R0 CJNE A,#0AH,FULL;1s中0.5s向下运行 CLR RING AJMP CHECK FULL: CJNE A,#14H,CHECK;下面是1s的情况,响并显示号数并清R0,重新计数

SETB RING MOV A,R6 JZ QUIT;计时完毕 MOV R0,#00H DEC R6;一秒标志减1 AJMP CHECK LARGER: MOV A,R0 CJNE A,#14H,CHECK;如果1s向下运行,否者跳到查“停/显示” DEC R6;计时一秒R6自动减1 MOV R0,#00H CHECK: JNB P3.1,QUIT;如按下停止键退出 ACALL DISPLAY JB OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)AJMP RECOUNT ACCOUT: JNB P1.0,TRUE1 JNB P1.1,TRUE2 JNB P1.2,TRUE3 JNB P1.3,TRUE4 JNB P1.4,TRUE5 JNB P1.5,TRUE6 JNB P1.6,TRUE7 JNB P1.7,TRUE8 AJMP RECOUNT QUIT: CLR OK;如果按下了“停止键”执行的程序 CLR RING

ACALL BARK AJMP START;=====正常抢答处理程序===== TRUE1: ACALL BARK;按键发声 MOV R3,#01H CLR OK;因为答题的计时不再查询抢答,所以就锁了抢答 AJMP COUNT TRUE2: ACALL BARK;MOV R3,#02H CLR OK AJMP COUNT TRUE3: ACALL BARK;MOV R3,#03H CLR OK AJMP COUNT TRUE4: ACALL BARK;MOV R3,#04H CLR OK AJMP COUNT TRUE5: ACALL BARK;MOV R3,#05H CLR OK AJMP COUNT TRUE6: ACALL BARK;MOV R3,#06H CLR OK AJMP COUNT TRUE7: ACALL BARK;MOV R3,#07H CLR OK AJMP COUNT TRUE8: ACALL BARK;MOV R3,#08H CLR OK AJMP COUNT;=====犯规抢答程序===== ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3;犯规号数暂存与(34H)HERE: MOV A,R0 CJNE A,#0AH,FLASH;0.5s向下运行->灭并停响

CLR RING

MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH;三灯全灭 AJMP CHECK1 FLASH: CJNE A,#14H,CHECK1;下面是1s的情况,响并显示号数并清R0,重新计 SETB RING MOV R0,#00H MOV R3,34H;取回号数 MOV R5,#0BH MOV R4,#0BH;显示pp和号数 AJMP CHECK1 CHECK1: JNB P3.1,QUIT1 ACALL DISPLAY AJMP HERE QUIT1: CLR RING CLR OK AJMP START;=====显示程序===== DISPLAY: MOV DPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出, MOV A,R3 MOVC A,@A+DPTR MOV P2,#0feH MOV P0,A ACALL DELAY MOV DPTR,#DAT2 MOV A,R5 MOVC A,@A+DPTR MOV P2,#0fdH MOV P0,A ACALL DELAY MOV A,R4 MOVC A,@A+DPTR MOV P2,#0fbH MOV P0,A ACALL DELAY RET DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H;“灭”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“灭”,“p” DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H;第一个为零,其他与上相同,因为十位如果为零显示熄灭;=====报警延时====== DELAY1: MOV 35H,#08H LOOP0: ACALL DISPLAY DJNZ 35H,LOOP0 RET;=====延时(显示和去抖动用到)===== DELAY: MOV 32H,#12H LOOP: MOV 33H,#0AFH LOOP1: DJNZ 33H,LOOP1 DJNZ 32H,LOOP RET;=====发声程序===== BARK: SETB RING ACALL DELAY1 ACALL DELAY1 CLR RING;按键发声 RET;=====TO溢出中断(响铃程序)===== TT0: MOV TH0,#0ECH MOV TL0,#0FFH JNB RING,OUT;CPL P3.6;RING标志位为1时候P3.6口不断取反使喇叭发出一定频率的声音

OUT: RETI;=====T1溢出中断(计时程序)===== TT1: MOV TH1,#3CH MOV TL1,#0B0H INC R0 RETI END 18

第五篇:51单片机四路抢答器程序

#include sbit key1=P3^0;sbit key2=P3^1;sbit key3=P3^2;sbit key4=P3^3;sbit key5=P3^7;sbit BEEP=P2^0;unsigned char temp;unsigned char pulse_number1=9;unsigned char code TAB[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delay_100ms(unsigned int t){ unsigned char i,j,k;for(i=t;i>0;i--){

for(j=200;j>0;j--);

{

for(k=248;k>0;k--);

} } } void beep(){

BEEP=1;

delay_100ms(100);

BEEP=0;

}

void T0_int()interrupt 1

{

static unsigned char count;unsigned char a=1;count++;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;if(count==20){

count=0;

P0=TAB[pulse_number1--];

}

beep();

if(pulse_number1==0)

{

P0=TAB[0];

TR0=0;

while(a)

{ beep();if(!key5)a=0;

}

}

}

void main(){

bit flag;

temp=0x00;

P2=temp;

P0=0x3f;

TMOD=0x01;

TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1;EA=1;

TR0=1;

while(!flag)

{

}

while(flag);}

if(!key1){P0=0x06;beep();flag=1;TR0=0;}

else if(!key2){P0=0x5b;beep();flag=1;TR0=0;} else if(!key3){P0=0X4f;beep();flag=1;TR0=0;} else if(!key4){P0=0x66;beep();flag=1;TR0=0;}

下载基于51单片机的抢答器设计[最终定稿]word格式文档
下载基于51单片机的抢答器设计[最终定稿].doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    单片机课设--八路抢答器(5篇可选)

    河南理工大学本科课程设计 智力竞赛抢答器 摘要 设计要求:1) 能容许2-8组进行抢答。2) 能显示抢答组号。3) 各组记分,并能记分显示。4) 比赛结束时,能发出报警声。 硬件系统设计......

    单片机课程设计 智力抢答器摘要范文大全

    摘要 硬件系统设计 1)控制系统主要由单片机应用电路、存储器接口电路、显示接口电路组成。其中单片机AT89C51是系统工作的核心,它主要负责控制各个部分协调工作. 2)硬件组成及......

    单片机课程设计(基于多路数字抢答器)(范文)

    一、概述 大学四年的学习生活中,会遇到各种各样的竞赛,抢答器便成为了主要的工具之一。而现在的抢答器智能化越来越强,这必然会提高抢答器的成本。本抢答器与其他抢答器电路相......

    基于Freescale HCS12系列单片机设计和实现抢答器外文翻译

    外文资料原文 Design and Implement of Responder Based on Freescale HCS12 Single Chip Microcomputer Responder is also known as the first signal discriminator, whi......

    4路抢答器设计程序

    #include unsigned char code table={0xc0,0xf9,0xa4,0xb0, //0~f显示表 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; unsigned char code tab......

    FPGA抢答器设计报告

    Vb开办上海电力学院 课程设计报告 信息工程系 抢答器设计报告 一、 设计目的: 本课程的授课对象是电子科学与技术专业本科生,是电子类专业的一门重要的实践课程,是理论与实践相......

    74LS148四路抢答器设计报告

    目录1.设计任务和要求…………………………………….3 2.设计方案…………………………………………….3 2.1 设计思路………………………………………3 2.2 设计原理………......

    基于aduino的抢答器设计

    /*QIANG DA QI disigned by ckj2012/12/8*/ int d[4]={7,12,2,6};//shuju boolean ds[4]={0,0,0,0};//si ge jie kou de shujuint lt=3;//ceshi shuruduan int bi=4;//xiaoy......