要求:
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 }
上一篇:課程設計題三:日歷和數字鐘
下一篇:課程設計題三十三:基于單片機的電子鐘
推薦閱讀
史海拾趣
在市場競爭日益激烈的電子行業中,喜美克斯公司始終堅持品質至上的原則。公司投入大量資源用于產品質量控制和生產工藝的改進,確保每一件產品都能達到最高的品質標準。這種對品質的執著追求,讓喜美克斯的產品在市場上贏得了良好的口碑,也為公司贏得了眾多忠實的客戶。
在電纜產品性能和質量得到提升的同時,Federal Custom Cable也積極開拓新的市場領域。他們深入了解不同行業對電纜的需求特點,針對不同行業推出了一系列定制化的電纜產品。這些產品廣泛應用于通信、醫療、航空等領域,并贏得了客戶的一致好評。同時,Federal Custom Cable還加強了品牌建設和市場推廣力度,提高了品牌知名度和美譽度。
隨著工業自動化需求的不斷增長,Friedrich Lütze GmbH 敏銳地捕捉到了這一市場機遇。公司開始加大研發投入,不斷推出新產品,如可編程邏輯控制器(PLC)、傳感器和執行器等,以滿足不同行業對自動化控制解決方案的需求。同時,公司積極拓展國內外市場,與多家知名企業建立了長期合作關系,進一步鞏固了其在工業自動化領域的領先地位。
隨著電子技術的不斷進步和市場需求的變化,Elpress AB意識到只有不斷創新才能保持競爭力。因此,公司加大了對研發的投入,引進了一批先進的研發設備和人才。經過數年的努力,Elpress AB成功推出了一系列具有創新性和領先性的電氣連接產品,如高壓電纜接頭、母線連接器等。這些產品的推出不僅豐富了公司的產品線,也進一步提升了Elpress AB在電氣連接領域的地位。
硅光電池的pn結面積大,導致極間電容大。當硅光電池接收到高頻信號時,硅光電池的極間電容無法及時放電,將使接收到的信號嚴重失真。 有沒有什么辦法用外接電路的減小極間電容的影響呢? 使其能接受到較高頻率的信號,頻率越高越好。 希望各位高 ...… 查看全部問答∨ |
|
下面是題目和要求,請求各位大俠的幫助!!!!!!!! 為某供銷公司營銷計算機系統進行硬件結構設計 背景資料: 某大型供銷公司決定建設計算機供銷管理系統,在完成了系統分析工作之后確定了整個系統由物資供應子系統、產品銷售子系統及服 ...… 查看全部問答∨ |
進入ccs4,build,debug,斷電再上電可以運行,可是怎么進行單步調試之類的?第一次用ccs4,各位有沒有調試過呀? 例子用的demo里那個。… 查看全部問答∨ |
一個交流輸入后串接一個大電容,那么電容另外一個腳上的輸出和交流輸入相同。一個直流輸入后串接一個大電容,那么電容另外一個角上的輸出為零。上面的兩條論斷有問題嗎?如果沒問題,是怎么理解的?用什么方法分析?多謝指點。… 查看全部問答∨ |
LED應用與照明,目前關于自動調光系統的需求已較為迫切。PWM調光系統解決的是DC總線下的應用,調相的調光方案成本低廉,可這方面的LED燈具的功率還做不大,僅限于20W以下。大家發揮才智,開拓創新,制作出實用的技術解決方案,滿足社會的需求,將會 ...… 查看全部問答∨ |
altium designer 6.9 智能pdf輸出原理圖為何沒有輸出漢字? 完成的原理圖,右下角的文檔名字成功設置成漢字,為什么智能輸出pdf的時候沒有漢字呢? 這個是原理圖: 這個是輸出的pdf: 怎么設置才能使pdf也照原樣輸出漢字呢? 謝謝! … 查看全部問答∨ |
|
本帖最后由 aslxp 于 2016-10-25 08:42 編輯 這是原理圖,但是我不會寫代碼,網上的報告中有代碼,但是我不會模塊化編程,哪位大神能幫我弄一下代碼,不勝感激!!!… 查看全部問答∨ |
【STM32F769評測軟件篇三】-- STM32F7 之USB_HOST初步 STM32F769IDiscovery 板載一個USB_HS接口可以實現USB OTG功能,具體實驗如下:準備工具: 1、 USB 下載線; 2、雙木頭USB線(或USB轉OTG線),我 ...… 查看全部問答∨ |