《C语言八路抢答器设计.doc》由会员分享,可在线阅读,更多相关《C语言八路抢答器设计.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第六届电子设计大赛 作品说明书 作 品 名 称: 八路抢答器 参 赛 者: 所 在 学 院: 电气工程与信息工程学院 电 子 邮 件: 联 系 电 话: 二零一二年五月二 设计要求1. 设计一个四路抢答器。2. 设置一个系统清除和抢答控制开关S,该开关由主持人控制3. 抢答器具有锁存与显示功能,选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时亮红灯。其他选手无法抢答。优先抢答选手的编号一直保持到主持人将系统清除为止。三小组发挥部分1. 必须有主持人按钮,当主持人按下按钮,开始30秒倒计时,这30秒内即是八位选手抢答的时长,若30秒内无人抢答,则视为所有选手弃权。2. 倘若主持人按下开
2、始的30秒内有人抢答,则倒计时从10秒开始,同时在一屏幕上显示该抢答选手号码,若10秒内无法回答,则该选手视为题目回答错误,选手号码清零。3. 实验装置有红、绿、黄三盏灯;其中绿灯在主持人按钮按下时被点亮,在倒计时30秒内,当有选手抢答时,黄灯被点亮,此时的绿灯仍然是亮着的。若30秒内无选手抢答,倒计时到0时绿灯熄灭,同时红灯被点亮;若选手抢答后10秒钟倒计时到0时绿灯和黄灯都熄灭,同时红灯被点亮。四、 实物图五、 元件清单元件名称规格数量备注单片机STC89C521锁存器芯片74HC573 2数码管共阴 3LED发光二极管红、黄、绿 3按键不带自锁 11USB接口 1 电阻色环电阻(220、
3、1K) 5瓷片电容22PF 2电解电容10F 1晶振12,000HZ 1排阻10K 2导线 若干 实验板 1 USB数据线 1六、 八路抢答器仿真图七、实验设计原理1.准备工具:STC89C52单片机,一片74HC573锁存器芯片,三块单个的共阴数码管,两个十千欧的上拉排阻,红、黄、绿发光二极管各一支,焊接导线,焊锡,电烙铁,独立按键若干。2.完成实验硬件部分后,软件部分用到了单片机定时器0和定时器1;其中定时器0负责倒计时30秒,定时器1负责倒计时10秒,两个单个的七段共阴数码管来显示倒计时秒钟。3.单个的数码管用来显示选手号码18,由8个选手按键决定选手号码的显示。4.初始化中选手号码显示
4、0,倒计时秒钟无显示,定时器0和定时器1关中断。5.主持人按下开始键,定时器0开中断,进行30秒倒计时,当中选手按键按下,定时器0关中断同时定时器1开中断,进行10秒倒计时,选手号码显示在单个数码管上。6倒计时中按下复位键,即相当于主持人按键重新开始30秒倒计时抢答。八、 八路抢答器C语言程序设计/*八路抢答器c语言程序设计.2012.5.20*/#include #define uchar unsigned char#define uint unsigned intsbit wela_hao=P32;sbit wela1=P30;sbit wela2=P31;sbit rest=P36;sb
5、it host=P37;sbit led1=P35;/绿灯sbit led2=P34;/红灯sbit led3=P33;/黄灯sbit key1=P10;sbit key2=P11;sbit key3=P12;sbit key4=P13;sbit key5=P14;sbit key6=P15;sbit key7=P16;sbit key8=P17;uchar hao,shu,shu1,shi,ge,t0,t1,start,flag;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,;void init();/*
6、初始函数申明*/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; led2=1; led3=1; hao=0; delay(5); start=1; del
7、ay(5); while(!rest); if(flag=1) if(start=0)/选手按下,倒计时10秒 led3=0; wela1=0; wela2=0; delay(1);TR0=0;TR1=1; display(shi,ge,hao); delay(1); if(start=1)/主持人按下,倒计时30秒 led1=0; 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; sh
8、u1=10; wela_hao=0; 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=tablege; delay(5); wela2=1; P0=tableshi; delay(5); wela_hao=0; P2=tableh
9、ao; delay(5);void keyscan()/*按键扫描函数*/ if(key1=0) delay(5);if(key1=0) hao=1; P2=tablehao; start=0; TR1=1; TR0=0; delay(5); while(!key1); if(key2=0) delay(5);if(key2=0) hao=2; P2=tablehao; start=0; delay(5); while(!key2); if(key3=0) delay(5);if(key3=0) hao=3; P2=tablehao; start=0; delay(5); while(!key
10、3); if(key4=0) delay(5);if(key4=0) hao=4; P2=tablehao; start=0; delay(5); while(!key4); if(key5=0) delay(5);if(key5=0) hao=5; P2=tablehao; start=0; delay(5); while(!key5); if(key6=0) delay(5);if(key6=0) hao=6; P2=tablehao; start=0; delay(5); while(!key6); if(key7=0) delay(5);if(key7=0) hao=7; P2=tab
11、lehao; start=0; delay(5); while(!key7); if(key8=0) delay(5);if(key8=0) hao=8; P2=tablehao; start=0; delay(5); while(!key8); void delay(uint z)/*延时函数*/ uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);void time0() interrupt 1/*定时器0*/ TH0=(65536-50000)/256; TL0=(65536-50000)%256; shi=shu/10; ge=shu%10; t0+;
12、if(t0=20) t0=0; shu-; shi=shu/10; ge=shu%10; if(shu=0) while(1) shu=0; hao=0; led1=1; led2=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;
13、if(shu1=0) while(1) shu1=0; hao=0; led1=1; led3=1; led2=0; wela1=0; wela2=0; delay(1); display(shi,ge,hao); 九 、总结通过这次制作,学习了一些关于电子制作方面的知识,同时也发现我们有很多不足。比如对STC系列单片机,锁存器芯片不熟悉,对仿真软件的操作不熟练。这些问题使我们在制作中遇到了很多问题,比如第一次给P0口的数码管加了锁存器,这使得程序运行遇到问题,数码管个位与十位不能正常显示。因为没有找到共阴数码管,第一次用共阳数码管代替,结果P2口单个数码管亮度显示很暗。在设计抢答器程序时,我们参考了网上找到的程序,发现跟自己的的硬件有很多出入,我们做了很多修改,最终使得程序符合硬件要求。由于粗心,将数码管a、b、c、d等几个口焊反,结果焊接的很不理想。这些问题使我们对第一次的作品不满意,我们在请教老师和学长。然后找到了问题。将显示选手的数码管换成共阴数码管,去掉P0口的锁存器,重新买了原件,按照解决办法重新焊接,我们对第二次的结果比较满意。为了焊接电路板,我们购买了电烙铁、万用表、焊锡、镊子等元器件,掌握了一些焊接技巧,同时也发现我们对理论掌握还不够,特别是数电方面。虽然我们现在大一,但我们会抓紧时间学习电子制作方面的知识。感谢学院给我们这次学习交流的机会!