找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 900|回复: 11
打印 上一主题 下一主题
收起左侧

求思路 7人表决权器的编程代码和仿真图

[复制链接]
跳转到指定楼层
楼主
ID:1078985 发表于 2023-5-22 01:46 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由于本论坛禁止直接求程序,禁止伸手党,所以向大家请教一下大致的实现方法与思路,理清头绪后我自己来写程序去实现,谢谢大家










实现7人同时投票,7个按钮,每人只能按一次,实现多投无效。用2个数码管显示票数,分赞成和反对。
主持人1个按钮控制表决开始和表决暂停以及票数清零。(按一次按钮为表决开始,按第二次按钮为表决暂停,按第三次按钮为票数清零)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:1083552 发表于 2023-6-12 13:21 | 只看该作者
这主要是对按钮的控制。具体思路可如下:
回复

使用道具 举报

板凳
ID:1083552 发表于 2023-6-12 13:23 | 只看该作者
硬件
准备硬件:7个按钮、2个数码管、一个主持人按钮、8051单片机及其最小系统电路。
连接按钮:将7个按钮连接到单片机的I/O口,每个按钮连接到一个独立的I/O口。
连接数码管:将2个数码管连接到单片机的I/O口,用于显示赞成票数和反对票数。
连接主持人按钮:将主持人按钮连接到单片机的一个独立I/O口。
软件
初始化:编写程序,在单片机上初始化相关的I/O口和变量,将票数初始化为0。
主持人按钮控制:通过对主持人按钮的检测,实现表决开始、表决暂停和票数清零功能。具体逻辑如下:
当主持人按钮按下时,检测按钮状态,如果是第一次按下,则表决开始,进入投票状态;如果是第二次按下,则表决暂停,停止接受投票;如果是第三次按下,则票数清零。
投票控制:在表决开始状态下,检测每个投票按钮的状态。如果按钮按下,表示对应的人投了一票。对应的票数变量加1,并更新数码管显示的票数。
限制每人只能按一次:可以使用一个数组或位图来记录每个人是否已经投过票。在投票控制中,检测按钮按下时,先检查对应的人是否已经投过票,如果是,则忽略该按键操作,不进行票数增加。
回复

使用道具 举报

地板
ID:824490 发表于 2023-6-12 14:11 | 只看该作者
想成为有用的人 发表于 2023-6-12 13:23
硬件
准备硬件:7个按钮、2个数码管、一个主持人按钮、8051单片机及其最小系统电路。
连接按钮:将7个按 ...

弃权票要计算不?
回复

使用道具 举报

5#
ID:155507 发表于 2023-6-12 15:47 | 只看该作者
回复

使用道具 举报

6#
ID:1083552 发表于 2023-6-12 16:10 | 只看该作者
弃权票相当于某一个IO没有输入,不需要考虑
回复

使用道具 举报

7#
ID:341045 发表于 2023-6-13 00:11 | 只看该作者
7人投票, 是排队投票的不需要7个按钮, 否则就需要14个按钮(每个人都是赞成反对2个按钮), 所以开关是要15个, 7人投票, 最多只是到7, 所以赞成票数显示只要一位数码管就好了, 反对也要一位数码管共要2个一位数码管.  单片机IO占用, 二个数码管的abcdefg段同字段连接占7个IO, 另外7个赞成开关, 7个反对开关也连这7个IO,然后2个数码管的位(一般用共阴的多)占2个IO, 7个赞成开关共地占一个IO, 7个反对开关共地占一个IO, 主持开关单独一个IO, 这样要12个IO的单片机就好了. 程序设计开一个2mS定时中断, 在中断中4步循环, 第一步,2个显示位,2个开关位置1, 第一个显示数据到7段字段IO然后第一位IO置0显示第一位后退出中断. 下一次进中断时执行第二步, 2个显示位2个开关位置1, 取第二位数据到显示段后开第二段显示后退出. 第三次进中断执行第三步, 2个显示位置和一个开关位置1, 另一个开关位置0, 7个IO置1后可读7个开关状态,开关稳定(防抖)后进行处理(就是加赞成或反对数或不加)后退出中断. 第四次时中断执行第四步, 处理另7个开关, 下一次进中断又从第一步开始. 这样8毫秒完成一次循环,看不出显示闪. 主程序中处理主持开关即可.还有如果是大字段数码管驱动得加三极管, 如果每个按钮位距离远可用光耦来处理干扰问题.

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

8#
ID:824490 发表于 2023-6-13 07:24 | 只看该作者
想成为有用的人 发表于 2023-6-12 16:10
弃权票相当于某一个IO没有输入,不需要考虑

某一个IO没有输入,不代表它的电平是是空的,要么1,要么0。与你的同意和反对是不是有冲突?
回复

使用道具 举报

9#
ID:1083552 发表于 2023-6-15 16:58 | 只看该作者
名字不是重点 发表于 2023-6-13 07:24
某一个IO没有输入,不代表它的电平是是空的,要么1,要么0。与你的同意和反对是不是有冲突?

我是这样想的:用七个IO连接七个按键,共阴/阳随便,按下就计数,表示同意。不按就表示反对。然后给出结果。我认为其实弃票并不影响表决,不影响表决,就不给它资源。除非七个人都弃票。
回复

使用道具 举报

10#
ID:824490 发表于 2023-6-16 10:24 | 只看该作者
想成为有用的人 发表于 2023-6-15 16:58
我是这样想的:用七个IO连接七个按键,共阴/阳随便,按下就计数,表示同意。不按就表示反对。然后给出结 ...

为了表示公平,当弃权达到一定票数,当下的投票行为无效!
回复

使用道具 举报

11#
ID:1084356 发表于 2023-6-16 10:57 | 只看该作者
为了表示公平,当弃权达到一定票数
回复

使用道具 举报

12#
ID:1078985 发表于 2024-4-30 22:13 | 只看该作者
angmall 发表于 2023-6-12 15:47
给你一个示例参考

各位大神,十分感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表