课程设计题二:7人多数表决器
生活随笔
收集整理的這篇文章主要介紹了
课程设计题二:7人多数表决器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
要求:
1、7人多數表決邏輯:多數通過。
2、在主持人控制下,10秒內表決有效。
3、采用數碼管顯示表決10秒倒計時。
4、表決結束后用發光二極管及數碼管顯示表決結果,數碼管顯示結果:通過、不通過,同意人數。
5、設主持人控制鍵、復位鍵。
?????????? 控制鍵:啟動表決
?????????? 復位鍵:系統復位
6、表決開始、結束采用聲音提示。
獲取該 程序+protues 的方式:
1、CSDN下載:
https://download.csdn.net/download/qq_38351824/11267698
2、關注微信公眾號下載:
? ? ?① 關注微信公眾號:Tech云 ?
? ? ?②
3、可以關注點贊并在下方評論,我給你郵箱發過去。
一、Protues仿真圖:
二、程序源碼:
因為注釋非常的全,這里就不再進行講解了。
/******************************************************************************* ================================================================================ 【平 臺】STC89C51_sumjess平臺 【編 寫】sumjess 【E-mail 】1371129880@qq.com 【軟件版本】V2.0 【最后更新】2019年06月10日 【相關信息參考下列地址】 【網 站】https://blog.csdn.net/qq_38351824http://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<reg51.h> #include<intrins.h>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數為45872TL0=(65536-45872)%256; ET0=1; //開定時器0中斷EA=1; //開總中斷 }void timer0() interrupt 1 using 1 //定時器0中斷服務函數 {TH0=(65536-45872)/256; //裝初值11.0592M晶振定時50ms數為45872TL0=(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; //第一位數碼管顯示0smg1=0;delayms(3);smg1=1; } void djsxs11() //第一位數碼管顯示1 {P0=0x44; //第一位數碼管顯示1smg1=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]; //第四位數碼管顯示1smg3=0;delayms(3);smg3=1; } void djsxs2() //第四位數碼管顯示2 {P0=table[2];smg3=0;delayms(3);smg3=1; //第四位數碼管顯示2}----由于篇幅的問題,只顯示一部分,請下載后自行觀看,程序非常的全----- -----關注公眾號免費下載-----?
?
總結
以上是生活随笔為你收集整理的课程设计题二:7人多数表决器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cad填充密度怎么调整_CAD填充技巧之
- 下一篇: java安装后怎么打开_java安装后怎