历史上的今天
返回首页

历史上的今天

今天是: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;                //修改倒计时第二处,共两处


推荐阅读

史海拾趣

Corex Intervest Inc公司的发展小趣事

Corex Intervest Inc公司在电子行业的发展历程中,始终保持着稳健的步伐和进取的精神。公司不断适应市场变化和技术更新,不断调整战略方向和发展重点。在未来,公司将继续加大研发投入,拓展新的应用领域和市场空间,为电子行业的发展贡献更多的力量。

这五个故事展示了Corex Intervest Inc公司在电子行业中的发展历程和取得的成就。从创立初期的艰难起步到技术创新、市场拓展、战略合作和持续发展的不断推进,Corex Intervest Inc公司始终保持着积极进取的精神和不断创新的态度,在电子行业中取得了显著的成绩。

BNS Solutions公司的发展小趣事

随着技术的不断进步,BNS Solutions公司意识到,要想在竞争激烈的电子行业中保持领先地位,必须不断拓展市场并寻求战略合作。于是,公司开始积极拓展国内外市场,与多家知名企业和机构建立了紧密的合作关系。通过合作,BNS Solutions公司不仅获得了更多的资源和支持,还成功将产品推广到了更广泛的市场领域。同时,公司还积极参与行业交流活动,不断提升自身在行业内的影响力和地位。

中移物联网(Chinamobile)公司的发展小趣事

中移物联网始终秉持开放、合作、共享的发展理念,与国内外众多企业建立了紧密的合作关系。公司积极与硬件设备厂商、软件开发商、解决方案提供商等开展技术合作,共同推动物联网技术的创新与应用。同时,中移物联网还与行业协会、学术机构建立合作关系,加强技术交流和合作研究,为构建良好的物联网产业生态做出了积极贡献。这些合作不仅提升了公司的技术实力和市场竞争力,也推动了整个物联网行业的健康发展。

Autotrol公司的发展小趣事

随着全球水资源日益紧张和水质问题的日益突出,水处理行业迎来了巨大的发展机遇。Autotrol公司凭借其在控制系统方面的独特优势和完善的企业管理体系,成功进军水处理领域。公司开发了一系列高端水处理设备和技术,为全球客户提供专业的水处理解决方案。同时,Autotrol还不断推出创新的水处理产品和服务,满足了客户对高效、环保、节能的需求。

Advanced Interconnections Corp公司的发展小趣事

在电子行业的早期阶段,AIC公司凭借其前瞻性的技术创新,成功开发了一种新型的连接器技术。这种连接器具有更高的传输速度和更强的稳定性,满足了市场对高性能电子产品的迫切需求。AIC公司的这一技术突破迅速获得了市场的认可,公司的销售额和市场份额均实现了快速增长。

Clover Display Limited公司的发展小趣事

品质管理是电子企业生存和发展的关键。Clover Display Limited深知这一点,因此在生产过程中始终严格把控品质。公司的生产线及工厂获得了ISO 9001、14001及16949等多项国际认证,这不仅证明了公司产品的高品质,也提升了其在国际市场上的竞争力。同时,公司还积极参与国际标准制定和行业交流活动,以不断提升自身的技术水平和市场影响力。

这五个故事虽然基于虚构的情节,但它们都基于Clover Display Limited在电子行业发展的真实背景和趋势。这些故事展示了公司在技术创新、市场拓展、品质管理等方面的努力和成就,也反映了电子行业的快速发展和变革。希望这些故事能够为您提供一个关于Clover Display Limited发展起来的有趣而全面的视角。

问答坊 | AI 解惑

英语版本资料专区!

做ti的东西,以后一些技术手册,设计方案的少不了和英语的东西打交道,所以开个话题,也方便大家查找!!!…

查看全部问答>

无线传输设备

大家好好看看 …

查看全部问答>

做技术是不太容易,难道做销售就容易吗

今天运气很好,刚一上车就有座位,于是我就从容地从包里拿出临走前从办公室里顺的两瓣柚子,旁若无人地吃了起来,想着SOSO同志今天买的比上次好。 吃着柚子,思考这几天论坛里的一个也算是大热的帖子。我关注他,是EEWORLD论坛里几乎没有如此针锋 ...…

查看全部问答>

电路板发热,电源芯片LT1085发热

我的电路板用一个1085-5V芯片转换成5V,用一个1085-3.3V转换成3.3V,5V给AD等外围芯片供电,3.3主要给核心板供电,我的程序运行一会,核心板,电源芯片就会很烫,电源芯片带的底板也很烫。功率也满足要求。请问各位高手该如何解决发热问题?…

查看全部问答>

求助一道很简单的题目

将内存单元1000-1030H中的内容复制到3000-3030H单元中去,原地址清0 我的代码在下面,下载地址1000H,自修改代码,他说改下载地址,自己内存放点东西,他要看到结果,不放东西全部是0,复制过去也没效果。老师很BT,要求十分严格。EMBESTIDE环境 ...…

查看全部问答>

【付费】在WinCe5.0下控制USB摄像头拍照的程序,联系QQ:1015689153

【付费】在WinCe5.0下控制USB摄像头拍照的程序,联系QQ:1015689153…

查看全部问答>

socket的建立

在vxworks下想实现socket的通讯,建立了一个虚拟机,里面跑的是vxworks,是服务端 在windows下,用VC实现的客户端。 问题是发现服务端的socket无法建立,不知是不是写错了,代码如下: netInit() {         struct sockad ...…

查看全部问答>

请问ST32复位时IO口处于什么状态?

                                 如题。我说的是复位过程中,而不是复位后。谢谢!!!…

查看全部问答>

EZ430-RF2500 CC2500无线开发套件,EZ430-TMS37157 PaLFI 无源低频评估套件,展示

拿到两套开发套件,开包展示ing。EZ430-RF2500 CC2500无线开发套件EZ430-TMS37157 PaLFI 无源低频评估套件…

查看全部问答>

有懂手机元件的吗,

问个事情,手机尾插能改装吗? 比如黑莓的手机尾插是 Micro 接口能改装成其他类型的,比如目前主流的安卓 USB 类型接口,再比如 HTC G2 默认也是畸形的 Micro 接口,能改装成现在 安卓手机主流的 USB 类型接口吗????求~…

查看全部问答>