课程设计题二:7人多数表决器

2019-09-29来源: eefocus关键字:表决器  系统复位  STC89C51

要求:


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

 

}

关键字:表决器  系统复位  STC89C51 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic476095.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:课程设计题三:日历和数字钟
下一篇:课程设计题三十三:基于单片机的电子钟

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

51单片机在表决系统中的应用
0 引言    随着我国社会主义民主的提高,表决器作为一种公正,迅速准确的表决工具,应用日益广泛。通过表决器,与会代表只需根据会议议程轻按表决器按钮,即可轻松地完成从签到到各类议案的电子表决工作。在不记名模式下,系统特有的保密功能使得代表按键能最大限度地反映其真实意愿,而不用担心被人窥视或记录追查。表决结果可自动统计产生,并根据会议要求以图文或报表方式来显示和打印。 1 设计方案    系统包括PC机:用于文件的编辑储存、打印、显示表决结果。大屏监视器显示表决结果及其它文件。表决采集网络:采集各代表的表决结果并做处理。经对系统功能要求的分析,认为单片机80C51最为适合
发表于 2011-11-10
51单片机在表决系统中的应用
【STM32H7教程】第14章 STM32H7的电源,复位和时钟系统
。14.2.2 系统上电启动系统上电到程序开始运行期间,H7都做哪些工作,一张时序图可以说明问题:对于上面的截图,主要看Operating mode部分,依次是Power down –> Reset -> Wait Oscillator ->HW system init -> Run -> Wait ACTVOS RDY –> Run,即断电状态 -> 复位状态 -> 等待HSI就绪->硬件初始化 -> 运行 -> 等ACTVOS位就绪 -> 正式运行。详细些的执行流程如下:当系统上电后,POR(Power on reset 上电复位)会检测VDD供电,当VDD大于
发表于 2019-08-27
【STM32H7教程】第14章 STM32H7的电源,复位和时钟系统
STM32F103C8T6最小系统地的构建(5)_复位电路
复位电路的作用是为了是系统恢复到初始状态的,单片机的复位方式也是存在好几种的:上电复位,系统复位,备份区域复位上电复位:其产生的条件是,当系统上电、掉电,以及系统从待机模式返回时,发生电源复位。电源复位能够复位除了备份区域寄存器之外的所有寄存器的状态。系统复位:以下任一事件发生时,均能产生一个系统复位:1. NRST引脚上的低电平(外部复位)2. 窗口看门狗计数终止(WWDG复位)3. 独立看门狗计数终止(IWDG复位)4. 软件复位(SW复位)5. 低功耗管理复位系统复位能够复位除时钟控制寄存器CRS中的复位标志和备份区域中的寄存器之外的所有寄存器。备份区域复位:对于备份区域的复位,一种是在软件复位的时候设定备份区域控制寄存器中
发表于 2019-07-24
STM32F103C8T6最小系统地的构建(5)_复位电路
使用汽车起停系统,如何使信息娱乐设备不复位?
引擎——例如,如果车轮开始滚动、电池电量降至过低或挡风玻璃上出现水汽凝结。此外,大多数系统可识别临时停车和行程结束之间的差异。如果驾驶员的安全带解开,或者车门或行李箱打开,系统不会重新起动引擎。如有需要,按下按钮即可完全禁用自动启停功能(至少现在是这样)。但是,当引擎重新起动,12 V电池有可能已经降至5 V以下,当信息娱乐系统开启或其他电子设备需要高于5 V的电压时,可能导致这些系统复位。有些导航和信息娱乐系统采用5 V或更高的输入电压工作。当输入电压在引擎重新起动期间降至5 V以下,若DC-DC转换器仅具有输入电压降压功能,这些系统将复位。显然,汽车在启停状态下重新起动时,音乐播放器或导航系统的复位是无法接受的。解决方案ADI
发表于 2018-08-31
使用汽车起停系统,如何使信息娱乐设备不复位?
STM32 内核复位 与 系统复位 区别及程序实现
1 写在前面某些系统允许复位,但对外设又有特殊要求:某一个IO状态不能因为复位而改变,某一个定时器计数器不能改变等。例子:A系统通过一个IO控制B系统的电源,而这个IO置高时才开启B系统的电源。正常工作过程中,B系统只有收到A系统关机命令任务才会进行关机(也就是说不能掉电关机),而A系统在工作过程中有复位的需求。这个时候如果使用常规的复位方式,就会复位IO,不符合要求。如果有一种方式只复位内核而不复位外设就好了。接下来就介绍两种复位的实现方式。2 关于复位说到复位,我们都不会陌生,系统基本都有一个复位按键。复位的种类有很多:上电复位、掉电复位、复位引脚复位、看门狗复位、软件复位等。上面说的复位按键,也就是对应复位引脚复位;而本文
发表于 2018-08-22
STC89C52MCU--软件实现系统复位
单片机系统复位(热启动之一)STC单片机ISP/IAP控制寄存器在特殊的功能寄存器中的地址为E7H,不能为寻址,该寄存器用来管理和 ISP/IAP 相关功能的设定以及是否软件复位等。单片机复位时,该寄存器全部清零。ISP/IAP寄存器位序号D7D6D5D4D3D2D1D0位符号ISPENSWBSSWRSTWT2WT1WT0ISPEN -- ISP/IAP 功能允许位。0禁止允许ISP/iAP变成改变FlashSWBS -- 软件选择从用用程序区启动,还是ISP程序区启动。要与SWRST直接配合才可以确定。SWRSt -- 1 产生软件复位,硬件自动清零。0不操作。WT2、WT1、WT0 -- ISP/IAP编程时间设定CPU等待
发表于 2018-08-22
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved