找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2108|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

求思路 7人表決權(quán)器的編程代碼和仿真圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1078985 發(fā)表于 2023-5-22 01:46 來自手機(jī) | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
由于本論壇禁止直接求程序,禁止伸手黨,所以向大家請教一下大致的實(shí)現(xiàn)方法與思路,理清頭緒后我自己來寫程序去實(shí)現(xiàn),謝謝大家










實(shí)現(xiàn)7人同時投票,7個按鈕,每人只能按一次,實(shí)現(xiàn)多投無效。用2個數(shù)碼管顯示票數(shù),分贊成和反對。
主持人1個按鈕控制表決開始和表決暫停以及票數(shù)清零。(按一次按鈕為表決開始,按第二次按鈕為表決暫停,按第三次按鈕為票數(shù)清零)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1083552 發(fā)表于 2023-6-12 13:21 | 只看該作者
這主要是對按鈕的控制。具體思路可如下:
回復(fù)

使用道具 舉報

板凳
ID:1083552 發(fā)表于 2023-6-12 13:23 | 只看該作者
硬件
準(zhǔn)備硬件:7個按鈕、2個數(shù)碼管、一個主持人按鈕、8051單片機(jī)及其最小系統(tǒng)電路。
連接按鈕:將7個按鈕連接到單片機(jī)的I/O口,每個按鈕連接到一個獨(dú)立的I/O口。
連接數(shù)碼管:將2個數(shù)碼管連接到單片機(jī)的I/O口,用于顯示贊成票數(shù)和反對票數(shù)。
連接主持人按鈕:將主持人按鈕連接到單片機(jī)的一個獨(dú)立I/O口。
軟件
初始化:編寫程序,在單片機(jī)上初始化相關(guān)的I/O口和變量,將票數(shù)初始化為0。
主持人按鈕控制:通過對主持人按鈕的檢測,實(shí)現(xiàn)表決開始、表決暫停和票數(shù)清零功能。具體邏輯如下:
當(dāng)主持人按鈕按下時,檢測按鈕狀態(tài),如果是第一次按下,則表決開始,進(jìn)入投票狀態(tài);如果是第二次按下,則表決暫停,停止接受投票;如果是第三次按下,則票數(shù)清零。
投票控制:在表決開始狀態(tài)下,檢測每個投票按鈕的狀態(tài)。如果按鈕按下,表示對應(yīng)的人投了一票。對應(yīng)的票數(shù)變量加1,并更新數(shù)碼管顯示的票數(shù)。
限制每人只能按一次:可以使用一個數(shù)組或位圖來記錄每個人是否已經(jīng)投過票。在投票控制中,檢測按鈕按下時,先檢查對應(yīng)的人是否已經(jīng)投過票,如果是,則忽略該按鍵操作,不進(jìn)行票數(shù)增加。
回復(fù)

使用道具 舉報

地板
ID:824490 發(fā)表于 2023-6-12 14:11 | 只看該作者
想成為有用的人 發(fā)表于 2023-6-12 13:23
硬件
準(zhǔn)備硬件:7個按鈕、2個數(shù)碼管、一個主持人按鈕、8051單片機(jī)及其最小系統(tǒng)電路。
連接按鈕:將7個按 ...

棄權(quán)票要計算不?
回復(fù)

使用道具 舉報

5#
ID:155507 發(fā)表于 2023-6-12 15:47 | 只看該作者
回復(fù)

使用道具 舉報

6#
ID:1083552 發(fā)表于 2023-6-12 16:10 | 只看該作者
棄權(quán)票相當(dāng)于某一個IO沒有輸入,不需要考慮
回復(fù)

使用道具 舉報

7#
ID:341045 發(fā)表于 2023-6-13 00:11 | 只看該作者
7人投票, 是排隊投票的不需要7個按鈕, 否則就需要14個按鈕(每個人都是贊成反對2個按鈕), 所以開關(guān)是要15個, 7人投票, 最多只是到7, 所以贊成票數(shù)顯示只要一位數(shù)碼管就好了, 反對也要一位數(shù)碼管共要2個一位數(shù)碼管.  單片機(jī)IO占用, 二個數(shù)碼管的abcdefg段同字段連接占7個IO, 另外7個贊成開關(guān), 7個反對開關(guān)也連這7個IO,然后2個數(shù)碼管的位(一般用共陰的多)占2個IO, 7個贊成開關(guān)共地占一個IO, 7個反對開關(guān)共地占一個IO, 主持開關(guān)單獨(dú)一個IO, 這樣要12個IO的單片機(jī)就好了. 程序設(shè)計開一個2mS定時中斷, 在中斷中4步循環(huán), 第一步,2個顯示位,2個開關(guān)位置1, 第一個顯示數(shù)據(jù)到7段字段IO然后第一位IO置0顯示第一位后退出中斷. 下一次進(jìn)中斷時執(zhí)行第二步, 2個顯示位2個開關(guān)位置1, 取第二位數(shù)據(jù)到顯示段后開第二段顯示后退出. 第三次進(jìn)中斷執(zhí)行第三步, 2個顯示位置和一個開關(guān)位置1, 另一個開關(guān)位置0, 7個IO置1后可讀7個開關(guān)狀態(tài),開關(guān)穩(wěn)定(防抖)后進(jìn)行處理(就是加贊成或反對數(shù)或不加)后退出中斷. 第四次時中斷執(zhí)行第四步, 處理另7個開關(guān), 下一次進(jìn)中斷又從第一步開始. 這樣8毫秒完成一次循環(huán),看不出顯示閃. 主程序中處理主持開關(guān)即可.還有如果是大字段數(shù)碼管驅(qū)動得加三極管, 如果每個按鈕位距離遠(yuǎn)可用光耦來處理干擾問題.

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

8#
ID:824490 發(fā)表于 2023-6-13 07:24 | 只看該作者
想成為有用的人 發(fā)表于 2023-6-12 16:10
棄權(quán)票相當(dāng)于某一個IO沒有輸入,不需要考慮

某一個IO沒有輸入,不代表它的電平是是空的,要么1,要么0。與你的同意和反對是不是有沖突?
回復(fù)

使用道具 舉報

9#
ID:1083552 發(fā)表于 2023-6-15 16:58 | 只看該作者
名字不是重點(diǎn) 發(fā)表于 2023-6-13 07:24
某一個IO沒有輸入,不代表它的電平是是空的,要么1,要么0。與你的同意和反對是不是有沖突?

我是這樣想的:用七個IO連接七個按鍵,共陰/陽隨便,按下就計數(shù),表示同意。不按就表示反對。然后給出結(jié)果。我認(rèn)為其實(shí)棄票并不影響表決,不影響表決,就不給它資源。除非七個人都棄票。
回復(fù)

使用道具 舉報

10#
ID:824490 發(fā)表于 2023-6-16 10:24 | 只看該作者
想成為有用的人 發(fā)表于 2023-6-15 16:58
我是這樣想的:用七個IO連接七個按鍵,共陰/陽隨便,按下就計數(shù),表示同意。不按就表示反對。然后給出結(jié) ...

為了表示公平,當(dāng)棄權(quán)達(dá)到一定票數(shù),當(dāng)下的投票行為無效!
回復(fù)

使用道具 舉報

11#
ID:1084356 發(fā)表于 2023-6-16 10:57 | 只看該作者
為了表示公平,當(dāng)棄權(quán)達(dá)到一定票數(shù)
回復(fù)

使用道具 舉報

12#
ID:1078985 發(fā)表于 2024-4-30 22:13 | 只看該作者

各位大神,十分感謝
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表