2016届课程论文
《单片机原理及应用》
课程设计
《八路抢答器》
学生姓名 王佳
学 号
所属学院 信息工程学院
专 业 计算机科学与技术
班 级 16-4班
指导教师 孟洪兵
塔里木大学教务处
目录
摘要 ..................................................... 1
第一章 绪论 .............................................. 1
1.1 课题研究的相关背景 .............................. 1
1.2 选题的目的和意义 ................................ 1
1.3 设计步骤 .......................................... 2
1.4 实现的功能 ........................................ 2
第二章 实验设计原理 ...................................... 2
第三章 方案设计 .......................................... 3
3.1 元件介绍 .......................................... 3
3.1.1 AT89C51 ..................................... 3
3.1.2 74HC573 ..................................... 3
3.2仿真图 ............................................ 4
第四章 实物图 ............................................ 5
总结 ..................................................... 7
参考文献 ................................................ 7
附录 ..................................................... 8
源程序 ................................................ 8
摘要
抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的
使用频率较低,且有的要么制作复杂,要么可靠性低。作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。 本设计是以八路抢答为基本理念。考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。
关键字:单片机 八路抢答器 AT80C51
第一章 绪论
1.1 课题研究的相关背景
抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。早期的抢答器只由几个三极管、可控硅、发光管等组成,能通过发光管的指示辩认出选手号码。现在大多数抢答器均使用单片机(如MCS-51型)和数字集成电路,并增加了许多新功能,如选手号码显示、抢答时间的显示以及最后几秒钟的报警等等。 本课题利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和选手号码。用开关做键盘输出,扬声器发声提示。系统达到要求:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间30s;可以显示是哪位选手有效抢答,时间完后系统自动复位;按键锁定,在有效状态下,按键无效非法。
1.2 选题的目的和意义
在现在的科技水平下,促使人们学科学、学技术、学知识的手段多种多样,抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的使用频率校低,且有的要么制作复杂,要么可靠性低,减少兴致。作为一个单位若专购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展。 而且目前多数抢答器存在以下3个不足之处:第一,现场线路连接复杂。因为每个选手位于抢答现场的不同位置,每个选手与控制台之间要有长长的连接线。选手越多,连接线就越多、越乱,这些连接线不仅影响了现场的美观,而 且降低了抢答器的可靠性,增加了安装的难度,甚至影响了现场人员的走动。第二,电路
复杂。因为单片机只完成号码处理、计时、数据运算等功能,其它功能如选手号码的识别、译码、计分显示等仍只能通过数字集成电路完成。采用单片机扫描技术识别选手抢按号码时,电路的延迟时间较大。第三,选手抢按成功,但出现没有抢答被记录的问题。 鉴于上述原因和不足,设计了这个抢答器,主要是掌握51单片机的原理,了解简单多功能抢答器组成原理,初步掌握多功能抢答器的调整及测试方法,提高动手能力和排除故障的能力。同时通过本课题设计与装配、调试,提高自己的动手能力,巩固已学的理论知识,建立单片机理论和实践的结合,了解多功能抢答器各单元电路之间的关系及相互影响,从而能正确设计、计算定时计数的各个单元电路。初步掌握多功能抢答器的调整及测试方法。提高动手能力和排除故障的能力。
1.3 设计步骤
(1) 设计一个八路抢答器
(2) 设置一个系统清除和抢答控制开关S,该开关由主持人控制
(3) 抢答器具有锁存与显示功能,选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时亮红灯。其他选手无法抢答。优先抢答选手的编号一直保持到主持人将系统清除为止。
1.4 实现的功能
(1) 必须有主持人按钮,当主持人按下按钮,开始30秒倒计时,这30秒内即是八位选手抢答的时长,若30秒内无人抢答,则视为所有选手弃权。
(2) 倘若主持人按下开始的30秒内有人抢答,则倒计时从10秒开始,同时在一屏幕上显示该抢答选手号码,若10秒内无法回答,则该选手视为题目回答错误,选手号码清零。
第二章 实验设计原理
1.准备工具:AT89C51单片机,一片74HC573锁存器芯片,三块单个的共阴数码管,两个十千欧的上拉排阻,红、黄、绿发光二极管各一支。
2.完成实验硬件部分后,软件部分用到了单片机定时器0和定时器1;其中定时器0负责倒计时30秒,定时器1负责倒计时10秒,两个单个的七段共阴数码管来显示倒计时秒钟。
3.单个的数码管用来显示选手号码1~8,由8个选手按键决定选手号码的显示。
4.初始化中选手号码显示0,倒计时秒钟无显示,定时器0和定时器1关中断。
5.主持人按下开始键,定时器0开中断,进行30秒倒计时,当中选手按键按下,定时器0关中断同时定时器1开中断,进行10秒倒计时,选手号码显示在单个数码管上。
6.倒计时中按下复位键,即相当于主持人按键重新开始30秒倒计时抢答。
该电路完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编
号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。如有再次抢答需由主持人将S开关重新置,“清除”然后再进行下一次抢答。
第三章 方案设计
3.1 元件介绍
3.1.1 AT89C51
AT89C51单片机是ATMAL公司89系列单片机的一种8位Flash单片机。它最大特点是片内含有Flash存储器,用途十分广泛,特别是在生产便携式商品手提式仪器等方面,有着十分广泛的应用。
AT89C51单片机内部主要有以下部件:8031CPU、振荡电路、总线控制部件、中断控制部件、片内Flash存储器、片内RAM、并行I/O接口、定时器和串行I/O接口 AT89C51是89系列单片机的标准型,它是与MSC-51系列单片机兼容的。在内部含有4KB可重复编程的Flash存储器,可进行1000次擦写操作。全静态工作为0-24MHZ,有3级程序锁存器,内部含有128-256字节的RAM,有32条可编程I/O口线,2-3个16位定时/计数器,6-8个中断源,通用的串行接口,低电压空闲及电源下降方式。
3.1.2 74HC573
74HC573包含八进制3态非反转透明锁存器,SL74HC573跟LS/AL573的管脚一样。器件的输入是和标准CMOS输出兼容的,加上拉电阻他们能和LS/ALSTTL输出兼容。当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。 输出能直接接到CMOS,NMOS 和TTL 接口上。
操作电压范围:2.0V~6.0V
低输入电流:1.0uA
CMOS 器件的高噪声抵抗特性
特点:
·三态总线驱动输出
·置数全并行存取
·缓冲控制输入
·使能输入有改善抗扰度的滞后作用
原理说明:
74HC573的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时, 新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,I/O 通道,双向总线驱动器和工作寄存器。
3.2仿真图
图1 仿真图
第四章
实物图
图2 实物运行图
图3 实物连接图
总结
设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。下面我对整个设计的过程做一下简单的总结。第一,接到任务以后进行选题。选题是设计的开端,选择恰当的、感兴趣的题目,这对于整个设计是否能够顺利进行关系极大。好比走路,这开始的第一步是具有决定意义的,第一步迈向何方,需要慎重考虑。否则,就可能走许多弯路、费许多周折,甚至南辕北辙,难以到达目的地。因此,选;题时一定要考虑好了。第二,题目确定后就是找资料了。查资料是做设计的前期准备工作,好的开端就相当于成功了一半,到图书馆、书店、资料室去虽说是比较原始的方式,但也有可取之处的。总之,不管通过哪种方式查的资料都是有利用价值的,要一一记录下来以备后用。第三,通过上面的过程,已经积累了不少资料,对所选的题目也大概有了一些了解,这一步就是在这样一个基础上,综合已有的资料来更透彻的分析题目。第四,有了研究方向,就应该动手实现了。其实以前的三步都是为这一步作的铺垫。通过这次设计,我对数字电路设计中的逻辑关系等有了一定的认识,对以前学的数字电路又有了一定的新认识,温习了以前学的知识,就像人们常说的温故而知新嘛,但在设计的过程中,遇到了很多的问题,有一些知识都已经不太清楚了,但是通过一些资料又重新的温习了一下数字电路部分的内容。在这次设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法我们更好的理解知识,所以在这里非常感谢帮助我的同学。 在此要感谢我的指导老师,感谢老师给我这样的机会锻炼。在整个设计过程中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中的探索的艰难和成功的喜悦。虽然这个项目还不是很完善,但是在设计过程中所学到的东西是这次设计的最大收获和财富,使我终身受益。
优点:该抢答器结构简单,实用性强,具有数据锁存功能,能应用于各活动中。 缺点:该八路抢答器没有限时抢答功能,没有音讯输出功能。
改进:增加讯响电路和抢答限时电路,是八路抢答器的功能更完好。实验效率低, 许多原件功能不清楚。
总之,在设计过程中学到了许多。作为现代的大学生,如果仅停留在以往的层次上,是远远跟不上时代的步伐,也无法使自己立足在竞争如此激烈的社会里,通过此次实习,看到了自己的水平和差距,学要在今后的学习中又进一步的提高。
参考文献
[1]《数字电子技术》 蒋正萍等编著 化学工业出版社
[2]《电子技术课程设计指导》彭介华主编 高等教育出版社
[3]《电子线路设计、实验、测试》谢自美主编 华中理工出版社
[4]《经典集成电路400例》任致程主编 机械工业出版社
[5]《电子数字基础(数字部分)》 康华光主编 高等教育出版社
附录
源程序
C语言八路抢答器设计#include
#define uchar unsigned char
#define uint unsigned int
sbit wela1=P3^1;
sbit wela2=P3^7;
sbit rest=P3^5;
sbit host=P3^6;
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;
uchar hao,shu,shu1,shi,ge,t0,t1,start,flag;
uchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴
uchar code table2[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //共阳
void init();/*初始函数申明*/
void display(uchar shi,uchar ge,uchar hao);
void delay(uint z);
void keyscan();
void main()
{
init();
display(shi,ge,hao);
while(1)
{
if(host==0) //主持人
{
delay(5);
if(host==0)
{
flag=1;
start=1;
delay(5);
while(!host);
}
}
if(rest==0) //复位
{
delay(5);
if(rest==0)
{
shu=30;
hao=0;
delay(5);
start=1;
delay(5);
while(!rest);
}
}
if(flag==1)
{
if(start==0)//选手按下,倒计时10秒 {
wela1=0;
wela2=0;
delay(1);
TR0=0;
TR1=1;
display(shi,ge,hao);
delay(1);
}
if(start==1)//主持人按下,倒计时30秒 { wela1=0;
wela2=0;
delay(1);
TR0=1;
TR1=0;
display(shi,ge,hao);
delay(1);
keyscan();
}
}
}
}
void init()/*初始化*/
{
t0=0;
t1=0;
flag=0;
shu=30;
shu1=10;
hao=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 shi,uchar ge,uchar hao)/*数码管动态扫描*/ {
wela1=1;
P0=table1[ge];
delay(5);
wela2=1;
P0=table1[shi];
delay(5);
P2=table2[hao];
delay(5);
}
void keyscan()/*按键扫描函数*/
{
if(key1==0)
{
delay(5);
if(key1==0)
{
hao=1;
P2=table2[hao];
start=0;
TR1=1;
TR0=0;
delay(5);
while(!key1);
}
}
if(key2==0)
{
delay(5);
if(key2==0)
{
hao=2;
P2=table2[hao];
start=0;
delay(5);
while(!key2);
}
}
if(key3==0)
{
delay(5);
if(key3==0)
{
hao=3;
P2=table2[hao];
start=0;
delay(5);
while(!key3);
}
}
if(key4==0)
{
delay(5);
if(key4==0)
{
hao=4;
P2=table2[hao];
start=0;
delay(5);
while(!key4);
}
}
if(key5==0)
{
delay(5);
if(key5==0)
{
hao=5;
P2=table2[hao];
start=0;
delay(5);
while(!key5);
}
}
if(key6==0)
{
delay(5);
if(key6==0)
{
hao=6;
P2=table2[hao];
start=0;
delay(5);
while(!key6);
}
}
if(key7==0)
{
delay(5);
if(key7==0)
{
hao=7;
P2=table2[hao];
start=0;
delay(5);
while(!key7);
}
}
if(key8==0)
{
delay(5);
if(key8==0)
{
hao=8;
P2=table2[hao];
start=0;
delay(5);
while(!key8);
}
}
}
void delay(uint z)/*延时函数*/
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void time0() interrupt 1/*定时器0*/
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
shi=shu/10;
ge=shu%10;
t0++;
if(t0==20)
{
t0=0;
shu--;
shi=shu/10;
ge=shu%10;
if(shu==0)
{
while(1)
{
shu=0;
hao=0;
wela1=1;
wela2=1;
delay(1);
display(shi,ge,hao);
}
}
}
}
void time1() interrupt 3/*定时器1*/
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
shi=shu1/10;
ge=shu1%10;
t1++;
if(t1==20)
{
t1=0;
shu1--;
shi=shu1/10;
ge=shu1%10;
if(shu1==0)
{
while(1)
{
shu1=0;
hao=0; wela1=0;
wela2=0;
delay(1);
display(shi,ge,hao);
}
}
}
}
2016届课程论文
《单片机原理及应用》
课程设计
《八路抢答器》
学生姓名 王佳
学 号
所属学院 信息工程学院
专 业 计算机科学与技术
班 级 16-4班
指导教师 孟洪兵
塔里木大学教务处
目录
摘要 ..................................................... 1
第一章 绪论 .............................................. 1
1.1 课题研究的相关背景 .............................. 1
1.2 选题的目的和意义 ................................ 1
1.3 设计步骤 .......................................... 2
1.4 实现的功能 ........................................ 2
第二章 实验设计原理 ...................................... 2
第三章 方案设计 .......................................... 3
3.1 元件介绍 .......................................... 3
3.1.1 AT89C51 ..................................... 3
3.1.2 74HC573 ..................................... 3
3.2仿真图 ............................................ 4
第四章 实物图 ............................................ 5
总结 ..................................................... 7
参考文献 ................................................ 7
附录 ..................................................... 8
源程序 ................................................ 8
摘要
抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的
使用频率较低,且有的要么制作复杂,要么可靠性低。作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。 本设计是以八路抢答为基本理念。考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。
关键字:单片机 八路抢答器 AT80C51
第一章 绪论
1.1 课题研究的相关背景
抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。早期的抢答器只由几个三极管、可控硅、发光管等组成,能通过发光管的指示辩认出选手号码。现在大多数抢答器均使用单片机(如MCS-51型)和数字集成电路,并增加了许多新功能,如选手号码显示、抢答时间的显示以及最后几秒钟的报警等等。 本课题利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和选手号码。用开关做键盘输出,扬声器发声提示。系统达到要求:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间30s;可以显示是哪位选手有效抢答,时间完后系统自动复位;按键锁定,在有效状态下,按键无效非法。
1.2 选题的目的和意义
在现在的科技水平下,促使人们学科学、学技术、学知识的手段多种多样,抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的使用频率校低,且有的要么制作复杂,要么可靠性低,减少兴致。作为一个单位若专购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展。 而且目前多数抢答器存在以下3个不足之处:第一,现场线路连接复杂。因为每个选手位于抢答现场的不同位置,每个选手与控制台之间要有长长的连接线。选手越多,连接线就越多、越乱,这些连接线不仅影响了现场的美观,而 且降低了抢答器的可靠性,增加了安装的难度,甚至影响了现场人员的走动。第二,电路
复杂。因为单片机只完成号码处理、计时、数据运算等功能,其它功能如选手号码的识别、译码、计分显示等仍只能通过数字集成电路完成。采用单片机扫描技术识别选手抢按号码时,电路的延迟时间较大。第三,选手抢按成功,但出现没有抢答被记录的问题。 鉴于上述原因和不足,设计了这个抢答器,主要是掌握51单片机的原理,了解简单多功能抢答器组成原理,初步掌握多功能抢答器的调整及测试方法,提高动手能力和排除故障的能力。同时通过本课题设计与装配、调试,提高自己的动手能力,巩固已学的理论知识,建立单片机理论和实践的结合,了解多功能抢答器各单元电路之间的关系及相互影响,从而能正确设计、计算定时计数的各个单元电路。初步掌握多功能抢答器的调整及测试方法。提高动手能力和排除故障的能力。
1.3 设计步骤
(1) 设计一个八路抢答器
(2) 设置一个系统清除和抢答控制开关S,该开关由主持人控制
(3) 抢答器具有锁存与显示功能,选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时亮红灯。其他选手无法抢答。优先抢答选手的编号一直保持到主持人将系统清除为止。
1.4 实现的功能
(1) 必须有主持人按钮,当主持人按下按钮,开始30秒倒计时,这30秒内即是八位选手抢答的时长,若30秒内无人抢答,则视为所有选手弃权。
(2) 倘若主持人按下开始的30秒内有人抢答,则倒计时从10秒开始,同时在一屏幕上显示该抢答选手号码,若10秒内无法回答,则该选手视为题目回答错误,选手号码清零。
第二章 实验设计原理
1.准备工具:AT89C51单片机,一片74HC573锁存器芯片,三块单个的共阴数码管,两个十千欧的上拉排阻,红、黄、绿发光二极管各一支。
2.完成实验硬件部分后,软件部分用到了单片机定时器0和定时器1;其中定时器0负责倒计时30秒,定时器1负责倒计时10秒,两个单个的七段共阴数码管来显示倒计时秒钟。
3.单个的数码管用来显示选手号码1~8,由8个选手按键决定选手号码的显示。
4.初始化中选手号码显示0,倒计时秒钟无显示,定时器0和定时器1关中断。
5.主持人按下开始键,定时器0开中断,进行30秒倒计时,当中选手按键按下,定时器0关中断同时定时器1开中断,进行10秒倒计时,选手号码显示在单个数码管上。
6.倒计时中按下复位键,即相当于主持人按键重新开始30秒倒计时抢答。
该电路完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编
号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。如有再次抢答需由主持人将S开关重新置,“清除”然后再进行下一次抢答。
第三章 方案设计
3.1 元件介绍
3.1.1 AT89C51
AT89C51单片机是ATMAL公司89系列单片机的一种8位Flash单片机。它最大特点是片内含有Flash存储器,用途十分广泛,特别是在生产便携式商品手提式仪器等方面,有着十分广泛的应用。
AT89C51单片机内部主要有以下部件:8031CPU、振荡电路、总线控制部件、中断控制部件、片内Flash存储器、片内RAM、并行I/O接口、定时器和串行I/O接口 AT89C51是89系列单片机的标准型,它是与MSC-51系列单片机兼容的。在内部含有4KB可重复编程的Flash存储器,可进行1000次擦写操作。全静态工作为0-24MHZ,有3级程序锁存器,内部含有128-256字节的RAM,有32条可编程I/O口线,2-3个16位定时/计数器,6-8个中断源,通用的串行接口,低电压空闲及电源下降方式。
3.1.2 74HC573
74HC573包含八进制3态非反转透明锁存器,SL74HC573跟LS/AL573的管脚一样。器件的输入是和标准CMOS输出兼容的,加上拉电阻他们能和LS/ALSTTL输出兼容。当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。 输出能直接接到CMOS,NMOS 和TTL 接口上。
操作电压范围:2.0V~6.0V
低输入电流:1.0uA
CMOS 器件的高噪声抵抗特性
特点:
·三态总线驱动输出
·置数全并行存取
·缓冲控制输入
·使能输入有改善抗扰度的滞后作用
原理说明:
74HC573的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时, 新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,I/O 通道,双向总线驱动器和工作寄存器。
3.2仿真图
图1 仿真图
第四章
实物图
图2 实物运行图
图3 实物连接图
总结
设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。下面我对整个设计的过程做一下简单的总结。第一,接到任务以后进行选题。选题是设计的开端,选择恰当的、感兴趣的题目,这对于整个设计是否能够顺利进行关系极大。好比走路,这开始的第一步是具有决定意义的,第一步迈向何方,需要慎重考虑。否则,就可能走许多弯路、费许多周折,甚至南辕北辙,难以到达目的地。因此,选;题时一定要考虑好了。第二,题目确定后就是找资料了。查资料是做设计的前期准备工作,好的开端就相当于成功了一半,到图书馆、书店、资料室去虽说是比较原始的方式,但也有可取之处的。总之,不管通过哪种方式查的资料都是有利用价值的,要一一记录下来以备后用。第三,通过上面的过程,已经积累了不少资料,对所选的题目也大概有了一些了解,这一步就是在这样一个基础上,综合已有的资料来更透彻的分析题目。第四,有了研究方向,就应该动手实现了。其实以前的三步都是为这一步作的铺垫。通过这次设计,我对数字电路设计中的逻辑关系等有了一定的认识,对以前学的数字电路又有了一定的新认识,温习了以前学的知识,就像人们常说的温故而知新嘛,但在设计的过程中,遇到了很多的问题,有一些知识都已经不太清楚了,但是通过一些资料又重新的温习了一下数字电路部分的内容。在这次设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法我们更好的理解知识,所以在这里非常感谢帮助我的同学。 在此要感谢我的指导老师,感谢老师给我这样的机会锻炼。在整个设计过程中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中的探索的艰难和成功的喜悦。虽然这个项目还不是很完善,但是在设计过程中所学到的东西是这次设计的最大收获和财富,使我终身受益。
优点:该抢答器结构简单,实用性强,具有数据锁存功能,能应用于各活动中。 缺点:该八路抢答器没有限时抢答功能,没有音讯输出功能。
改进:增加讯响电路和抢答限时电路,是八路抢答器的功能更完好。实验效率低, 许多原件功能不清楚。
总之,在设计过程中学到了许多。作为现代的大学生,如果仅停留在以往的层次上,是远远跟不上时代的步伐,也无法使自己立足在竞争如此激烈的社会里,通过此次实习,看到了自己的水平和差距,学要在今后的学习中又进一步的提高。
参考文献
[1]《数字电子技术》 蒋正萍等编著 化学工业出版社
[2]《电子技术课程设计指导》彭介华主编 高等教育出版社
[3]《电子线路设计、实验、测试》谢自美主编 华中理工出版社
[4]《经典集成电路400例》任致程主编 机械工业出版社
[5]《电子数字基础(数字部分)》 康华光主编 高等教育出版社
附录
源程序
C语言八路抢答器设计#include
#define uchar unsigned char
#define uint unsigned int
sbit wela1=P3^1;
sbit wela2=P3^7;
sbit rest=P3^5;
sbit host=P3^6;
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;
uchar hao,shu,shu1,shi,ge,t0,t1,start,flag;
uchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴
uchar code table2[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //共阳
void init();/*初始函数申明*/
void display(uchar shi,uchar ge,uchar hao);
void delay(uint z);
void keyscan();
void main()
{
init();
display(shi,ge,hao);
while(1)
{
if(host==0) //主持人
{
delay(5);
if(host==0)
{
flag=1;
start=1;
delay(5);
while(!host);
}
}
if(rest==0) //复位
{
delay(5);
if(rest==0)
{
shu=30;
hao=0;
delay(5);
start=1;
delay(5);
while(!rest);
}
}
if(flag==1)
{
if(start==0)//选手按下,倒计时10秒 {
wela1=0;
wela2=0;
delay(1);
TR0=0;
TR1=1;
display(shi,ge,hao);
delay(1);
}
if(start==1)//主持人按下,倒计时30秒 { wela1=0;
wela2=0;
delay(1);
TR0=1;
TR1=0;
display(shi,ge,hao);
delay(1);
keyscan();
}
}
}
}
void init()/*初始化*/
{
t0=0;
t1=0;
flag=0;
shu=30;
shu1=10;
hao=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 shi,uchar ge,uchar hao)/*数码管动态扫描*/ {
wela1=1;
P0=table1[ge];
delay(5);
wela2=1;
P0=table1[shi];
delay(5);
P2=table2[hao];
delay(5);
}
void keyscan()/*按键扫描函数*/
{
if(key1==0)
{
delay(5);
if(key1==0)
{
hao=1;
P2=table2[hao];
start=0;
TR1=1;
TR0=0;
delay(5);
while(!key1);
}
}
if(key2==0)
{
delay(5);
if(key2==0)
{
hao=2;
P2=table2[hao];
start=0;
delay(5);
while(!key2);
}
}
if(key3==0)
{
delay(5);
if(key3==0)
{
hao=3;
P2=table2[hao];
start=0;
delay(5);
while(!key3);
}
}
if(key4==0)
{
delay(5);
if(key4==0)
{
hao=4;
P2=table2[hao];
start=0;
delay(5);
while(!key4);
}
}
if(key5==0)
{
delay(5);
if(key5==0)
{
hao=5;
P2=table2[hao];
start=0;
delay(5);
while(!key5);
}
}
if(key6==0)
{
delay(5);
if(key6==0)
{
hao=6;
P2=table2[hao];
start=0;
delay(5);
while(!key6);
}
}
if(key7==0)
{
delay(5);
if(key7==0)
{
hao=7;
P2=table2[hao];
start=0;
delay(5);
while(!key7);
}
}
if(key8==0)
{
delay(5);
if(key8==0)
{
hao=8;
P2=table2[hao];
start=0;
delay(5);
while(!key8);
}
}
}
void delay(uint z)/*延时函数*/
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void time0() interrupt 1/*定时器0*/
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
shi=shu/10;
ge=shu%10;
t0++;
if(t0==20)
{
t0=0;
shu--;
shi=shu/10;
ge=shu%10;
if(shu==0)
{
while(1)
{
shu=0;
hao=0;
wela1=1;
wela2=1;
delay(1);
display(shi,ge,hao);
}
}
}
}
void time1() interrupt 3/*定时器1*/
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
shi=shu1/10;
ge=shu1%10;
t1++;
if(t1==20)
{
t1=0;
shu1--;
shi=shu1/10;
ge=shu1%10;
if(shu1==0)
{
while(1)
{
shu1=0;
hao=0; wela1=0;
wela2=0;
delay(1);
display(shi,ge,hao);
}
}
}
}