单片机课程设计四路抢答器文档
- 格式:pdf
- 大小:4.15 MB
- 文档页数:26


目录1、课程设计目的 (3)2、课程设计正文 (3)1、软件方面设计 (3)①总程序流程图 (3)②显示子程序流程图 (4)2、硬件方面设计 (5)①方案设计 (5)②单元电路设计 (5)③系统调试 (8)3、课程设计总结或结论 (8)4、参考文献 (8)附录一:总的原理图附录二:PCB图附录三:总程序1、课程设计目的①可以自主设计简单地电路;②掌握响应外部中断的原理;③利用Protel硬件设计电路原理图和PCB图;④初步掌握使用Proteus进行单片机的软硬件联机调试。
技术要求:①设置4个抢答台和4个抢答成功指示灯,1个比赛主持人“开始”键和1个抢答指示灯以及1个LED显示器。
②采用中断和查询结合的方法确定按键的动作。
③主持人按下“开始”键后,若有人抢答,则抢答指示灯确认有人抢答,并用7段LED显示抢答者的号码(1--4),并同时点亮对应抢答台上的抢答成功指示灯;若10秒内无人抢答,则发出超时报警,此题作废,主持人可按下“开始”键开始下一题的抢答。
2、课程设计正文1、软件设计方面①总程序流程图②显示子程序2、硬件方面设计①方案设计采用以52为内核的STC系列的芯片,组成一个单片机的最小应用系统,运用C语言编程来实现四路抢答器的设计,采用独立式键盘来作为输入,LED数码管显示,蜂鸣器来报警。
用此方案的优点是:编程简单、操作方便、成本低和错误率低。
②单元电路设计各引脚接线:通过单片机各引脚功能的介绍,本硬件设计中,P0口接数码管显示器;P1口接独立式键盘;P2.0通过PNP驱动接数码管;/ALE脚和/PSEN脚悬空,/EA脚接高电平;复位电路包含了上电复位和按键复位;晶振选择为6MHz,GND接地,VCC接+5V电源;蜂鸣电路接在P2.1上面。
针对抢答器的设计,输入电路键盘按下开始键后,开始抢答,按下相应的键,输出电路相应的LED二极管发光、数码管显示相应的序号⑴复位电路复位电路有两种复位方式:上电复位和按键复位。
基于单片机的四路抢答器1.由于剩余4个引脚,所以可以扩展到8路2.矩阵键盘输入任意两位数倒计时初值一、功能要求以8051系列单片机为核心,设计一个4路竞赛抢答器。
具体功能要求如下:1、该抢答器最多可供4名选手参赛,用4个按钮S0~S3表示,设置一个系统复位和抢答控制开关S,由主持人控制。
2、当主持人启动“抢答开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,LED显示器上显示选手的编号和抢答的时间并保持到主持人将系统清除为止;如规定的时间内无人抢答则蜂鸣器发声,计时器复位,为下一次计时做好准备。
3、抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。
4、只有主持人的操作将电路复位后,方可结束上一次的抢答,为下一次抢答做好准备。
二.设计方案(1)倒计时用矩阵键盘输入,程序中用keycount来记录按下按键的次数,我只设置两次,只能输入两位数,多按下几次是没有效果的,相当于键盘自锁,之后单片机读取键值,缓存入一个两位的数组table【2】。
(2)采用的是3位led动态扫描的方式显示(3)中断扫描选手按键,选手按键用的用独立键盘,用与门接选手按键,当有人按下时,与门由高到低,产生下降沿而引起中断,单片机扫描独立键盘。
(4)蜂鸣器电路(5)开始按键和复位按键1-1主流程图1-2 外部中断扫描选手按键1-3 定时器中断电路图如下图由于仿真软件proteus不能用PnP仿真,所以去掉了PnP,直接用IO口驱动;真实是不行的。
#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit FUW=P3^5; //抢答键sbit CLR=P3^4; //清零,复位键sbit xuan1=P2^4;//选手1,2,3,4sbit xuan2=P2^5;sbit xuan3=P2^6;sbit xuan4=P2^7;sbit wei1=P2^0;//位选1,2,3,4sbit wei2=P2^1;sbit wei3=P2^2;sbit wei4=P2^3;sbit buz=P3^0;uchar code numtab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极uint table[3]={0,0,0};//倒计时缓存uchar keycount=0;uint time=0;uchar num=0;uint ge,shi;/***********延时函数*****************/void delayms(uint xms){uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}/************蜂鸣器****************/void buzzer(){buz=0;delayms(50);buz=1;}/************报警部分独立按键扫描********************/ void kscan(){uchar sk;if(xuan1==0){delayms(10);if(xuan1==0){buzzer();sk=1;table[2]=sk;}}else if(xuan2==0){delayms(10);if(xuan2==0){buzzer();sk=2;table[2]=sk;}}else if(xuan3==0){delayms(10);if(xuan3==0){buzzer();sk=3;table[2]=sk;}}else if(xuan4==0){delayms(10);if(xuan4==0){buzzer();sk=4;table[2]=sk;}}}/**********矩阵键盘扫描***************/ void keyscan(){uint temp,key;P1=0xfe;//第一行为0temp=P1;temp=temp&0xf0;//与上11110000if((temp!=0xf0)&&(keycount<2))delayms(10);//去抖temp=P1;temp=temp&0xf0;if(temp!=0xf0){temp=P1;switch(temp){case 0xde:key=0;table[keycount]=key;keycount++;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfd;//第二行为0temp=P1;temp=temp&0xf0;//与上11110000if((temp!=0xf0)&&(keycount<2))delayms(10);//去抖temp=P1;temp=temp&0xf0;if(temp!=0xf0){temp=P1;switch(temp){case 0xed:key=1;table[keycount]=key;keycount++;break;case 0xdd:key=2;table[keycount]=key;keycount++;break;case 0xbd:key=3;table[keycount]=key;keycount++;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfb;//第三行为0temp=P1;temp=temp&0xf0;//与上11110000if((temp!=0xf0)&&(keycount<2)){delayms(10);//去抖temp=P1;temp=temp&0xf0;if(temp!=0xf0){temp=P1;switch(temp){case 0xeb:key=4;table[keycount]=key;keycount++;break;case 0xdb:key=5;table[keycount]=key;keycount++;break;case 0xbb:key=6;table[keycount]=key;keycount++;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xf7;//第四行为0temp=P1;temp=temp&0xf0;//与上11110000if((temp!=0xf0)&&(keycount<2)){delayms(10);//去抖temp=P1;temp=temp&0xf0;if(temp!=0xf0){temp=P1;switch(temp){case 0xe7:key=7;table[keycount]=key;keycount++;break;case 0xd7:key=8;table[keycount]=key;keycount++;break;case 0xb7:key=9;table[keycount]=key;keycount++;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}}/********显示函数*********/ void display(){ge=time%10;shi=time/10;wei1=1;wei2=0;wei3=0;P0=numtab[shi];delayms(5);P0=0xff;wei1=0;wei2=1;wei3=0;P0=numtab[ge];delayms(5);P0=0xff;wei2=0;wei1=0;wei3=1;P0=numtab[table[2]];delayms(5);P0=0xff;wei3=0;}/****************主函数**********************/ main(){EA=1;TMOD=0x01;TH0=(65536-50000)/256;//定时50msTL0=(65536-50000)%256;ET0=1;EX0=1;IT0=1; //下降沿触发PX0=1;PT0=0;while(1){if(keycount<2){ keyscan();if(keycount==2){time=10*table[0]+table[1];}}if(keycount==2){display(); }/******按下开始抢答键********/if(FUW==0){delayms(10);if(FUW==0){TR0=1;while(!FUW);}}/********按下清零键*********/if(CLR==0){delayms(10);if(CLR==0){TR0=0;EX0=1;time=0;ge=0;shi=0;table[0]=0;table[1]=0;table[2]=0;keycount=0;while(!CLR);}}}}/**************定时器0中断******************/ void t0() interrupt 1{TH0=(65536-50000)/256;//定时50msTL0=(65536-50000)%256;num++;if(num==20){num=0;time--;if(time==0){TR0=0;}}}/*********外部中断0***********/void estern0() interrupt 0{uchar ks;EX0=0;//关掉中断,防止键盘抖动,多次中断,还有就是//只扫描第一次按键的选手,之后按键不扫描if(TR0==0||time==0){kscan();}else if(xuan1==0&&TR0==1 ){delayms(10);if(xuan1==0){ks=1;table[2]=ks;TR0=0;while(!xuan1);}}else if(xuan2==0&&TR0==1 ) {delayms(10);if(xuan2==0){ks=2;table[2]=ks;TR0=0;while(!xuan2);}}else if(xuan3==0&&TR0==1 ){delayms(10);if(xuan3==0){ks=3;table[2]=ks;TR0=0;while(!xuan3);}}else if(xuan4==0&&TR0==1 ){delayms(10);if(xuan4==0){ks=4;table[2]=ks;TR0=0;while(!xuan4);}}}。
华北科技学院课程设计说明书班级:电子B071 :郭亚立设计题目:四路智能抢答器设计时间: 2010.1.9 至 2010.1.22 学号: 8指导教师:杜志伟评语:评阅成绩:评阅老师:四路抢答器设计报告目录一、设计任务和要求:...................................................... - 3 -1.1设计任务 (3)1.2设计要求 (3)二、设计方案的选择与论证.................................................. - 4 -2.1方案的选择、论证 (4)2.2设计总方案 (4)三、电路设计计算与分析..................................................... - 5 -3.1抢答器控制电路设计 (5)3.1.1 优先编码器 74LS148................................................ - 7 -3.1.2 锁存器74LS279.................................................... - 9 -3.1.3 74LS121单稳态触发器:.......................................... - 10 -3.2定时时间电路的设计 (10)3.2.1 计数器74LS192................................................... - 12 -3.3控制电路和报警电路 (13)3.3.1 振荡电路......................................................... - 17 -3.4整体仿真 (19)四、总结及心得 ............................................................- 20 -五、附录 .................................................................- 22 -5.1主要元器件列表 (22)5.2总原理图 (23)六、参考文献 ..............................................................- 24 -一、设计任务和要求:1.1设计任务设计一台可供4名选手参加比赛的智力竞赛抢答器。
xxxxxx大学课程设计报告课程设计名称:单片机系统综合课程设计课程设计题目:四路抢答器院(系):专业:班级:学号:姓名:指导教师:完成日期:xxxxxx大学课程设计报告目录第1章总体设计方案 (1)1.1课程设计的内容和要求 (1)1.2课程设计原理 (1)1.3课程设计思路 (2)1.4实验环境 (2)第2章详细设计方案 (3)2.1硬件电路设计 (3)2.2主程序设计 (4)2.3功能模块的设计与实现独立式按键功能模块 (4)第3章调试及结果分析 (7)3.1调试步骤及方法 (7)3.2实验结果及分析 (7)参考文献 (8)附录一(源程序) (9)附录二(原理图) (13)附录三(元器件清单) (14)第1章总体设计方案1.1课程设计的内容和要求(1)课程设计内容:使用51单片机制作抢答器功能如下:①常规模式主持人按下抢答开始开关,数码管从10S开始倒计时,此时选手可以抢答,若有选手抢答,相应LED亮,单数码管显示其选手号,双数码管从30S开始进行答题倒计时,答题时间到则单数码管闪烁显示选手号5次,再回到初始状态,若时间到但没有人抢答则回到初始状态(所有灯灭,检测主持键是否按下)②违规模式主持人尚在念题还未按下抢答开始开关,某选手违规抢答,则单数码管闪烁显示其选手号5次后回到初始状态。
(2)课程设计要求:①认真完成课程设计任务;②通过老师现场验收;③交出完整的课程设计报告。
1.2 课程设计原理根据题目要求,设计中采用8031芯片、LED灯、数码管和一些独立式按键构成一个简易四路抢答器。
设计中由于数码管扫描延时比较长,采用单片机的内部定时器进行定时,并采用中断方式。
整个抢答器的工作原理是:在正常的供电状态下,开始抢答时利用单片机倒计时,并由单片机将所需要显示的数据送到LED显示器的输入口,当有键按下时则执行相应的键功能程序。
1.3 课程设计思路(1)提出方案根据设计要求,系统采用个独立式开关作为按键,通过单片机不停地扫描P1口来控制LED数码管的显示,当按下启动按键后,经单片机处理,输出控制信号,数码管从10开始进入减计时并在数码管上显示剩余时间,在有选手按下按键时,就会有对应于这个按键的编码在数码管上显示,同时蜂鸣器给出声响来提示主持人和选手;如果在10秒内没有选手抢答,则本次抢答无效,系统封锁输入电路,禁止选手超时抢答。