历史上的今天
今天是:2024年09月29日(星期日)
2019年09月29日 | 课程设计题一:八人抢答器
2019-09-29 来源:eefocus
要求:
1、八人抢答逻辑:只有一个最先抢答有效。
2、在主持人控制下,10秒内抢答有效。
3、采用数码管显示抢答10秒倒计时,若有抢答直接结束,显示结果。
4、抢答结束后用数码管显示抢答结果:抢答有效人编号;若有异常(提前抢答,犯规),显示抢答人编号和E,本次抢答结束 。
5、设主持人控制键、复位键。
控制键:启动抢答
复位键:系统复位
6、开始、正常结束、抢答结束、违规抢答采用声音提示。
7、最后5S开始倒计时的时候有滴滴滴的计时音。
一、Protues仿真图:






二、程序源码:
因为注释非常的全,这里就不再进行讲解了。
/*******************************************************************************
================================================================================
【平 台】STC89C51_sumjess平台
【编 写】sumjess
【E-mail 】1371129880@qq.com
【软件版本】V2.0
【最后更新】2019年06月10日
【相关信息参考下列地址】
【网 站】
https://blog.csdn.net/qq_38351824
http://www.51hei.com/bbs/mcu-2-1.html
---------------------------------------------------------------------------------
【dev.env.】MDK4.02及以上版本
【Target 】STC89C51
第一次修订:2019/05/09
第二次修订:2019/05/21
第三次修订:2019/06/10
【problem 】
(1)库内补充的不全面;
(2)库内解释部分不全面;
(3)库内还存在一定的bug;
【direction】
下一步的目标就是把库继续集成!
【explain 】
为了方便使用,我也自己写了很多的库,和优化了算法和表示方式!
【warning】
目前程序中暂无错误 !
---------------------------------------------------------------------------------
没有完美的代码,只有不断的奉献,大家一起努力;
赠人玫瑰手留余香,欢迎大家反馈bug!
================================================================================
********************************************************************************/
#include #include sbit smg1=P2^4; //定义数码管第一位 sbit smg2=P2^6; //定义数码管第二位 sbit smg3=P2^7; //定义数码管第三位 sbit smg4=P2^5; sbit keyks=P2^2; //定义开始按键 sbit keytz=P2^1; //定义停止按键 sbit keyqc=P2^0; //定义清除按键 sbit key1=P1^4; //定义1号抢答选手 sbit key2=P1^5; //定义2号抢答选手 sbit key3=P1^6; //定义3号抢答选手 sbit key4=P1^7; //定义4号抢答选手 sbit key5=P3^4; //定义5号抢答选手 sbit key6=P3^5; //定义6号抢答选手 sbit key7=P3^6; //定义7号抢答选手 sbit key8=P3^7; //定义8号抢答选手 sbit spk=P1^0; //定义蜂鸣器 int djs,js=0; //djs和bt是初始倒计时时间 unsigned char flag=0; int table[]={0x5f,0x44,0x9d,0xd5,0xc6,0xd3,0xdb,0x45,0xdf,0xd7,0x80,0x9b}; void delayms(uint z) //毫秒 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void Timer0_init() //定时器0初始化 { js=0; TMOD=0x01; //设置定时器0为工作方式1(M1M0为01) TH0=(65536-45872)/256; //装初值11.0592M晶振定时50ms数为45872 TL0=(65536-45872)%256; ET0=1; //开定时器0中断 EA=1; //开总中断 } void timer0() interrupt 1 using 1 //定时器0中断服务函数 { TH0=(65536-45872)/256; //装初值11.0592M晶振定时50ms数为45872 TL0=(65536-45872)%256; js++; //叠加20次 if(flag==1) // { if(js<8) spk=0; //蜂鸣器响 else spk=1; //蜂鸣器停 } if(js==20) { js=0; //清空 djs--; //产生1s的倒计时 } } void djsxs() //显示倒计时函数 { int b1,b2; b1=djs/10; b2=djs%10; //将倒计时时间分成高低位 P0=table[b1]; smg2=0; delayms(3); smg2=1; //显示十位数字 P0=table[b2]; smg3=0; delayms(3); //显示个位数字 smg3=1; } void djsxse() //第二位数码管显示 E { P0=0x9b; //第三位数码管显示E smg2=0; delayms(3); smg2=1; } void djsxs30() //第三位数码管显示 - { P0=0x80; //第三位数码管显示- smg4=0; delayms(3); smg4=1; } void djsxs22() //4位数码管显示- - - - { P0=0x80; //第一位数码管显示- smg1=0; delayms(3); smg1=1; P0=0x80; //第二位数码管显示- smg4=0; delayms(3); smg4=1; P0=0x80; //第三位数码管显示- smg2=0; delayms(3); smg2=1; P0=0x80; //第四位数码管显示- smg3=0; delayms(3); smg3=1; } void djsxs1() //第一位数码管显示1 { P0=table[1]; //第一位数码管显示1 smg1=0; delayms(3); smg1=1; } void djsxs2() //第一位数码管显示2 { P0=table[2]; smg1=0; delayms(3); smg1=1; //第一位数码管显示2 } void djsxs3() //第一位数码管显示3 { P0=table[3]; smg1=0; delayms(3); smg1=1; //第一位数码管显示3 } void djsxs4() //第一位数码管显示4 { P0=table[4]; smg1=0; delayms(3); smg1=1; //第一位数码管显示4 } void djsxs5() //第一位数码管显示5 { P0=table[5]; smg1=0; delayms(3); smg1=1; //第一位数码管显示5 } void djsxs6() //第一位数码管显示6 { P0=table[6]; smg1=0; delayms(3); smg1=1; //第一位数码管显示6 } void djsxs7() //第一位数码管显示7 { P0=table[7]; smg1=0; delayms(3); smg1=1; //第一位数码管显示7 } void djsxs8() //第一位数码管显示8 { P0=table[8]; smg1=0; delayms(3); smg1=1; //第一位数码管显示8 } void main() { int djs1=10; //修改倒计时第一处,共两处 Timer0_init(); //初始化定时器中断 spk=0;delayms(500);spk=1; //蜂鸣器不响 djs=10; //修改倒计时第二处,共两处
史海拾趣
|
今天运气很好,刚一上车就有座位,于是我就从容地从包里拿出临走前从办公室里顺的两瓣柚子,旁若无人地吃了起来,想着SOSO同志今天买的比上次好。 吃着柚子,思考这几天论坛里的一个也算是大热的帖子。我关注他,是EEWORLD论坛里几乎没有如此针锋 ...… 查看全部问答> |
|
我的电路板用一个1085-5V芯片转换成5V,用一个1085-3.3V转换成3.3V,5V给AD等外围芯片供电,3.3主要给核心板供电,我的程序运行一会,核心板,电源芯片就会很烫,电源芯片带的底板也很烫。功率也满足要求。请问各位高手该如何解决发热问题?… 查看全部问答> |
|
将内存单元1000-1030H中的内容复制到3000-3030H单元中去,原地址清0 我的代码在下面,下载地址1000H,自修改代码,他说改下载地址,自己内存放点东西,他要看到结果,不放东西全部是0,复制过去也没效果。老师很BT,要求十分严格。EMBESTIDE环境 ...… 查看全部问答> |
|
EZ430-RF2500 CC2500无线开发套件,EZ430-TMS37157 PaLFI 无源低频评估套件,展示 拿到两套开发套件,开包展示ing。EZ430-RF2500 CC2500无线开发套件EZ430-TMS37157 PaLFI 无源低频评估套件… 查看全部问答> |




