一、系统设计背景与核心目标

在会议表决、选举投票等场景中,高效、准确的投票系统是保障决策公平性的重要工具。传统纸质投票存在统计繁琐、耗时较长等问题,而电子投票器能实现投票数据的实时采集与自动统计,大幅提升效率。8086 微处理器具备强大的数据处理能力和接口扩展能力,适合设计一套支持多人同时投票、结果实时显示的投票器系统,满足中小型会议的投票需求。
本系统核心目标是:以 8086 微处理器为控制核心,设计一套投票器仿真系统,支持 10 路投票输入(代表 10 名投票者),可对 3 个候选选项(A、B、C)进行投票,实现投票数据的实时采集、统计(得票数及得票率),通过数码管和 LCD 显示投票过程及最终结果,支持投票清零和结束锁定功能。通过仿真验证投票数据采集的准确性(100% 正确统计)、响应速度(≤50ms)及结果显示的实时性,为会议投票场景提供高效解决方案。

二、系统整体架构规划

系统采用 “投票输入 - 核心控制 - 数据存储 - 显示输出” 的架构,以 8086 微处理器为核心协调各模块工作。
投票输入模块由 10 路投票按键组组成,每组包含 A、B、C 三个选项按键,供 10 名投票者进行选择。核心控制模块负责扫描投票按键状态、识别有效投票(防止重复投票)、统计各选项得票数,并将数据存储至存储器。
数据存储模块采用静态 RAM(6116),用于暂存各选项的得票数和已投票人数。显示输出模块包括 3 组数码管(分别显示 A、B、C 的得票数)和 1602LCD 显示屏(显示得票率和投票状态),实时反馈投票进度和结果。系统还设置 “清零” 和 “结束” 按键,用于重置投票数据和锁定投票过程。仿真环境需模拟 10 名投票者的投票操作,验证系统的统计准确性和显示效果。

三、硬件模块详细设计

(一)核心控制模块
以 8086 微处理器为核心,扩展 8255 并行接口芯片(连接投票按键和显示模块)、8253 定时器(提供扫描定时和防抖动延时)和 6116 静态 RAM(存储投票数据)。8086 通过 74LS138 地址译码器分配外设地址,将 8255 的 PA 口、PB 口、PC 口和 RAM 分别映射至 0x60-0x63、0x70-0x77 地址空间,数据总线经 74LS245 缓冲器增强驱动能力,确保数据传输稳定。系统时钟采用 10MHz 晶振,经分频后为 8086 提供 5MHz 工作时钟,保证投票扫描和数据处理的实时性。
(二)投票输入模块
10 路投票按键组采用矩阵式布局,每路对应 1 名投票者,包含 A、B、C 三个独立按键,共 30 个按键。按键行线对应 10 名投票者(ROW0-ROW9),连接 8255 扩展接口(通过 74LS164 串并转换芯片扩展,将 8086 的 1 路输出扩展为 10 路行线信号);列线对应三个选项(COL0-A、COL1-B、COL2-C),连接 8255 的 PA0-PA2 引脚,列线通过 10kΩ 上拉电阻接 5V 电源。
当某名投票者按下某选项按键时,对应行线与列线导通,列线电平被拉低。每个按键两端并联 100nF 陶瓷电容进行硬件消抖,配合软件消抖(延时 20ms 二次检测),确保投票信号稳定有效。系统通过行线扫描确定投票者编号,通过列线状态识别所选选项。
(三)数据存储模块
选用 6116 静态 RAM(2KB 容量),地址线连接 8086 的 A0-A10,数据线连接 8086 的数据总线,用于存储:
各选项得票数(地址 0x000-A 得票数,0x001-B 得票数,0x002-C 得票数);
已投票人数(地址 0x003);
投票者状态标记(地址 0x010-0x019,每字节对应 1 名投票者,0 表示未投票,1 表示已投票)。
RAM 的读写控制由 8086 的 WR、RD 信号控制,确保投票数据的可靠存储与读取。
(四)显示输出模块
数码管显示:3 组 3 位共阴极数码管,分别对应 A、B、C 选项,用于显示得票数(0-10)。每组数码管的段码通过 74LS373 锁存器连接 8255 的 PB 口(PB0-PB6),位码通过 74LS138 译码器连接 8255 的 PC0-PC2(控制 A 组)、PC3-PC5(控制 B 组)、PC6-PC7(控制 C 组高位),采用动态扫描方式(频率 100Hz)驱动,确保显示稳定。
LCD 显示:1602LCD 显示屏通过 8 位数据总线连接 8086 的扩展接口,实时显示各选项得票率(如 “A:30% B:50% C:20%”)和投票状态(如 “VOTING…”“FINISHED”),投票结束后显示最终结果。
(五)功能按键与电源模块
设置 “清零”(CLR)和 “结束”(END)两个独立按键,分别连接 8255 的 PD0 和 PD1 引脚(通过 8255 扩展口),按下时产生低电平信号,用于触发投票数据重置和投票过程锁定。电源模块采用 5V 直流电源,为微处理器、按键、存储器及显示模块供电,输入端并联 100μF 电解电容和 0.1μF 陶瓷电容,减少纹波干扰。
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

四、软件模块功能实现

(一)投票扫描与识别
8086 通过 74LS164 逐行输出低电平扫描信号(ROW0-ROW9 依次有效),同时通过 8255 的 PA 口读取列线状态(COL0-COL2):
若检测到某行某列电平为低(按键按下),结合行号确定投票者编号,列号确定所选选项;
检查该投票者状态标记(RAM 地址 0x010 + 行号),若为 0(未投票)则判定为有效投票,否则忽略(防止重复投票);
有效投票时,对应选项得票数加 1(RAM 地址 0x000 + 列号),已投票人数加 1(RAM 地址 0x003),并将该投票者状态标记设为 1。
扫描周期由 8253 定时器控制,每 10ms 扫描一次,平衡响应速度和系统开销。
(二)数据统计与处理
实时读取 RAM 中的得票数数据(A、B、C)和已投票人数,计算得票率:
得票率 =(选项得票数 ÷ 已投票人数)×100%(已投票人数>0 时有效);
若已投票人数 = 10,自动锁定投票功能,禁止后续投票操作。
数据处理结果实时更新至显示缓冲区,供显示模块调用。
(三)显示驱动程序
数码管显示:将 A、B、C 的得票数(0-10)转换为 3 位 BCD 码,通过动态扫描依次驱动三组数码管,每位数码管导通时间约 3ms;
LCD 显示:按格式 “AX% BX% CX%” 显示得票率(保留整数位),投票状态显示 “VOTING”(未结束)或 “FINISHED”(已结束),每 500ms 刷新一次。
(四)功能按键处理
清零键:按下时,8086 将 RAM 中得票数、已投票人数和投票者状态标记全部清零,数码管和 LCD 显示重置为初始状态(0 和 “VOTING…”);
结束键:按下时,系统锁定投票扫描功能,LCD 显示 “FINISHED”,数码管保持当前得票数不变,仅响应清零键操作。

五、系统测试与优化

在 Proteus 仿真环境中验证系统功能:
投票准确性:10 名投票者分别选择 A、B、C,系统统计的得票数与实际投票情况完全一致,无漏计、多计现象;
重复投票防护:某投票者再次按下按键时,系统识别为无效投票,得票数不变化;
显示实时性:投票后数码管在 50ms 内更新得票数,LCD 得票率同步刷新;
功能按键:清零后所有数据重置为 0,结束后无法进行新投票,功能正常。
优化措施:针对投票高峰时的扫描延迟,采用中断方式触发扫描(每 5ms 一次),提高响应速度;若数码管显示闪烁,增加扫描频率至 150Hz;为防止按键抖动导致的误判,软件消抖延时延长至 30ms。

六、结语

基于 8086 的投票器仿真系统通过软硬件协同设计,实现了 10 人 3 选项的投票数据采集、统计与显示功能,解决了传统投票方式效率低下的问题。系统操作简便、统计准确、实时性强,适合中小型会议或选举场景使用。
后续可扩展至 20 路投票输入(增加一片 74LS164 扩展行线),或通过 RS232 接口连接上位机实现数据存档,进一步提升系统的实用性和扩展性,满足更大规模的投票需求。

文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐