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