历史上的今天
返回首页

历史上的今天

今天是:2024年09月29日(星期日)

正在发生

2019年09月29日 | 课程设计题二:7人多数表决器

2019-09-29 来源:eefocus

要求:


1、7人多数表决逻辑:多数通过。


2、在主持人控制下,10秒内表决有效。


3、采用数码管显示表决10秒倒计时。


4、表决结束后用发光二极管及数码管显示表决结果,数码管显示结果:通过、不通过,同意人数。


5、设主持人控制键、复位键。


           控制键:启动表决


           复位键:系统复位


6、表决开始、结束采用声音提示。


一、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 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 spk=P1^0; //定义蜂鸣器

 

int djs,js=0;    //djs和bt是初始倒计时时间

//flag1~7用来保证在未开始表决之前误按   flagD用来控制是否显示倒计时  bjs表决计数

int flag1=0,flag2=0,flag3=0,flag4=0,flag5=0,flag6=0,flag7=0,flagD=0,bjs=0;  

int table[]={0x5f,0x44,0x9d,0xd5,0xc6,0xd3,0xdb,0x45,0xdf,0xd7,0x80,0x9b};

  //   0    1   2    3    4    5    6     7   8     9   E

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(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 djsxs10() //第一位数码管显示 0

{

  P0=0x5f; //第一位数码管显示0

    smg1=0;

    delayms(3);

    smg1=1;

}

void djsxs11() //第一位数码管显示1

{

  P0=0x44; //第一位数码管显示1

    smg1=0;

    delayms(3);

    smg1=1;

}

void djsxs20() //第二位数码管显示 -

{

P0=0x80; //第二位数码管显示-

smg4=0;

delayms(3);    

smg4=1;

}

void djsxs30() //第三位数码管显示 -

{

P0=0x80; //第三位数码管显示-

smg2=0;

delayms(3);    

smg2=1;

}

void djsxs0()  //第四位数码管显示0

{

P0=table[0];

    smg3=0;

    delayms(3);

    smg3=1; //第四位数码管显示0

 

}

void djsxs1()  //第四位数码管显示1

{

P0=table[1];     //第四位数码管显示1

    smg3=0;

    delayms(3);

    smg3=1;   

 

}

void djsxs2()  //第四位数码管显示2

{

P0=table[2];

    smg3=0;

    delayms(3);

    smg3=1; //第四位数码管显示2

 

}

推荐阅读

史海拾趣

启攀微电子(Chiphomer)公司的发展小趣事

在知识产权保护方面,启攀微电子高度重视自主创新能力的培养和提升。公司成立了专门的知识产权保护团队,负责申请和管理公司的专利和集成电路布图设计专有权。截至目前,公司累计申请专利已达26项,集成电路布图设计专有权54项。这些知识产权的取得不仅保护了公司的技术成果和市场地位,也为公司的持续创新提供了有力的支持。

洲光源(Chau Light)公司的发展小趣事

随着技术的不断发展和市场的不断变化,洲光源公司意识到单一的产品线已经无法满足市场的多样化需求。因此,公司开始实施多元化战略,积极拓展新的应用领域和市场。通过与国内外知名企业和研究机构的合作,洲光源成功将红外LED技术应用于汽车电子、医疗电子、生物识别等领域,并取得了显著的成果。这些新的应用领域不仅为洲光源公司带来了更多的商机,也进一步提升了公司的技术实力和品牌影响力。

BOPLA公司的发展小趣事

在国内市场取得一定成绩后,BOPLA开始将目光投向海外市场。通过参加国际电子展会、与海外客户建立合作关系等方式,公司成功将产品打入国际市场。同时,BOPLA还积极调整产品策略,根据不同国家和地区的市场需求,推出定制化的电子元件产品,进一步扩大了市场份额。

D+H Mechatronic AG公司的发展小趣事

随着市场竞争的加剧,D+H Mechatronic AG开始调整其市场布局策略。公司根据市场需求和产品特点,有针对性地开拓新的市场领域。同时,公司还加强了与客户的沟通和合作,深入了解客户需求并提供定制化的解决方案。这些举措使公司在激烈的市场竞争中保持了稳定的增长态势,并逐步巩固了其在电子行业中的地位。

富捷(FOJAN)公司的发展小趣事

随着电子元器件市场的不断扩大,富捷电子积极实施产能扩张计划。自2020年起,公司相继启动了多个扩产项目,包括一期100亿产能生产基地项目建设和二期车规电阻产能扩充项目。这些项目的顺利实施,极大地提升了公司的生产能力和市场响应速度,有效满足了智能终端、5G、工业互联网等重要行业对电子元器件的旺盛需求。同时,富捷电子还通过优化生产流程、提升设备自动化水平等措施,进一步提高了生产效率和产品质量。

Caddock公司的发展小趣事

在追求经济效益的同时,Caddock公司也注重环保和可持续发展。公司积极推行绿色制造理念,通过优化生产工艺、降低能耗和减少废弃物排放等措施,实现了环保与经济效益的双赢。此外,公司还致力于研发环保型电阻材料和技术,为推动电子行业的绿色发展做出了积极贡献。

这些故事展示了Caddock公司在电子行业发展的不同阶段所取得的成就和面临的挑战。通过不断创新、拓展市场和注重可持续发展,Caddock公司逐渐成为了电子行业中的佼佼者。然而,这些故事仅为虚构创作,实际发展情况可能有所不同。如需了解更多关于Caddock公司的真实发展历程和故事,建议查阅相关官方资料或行业报告。

问答坊 | AI 解惑

一款简单容易制作的调频发射机

1)高频三极管V1和电容C3、C5、C6组成一个电容三点式的振荡器   2)C4、L组成一个谐振器:谐振频率就是调频话筒的发射频率,根据图中元件的参数发射频率可以在88~108MHZ之间,正好覆盖调频收音机的接收频率,通过调整L的数值(拉伸或者压缩线 ...…

查看全部问答>

wince6.0,RAS拨号的问题。

写一个用RAS拨号连接的程序,连接成功了,但是中间状态显示有问题, LRESULT CGPRSDlg::WindowProc(UINT mesaage,WPARAM wParam,LPARAM lParam) {    if (mesaage==WM_RASDIALEVENT)      {      ...…

查看全部问答>

ADS环境下延时时间计算?

对ADS不是很熟悉,以前用Keil的时候可以软件仿真直接查看设定频率下延时函数的延时时间,但不知道ADS下是怎么看的,比如主频是60M,那下面这段延时函数的延时时间是多少呢?太菜了,还问这么低级的问题。取t=1情况计算。谢谢了!ARM7内核 void Del ...…

查看全部问答>

RAS自动拨号问题

开始自动拨号后,弹出对话框让输入用户名和密码,点击OK关闭对话框确总是拨不上,用户名和密码在RASDIALPARAMS中已经写入了.…

查看全部问答>

问一个native api的问题

我在驱动里面hook了NTSTATUS NtTerminateProcess(     IN HANDLE ProcessHandle OPTIONAL,     IN NTSTATUS ExitStatus)这个函数 我用下面代码能够打印出来进程名, char output[15]; ResultStatus = ObReferenceObjectBy ...…

查看全部问答>

运放

如附件,此运放可实现电流Ip输出:电流Ip和电压Vdem是有一定关系的,为什么我搭的电路不好使,有人可以帮忙分析一下吗,这电路的原理是什么 …

查看全部问答>

征集DIY数控实验电源的显示面板设计

为更丰富本次DIY数控电源的活动,又恰逢站方推出430铁电实验板的团购,为让更多的网友能够参与到本次活动中,现征集DIY数控实验电源的显示面板设计,本面板独立于电源本身,只是一个显示操控装置,与电源板通过串口互联,用协议和指令控制电源板的 ...…

查看全部问答>

msp430datasheet

msp430 x11x datasheet…

查看全部问答>

9013 8050 8550三极管作开关用时频率可达到多大

013 8050 8550三极管作开关用时频率可达到多大0分 如题,我要用单片机io产生的pwm控制一个大功率led的亮度,用三极管做一个简单的驱动电路,大家有什么好建议…

查看全部问答>

再次求大神帮忙看这次什么地方出错了!谢谢了

本帖最后由 紫瑶穹天 于 2014-5-21 17:50 编辑 这是我的连接的图,运行后出错了!不知道怎么改,谢谢帮忙! …

查看全部问答>