16路抢答器MULTISIM仿真_泰州职业技术学院毕业设计
- 格式:doc
- 大小:278.68 KB
- 文档页数:19
湖南工业大学课程设计任务书2010 —2011 学年第 1 学期电气与信息工程学院(系、部)电子信息科学与技术专业081 班课程名称:单片机课程设计设计题目:16路抢答器完成期限:自2010 年12 月29 日至2011 年 1 月07 日共 2 周指导教师(签字):年月日系(教研室)主任(签字):年月日(单片机应用系统)设计说明书(题目)16路抢答器的设计起止日期:2010 年12 月29 日至2011 年1 月07 日学生姓名班级学号成绩指导教师(签字)电气与信息工程学院(部)2011年 1 月8 日系统功能要求A 基本要求(1) 枪答功能:供16路枪答(2) 复位功能:使系统进入“准备好”状态(3) 自锁功能(4) 互锁功能(5) 用两个LED数码管显示抢答成功的路数(6) 抢答成功时要有提示音,抢答不成功时要有报警音,还要显示ERB 课程要求(1)改善上述提示音和报警音(2)采用串行总线技术完成设计,以便简化现场的连接2、设计电路原理图(1)在Protel99se或protus中画图(2)mcu:AT89S513、完成MCU的程序设计(1)给出程序设计思路(软件功能描述,完成软件功能的算法描述)文件描述,流程图,用viso画流程图(2)给出详细的程序清单(3)在keil51集成开发环境中编辑和编译软件调试程序在Proteus环境中仿真该单片机应用环境,给出仿真的过程和结果(截图)系统设计分析1、电路原理图的设计2、仿真电路原理图是设计以及仿真过程3、硬件电路的设计与焊接4、程序设计思路,包括程序功能描述、各子程序的算法描述以及整个程序的流程图5、芯片资料查阅及参考文献6、整体程序的设计7、课程设计报告的撰写及资料汇总8、整体组装与调试,即硬件与软件的结合调试与仿真1.硬件电路总体原理图如图1-0所示,P1.0-P1.7,P2.0-P2.7为十六路抢答输入,P0.0到P7.7输入到锁存器74HC573中,再输入到数码管显示,P3.2为蜂鸣器输出口,P3.5-P3.7连接到三八译码器的数据输入端,P3.3连接到译码器的使能端。
多功能数字电路抢答器(定时抢答、犯规抢答、multisim仿真)课程设计报告学生姓名:雷光远于金艳学号:08041402250802060108学院:电气工程学院班级:电气工程及其自动化题目:多路抢答器的设计指导教师:邢晓敏职称: 讲师 2010年 7 月 15 日一.设计要求(1)抢答开始时,由主持人按下复位开关清除信号,用发光二极管作为输出显示信号标志。
(2)当主持人宣布“抢答开始”后,先按键者相应的发光二极管点亮;(3)有人按键被响应的同时,应有信号发出去锁住其余几个抢答者的电路,不再接收其它信号,直到主持人再次清除信号为止。
当达到限定时间时,发出声响以示警告。
(4)在电路中设计一个计时功能电路,要求计时电路按秒显示,最多时限为1分钟,当时间显示一旦到达59秒,下一秒系统自动取消抢答权,信号被自动清除,抢答重新开始。
亦可倒计时显示。
(5)至少4路信号抢答设计。
二.设计原理及框图1、设计原理图2、该抢答器所实现功能:A抢答时间30S倒计时,当倒计时到达最后十秒而没有人抢答时,系统自动报警,蜂鸣器断续发出声音,当倒计时到达00时,倒计时停止,封锁其他选手的抢答信号输入。
B成功抢答数码管显示对应选手编号,对应选手发光二极管点亮,抢答倒计时停止,同时封锁其他选手的按键输入。
C成功抢答后,主持人按动抢答/答题开始键,进行60S答题倒计时,同时封锁按键对倒计时电路,抢答数码管显示电路,发光二极管点亮电路的输入;在当倒计时到达最后十秒而没有人抢答时,系统自动报警,蜂鸣器断续发出声音。
D若主持人清零后未按动抢答/答题开始键时,有选手抢答,即犯规抢答时,对应选手的红色发光二极管闪烁警告选手,显示编号数码管闪烁选手编号,蜂鸣器断续发出声音从而提示主持人有选手犯规抢答。
3、工作原理通电后,主持人将清零开关按下并弹起,编码器处于工作状态,编号显示器显示并闪烁0,定时器显示00;主持人将“时间调整”开关拨到30S,然后按下并弹起“开始抢答/开始答题”按键,定时器显示30S并开始倒计时,当定时时间到,却没有选手抢答时,系统报警,并封锁输入电路,禁止选手超时抢答。
摘要计算机仿真技术已成为现代工程设计中一种有效方法,如multisim,pspice,protel 等电子仿真软件,进行仿真模拟实验,实验过程非常接近实际操作效果,元器件选择范围广,参数修改方便。
本设计基于计算机仿真的思想和方法,虚拟样机调试的概念,针对电子技术实验,采用multisim2001 EDA软件仿真各种现实仪器和电气元件;虚拟实验电路,在计算机中仿真实验过程,从而分析设计的性能,验证设计的可行性,缩短设计周期,节约设计成本,提高设计效果。
我本次毕业设计的就是应用Multisim仿真软件对设计所作的相关实验进行仿真。
此次设计的内容是运用Multism 对我做的设计内容就行虚拟仿真。
仿真的内容有:实验 TTL与非门的测试;实验编码器、译码器及其应用;实验数据选择器及其应用;实验锁存器及其应用;实验555集成定时器及应用;综合设计实验:数字抢答器设计。
通过实例说明应用计算机仿真技术进行电子线路课程设计的教学,有助于学生边学边用,从而学以致用,有利于培养学生综合分析能力、开发能力和创新能力。
关键词:Multisim 2001,数字电子电路系统,仿真设计目录摘要 (I)1 绪论 (1)1.1M ULTISIM的开发的背景 (1)1.2M ULTISIM (1)1.3M ULTISIM的主要功能及特点 (2)2 TTL与非门测试实验 (5)2.1概述 (5)2.2实验原理及实验电路 (5)3编码器 (7)3.1编码器概述 (7)3.2编码器分类 (7)4数据选择器 (8)4.1数据选择器的定义及功能 (8)5时序逻辑电路 (10)5.1概述 (10)5.2实验原理及实验电路 (10)6 译码器 (13)6.1概述 (13)6.2实验原理及实验电路 (14)7 555定时电路 ............................... 错误!未定义书签。
7.1概述 (16)8数字抢答器的设计 (19)8.1抢答器的总体结构 (19)8.2优先判断与编号锁存电路 (19)8.3抢答器的单元电路设计 (22)8.4抢答器设计中的优先编码电路 (22)8.5抢答器设计中的定时电路 (23)8.6抢答器设计中的报警电路 (24)8.7抢答器中的时序控制电路 (25)8.8七段显示译码器与数码管 (26)结论 (29)致谢 (29)参考文献 (30)附录 (31)1 绪论1.1 Multisim的发展背景:在科学技术日新月异的背景下,随着教育改革的深入,如何实现教育技术现代化、教学手段现代化已经成为我国教育改革所面临的一个重要课题。
一.设计题目:四人智力竞赛抢答器二.主要内容:设计一个具有抢答,定时,显示功能的四人抢答电路三.具体要求:(1)在给定5V直流电源电压的条件下设计一个可以容纳四组参赛者的抢答器,每组设定一个抢答按钮供参赛者使用。
(2)设置一个系统清零和抢答控制开关K(该开关由主持人控制),当开关K被按下时,抢答开始,打开后抢答电路清零。
(3)抢答器具有一个抢答信号的鉴别、锁存及显示功能。
即有抢答信号输入时,锁存相应的编号,并在LED数码管上显示出来。
此时再按其他任何一个抢答器开关均无效,优先抢答选手的编号一直保持不变,直到主持人将系统清除为止。
四.进度安排:第一天上午:介绍设计所用仿真软件;布置任务。
下午:查阅资料。
第二天全天:消化课题,了解设计要求,明确被设计系统的全部功能。
第三天全天:确定总体设计方案,画出系统的原理框图。
第四,五天全天:绘制单元电路并对单元电路进行仿真,改进。
第六天上午:完成整体设计并仿真验证。
下午:准备课程设计报告。
第七天上午:对课程设计进行现场运行检查,给出实践操作成绩。
五.成绩评定成绩分为三部分:考勤占30%,实践操作占40%,课程设计报告占30%。
四人智力竞赛抢答器设计内容:设计一个具有抢答,定时,显示功能的四人抢答电路设计目的与要求:(1)掌握抢答器的工作原理及其设计方法。
(2)学会用Multisim10软件操作实验内容。
(3)掌握设计性试验的实验方法基本功能:(1)在给定5V直流电源电压的条件下设计一个可以容纳四组参赛者的抢答器,每组设定一个抢答按钮供参赛者使用。
(2)设置一个系统清零和抢答控制开关K(该开关由主持人控制),当开关K被按下时,抢答开始(允许抢答),打开后抢答电路清零。
(3)抢答器具有一个抢答信号的鉴别、锁存及显示功能。
即有抢答信号输入(参赛者的开关中任意一个开关被按下)时,锁存相应的编号,并在LED数码管上显示出来,同时扬声器发生声响。
此时再按其他任何一个抢答器开关均无效,优先抢答选手的编号一直保持不变,直到主持人将系统清除为止。
电子技术课程设计报告书课题名称 路数显示报警器的设计姓 名 刘卫平 学 号 0812202*14 院、系、部 物理与电信工程系 专 业 电子信息工程指导教师熊洁2010年 07月 01日※※※※※※※※※ ※※ ※※ ※※ ※※※※※※※※※2008级电子信息工程专业电子技术课程设计路数显示报警器的设计1、设计目的(1)熟悉集成电路的引脚安排。
(2)掌握各芯片的逻辑功能及使用方法。
(3)了解并熟悉仿真软件Multisim11.0的应用。
(4)了解路数显示报警器的组成及工作原理。
(5)熟悉路数显示报警器的设计与制作。
2、设计思路(1)设计16路数输入电路。
(2)设计优先级存储及处理电路。
(3)设计报警及显示路数电路。
3、方案设计比较与思路论证方案1:如下图 3.1所示,其中总开关起控制总电源的作用,十六个控制开关分别为十六个按钮,经过编码器编码,将信号编码成相应的二进制代码,从而在数码显示器上显示十进制路数数字。
同时由控制开关连接555定时振荡电路,再与报警器相连,实现声音报警。
图3.1 方案1设计框图方案2:如下图 3.2所示,当接通电源后,其中总开关起控制总电源的作用,十六路数控制开关分别为十六个开关按钮,经过编码器编码将信号编写成二进制代码,从而在显示器上显示相关路数数字,并且编码器上的GS接口连接555定时振荡电路,再与报警器相连,实现声音报警。
图3.2方案2设计框图方案分析与比较:上述两个方案都具有十六路数显示和声音报警功能,但是方案1 由控制开关连接555定时电路,再与报警器相连,实现声音报警,这对报警器实现声音报警不是很理想,即报警器不能安装在开关按钮边上,所以不是很科学与事实不是很符合。
在方案2 里面,在编码器上的GS接口上连接555定时电路,再与报警器相连,实现声音报警,这种方案简单且可行,容易实现十六路数显示报警器功能。
当然还有其他方案可以实行,综合器件种类与数目,功耗等因素,应采用方案2,其设计框图如上图3.2设计图所示。
设计一个16路智力抢答器要求:具有定时功能,有倒计时10秒报警,有防作弊处理。
其电路图如下图所示:附带程序如下:程序如下:Qdqi.c#include<reg52.h>#include"keyboard.h"#include"1602xs.h"#include"fmq.h" //蜂鸣器#include"delay.h"#define unint unsigned int#define unchar unsigned charsbitks=P1^0;sbitkz=P1^1;unint Flag=1,k;unint a=10,b=0,c=60,d=0;unchar key board;/************************************************定时器初始化子程序*************************************************/void Init_Timer(){TMOD |= 0x11; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响TH0=(65535-50000)/256; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出TL0=(65535-50000)%256;TH1=(65535-50000)/256; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出TL1=(65535-50000)%256;EA=1; //总中断打开ET0=1;ET1=1; //定时器中断打开// TR0=1; //定时器开关打开}/******************************************************************//* 主函数*//******************************************************************/void main(){init();Init_Timer();while(1){keyboard=getkey();if(ks) //开始抢题之前防抢答{if(key scan()==0xff){writechar(0x80+2,"waiting!!!");}//防作弊if(key scan()!=0xff){k=getkey();display2(0x80+0x40+4,k);fmq1();while(1);}}if(!ks) //开始抢题{TR0=1; //定时器中断打开// Flag=0;write_com(0x01);writechar(0x80+2,"Countdown:");while(key scan()==0xff) //没有人抢答{display2(0x80+0x40+5,a);if(a==0){TR0=0;display2(0x80+0x40+5,a);fmq();while(1);}}while(key scan()!=0xff){TR1=1;k=getkey();Flag=0;write_com(0x01);writechar(0x80+2,"Num: time:");while(!Flag){display2(0x80+0x40+4,k);display2(0x80+0x40+12,c);if(c==0){fmq1();while(1);}if(!kz){TR1=0;}}}// jianpan();}}}void Timer0_isr(void) interrupt 1 using 1{TH0=(65535-50000)/256; //重新赋值TL0=(65535-50000)%256;b++;if(b==20){b=0;a--;}}void Timer1_isr(void) interrupt 3 using 1{TH1=(65535-50000)/256; //重新赋值TL1=(65535-50000)%256;d++;if(d==20){d=0;c--;}}Keyboard.c/*-----------------------------------------------矩阵键盘实验程序通过反转法循环扫描矩阵键盘------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include"keyboard.h"#include"delay.h"unsigned char const EL[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0-Fuchargetkey(){ucharkey,k;key=key scan(); //调用键盘扫描,switch(key){case 0xee:k=0;break;//0按下相应的键显示相对应的码值case 0xde:k=1;break;//1 按下相应的键显示相对应的码值case 0xbe:k=2;break;//2case 0x7e:k=3;break;//3case 0xed:k=4;break;//4case 0xdd:k=5;break;//5case 0xbd:k=6;break;//6case 0x7d:k=7;break;//7case 0xeb:k=8;break;//8case 0xdb:k=9;break;//9case 0xbb:k=10;break;//acase 0x7b:k=11;break;//bcase 0xe7:k=12;break;//ccase 0xd7:k=13;break;//dcase 0xb7:k=14;break;//ecase 0x77:k=15;break;//fcase 0xff:k=16;break;//g}return k;}/*------------------------------------------------键盘扫描程序------------------------------------------------*/ucharkeyscan(void) //键盘扫描函数,使用行列反转扫描法{ucharcord_h,cord_l;//行列值中间变量P3=0x0f; //行线输出全为0cord_h=P3&0x0f; //读入列线值if(cord_h!=0x0f) //先检测有无按键按下{delay(100); //去抖if(cord_h!=0x0f){cord_h=P3&0x0f; //读入列线值P3=cord_h|0xf0; //输出当前列线值cord_l=P3&0xf0; //读入行线值return(cord_h+cord_l);//键盘最后组合码值}}return(0xff); //返回该值}1602xs.c#include"reg52.h"#include"delay.h"#include"1602xs.h"sbitlcden=P2^6;sbitlcdrs=P2^4;sbitlcdwr=P2^5;void write_com(uchar com) //写指令{lcdwr=0;lcdrs=0;P0=com;delay_mS(1);lcden=1;delay_mS(1);lcden=0;}void write_data(uchar date) //写数据{lcdrs=1;P0=date;delay_mS(1);lcden=1;delay_mS(1);lcden=0;}/********************************0x80+add 第二行地址0~150x80+0x40+add 第一行地址0~15数字:0x30+字母:需查表*********************************/void init() //初始化{lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01); //清屏指令}/*writechar("Please input ps");*/void writechar(ucharadd,uchar *s) //写入一个字符串{write_com(add);while(*s){write_data(*s);delay_mS(1);*s++;}}void writechar1(ucharadd,uchar a1,uchar a2,uchar a3,uchar a4) //写入一个字符串{write_com(add);write_data(a1);write_data(a2);write_data(a3);write_data(a4);}void display1(ucharadd,uint date) //显示字符及位置{//ucharbai,shi,ge;//bai=date/100;//shi=date%100/10;//ge=date%10;write_com(add);write_data(0x30+date);//write_data(0x30+shi);//write_data(0x30+ge);write_data(0x6d);write_data(0x41);}void display2(ucharadd,uchar date) //显示字符及位置{ucharshi,ge;shi=date/10;ge=date%10;write_com(add);// write_data(date);write_data(0x30+shi);write_data(0x30+ge);//write_data(0x25);}Delay.c#include"delay.h"void delay(unsigned intcnt){while(--cnt);}/******1mS y anshi*******/void delay_mS(unsigned int z){uintx,y;for(x=z;x>0;x--)for(y=125;y>0;y--);}Fmq.c//在实际电路中我没有按蜂鸣器#include<reg52.h>#include"fmq.h"#include"delay.h"/*************端口定义*********/sbit SPK=P1^2; //定义喇叭端口//unsigned int k1=1,k2=1;void fmq(){unsigned inti;for(i=0;i<150;i++)//喇叭发声的时间循环,改变大小可以改变发声时间长短{delay(600); //参数决定发声的频率,估算值,可以自行更改参数并SPK=!SPK;}// SPK=1; //喇叭停止工作,间歇的时间,可更改// delay(50000);}void fmq1(){unsigned inti,j;for(j=0;j<5;j++){for(i=0;i<200;i++)//喇叭发声的时间循环,改变大小可以改变发声时间长短{delay(300); //参数决定发声的频率,估算值,可以自行更改参数并SPK=!SPK;}SPK=1; //喇叭停止工作,间歇的时间,可更改delay(90000);}}。
目录1引言 (1)2 功能概述 (1)2.1抢答器工作原理 (1)2.2设计目的与要求 (1)2.3设计任务 (1)2.4运行环境及工具 (2)3 系统硬件设计 (2)3.1芯片的选择 ................................................................................. 错误!未定义书签。
3.2原理及电路总框图 (2)3.3晶振复位及开始抢答电路 (7)3.4选手抢答键 (7)3.5显示与显示驱动电路 (4)3.6蜂鸣器音频输出电路 (4)4系统软件设计 (5)4.1系统主程序设计 (5)4.2系统流程图 (6)4.3程序清单 (7)5系统仿真结果 (14)5.1开始抢答仿真 (14)5.2抢答犯规仿真 (15)5.3抢答成功仿真 (16)6课程设计的总结与体会 (17)参考文献资料 (17)1 引言当今的社会竞争日益激烈,选拔人才,评选优胜,知识竞赛之类的活动愈加频繁,那么也就必然离不开抢答器。
而现在的抢答器有着数字化,智能化的方向发展,这就必然提高了抢答器的成本。
鉴于现在小规模的知识竞赛越来越多,操作简单,经济实用的小型抢答器必将大有市场。
本抢答器与其他抢答器电路相比较有分辨时间极短、结构清晰,成本低、制作方便等优点,并且还有防作弊功能。
因此,我们制作了这款简易多路(十六路)数字抢答器摒弃了成本高、体积大、操作复杂。
我们采用了数字显示器直接指示,自动锁存显示结果,因而本抢答器具有显示直观,操作简单的特点。
而且在显示时抢答器会发出蜂鸣声使效果更为生动。
工厂、学校和电视台等单位常举办各种智力竞赛, 抢答记分器是必要设备。
2 功能概述2.1抢答器工作原理抢答器的工作原理是采用单片机最小系统,用查询式键盘进行抢答。
采用动态显示组号。
主持人按下开始抢答键才可以抢答。
主持人没有按下开始抢答按纽(P3.2),有人抢答则抢答违规,报警并显示组号,主持人按下开始抢答开关重新抢答。