|
設(shè)計(jì)要求:1.利用數(shù)碼管進(jìn)行顯示搶答時(shí)間和答題時(shí)間倒計(jì)時(shí);利用中斷定時(shí)器進(jìn)行定時(shí)/計(jì)數(shù)
2.實(shí)現(xiàn)按鍵自鎖功能,只有當(dāng)主持人按鍵有效后搶答者按鍵才有效,當(dāng)任一搶答者按鍵后,其他搶答者按鍵無效
3.對(duì)優(yōu)先搶答者進(jìn)行LED發(fā)亮與數(shù)碼管顯示搶答者序號(hào)提示是對(duì)應(yīng)搶答者進(jìn)行搶答
設(shè)計(jì)者百度貼吧號(hào):wife101,耐性解答
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (16.17 KB, 下載次數(shù): 86)
下載附件
2019-5-5 22:05 上傳
單片機(jī)源程序如下:
- /*-----------------------------------------------
- 名稱:七路搶答器
- 名稱:?jiǎn)蝹(gè)獨(dú)立按鍵控制
- 編寫:吳柱俊 百度賬號(hào):wife101 桂林電子科技大學(xué) 電子工程與自動(dòng)化學(xué)院
- 內(nèi)容: 1、試驗(yàn)?zāi)康模毫私獍存I的掃描原理
- 2、實(shí)現(xiàn)現(xiàn)象:同時(shí)按鍵搶答,先按的鍵有效,其他按鍵鎖死 主持人按開始后后重新開始搶答
- 3、硬件要求:按鍵 LED燈 ,數(shù)碼管顯示原理
- 原理:當(dāng)主持人按鍵開始后方可按鍵顯示,否則其他應(yīng)答者按鍵無效
- 當(dāng)主持人按鍵開始后開始等待應(yīng)答者按鍵,給予搶答者時(shí)間為10秒,搶答者要在這10S內(nèi)做出搶答反應(yīng)
- 當(dāng)有搶答者搶答后顯示第幾個(gè)搶答者為p0口數(shù)碼管顯示
- P2數(shù)碼管顯示為搶答時(shí)間
- 當(dāng)有搶答者搶答按鍵后時(shí)間暫停
- 關(guān)注我貼吧下一個(gè)搶答后給予應(yīng)答著10S時(shí)間應(yīng)答而不是暫停出應(yīng)答時(shí)間
- ------------------------------------------------*/
- #include<reg51.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義
- #define uint unsigned int
- #define uchar unsigned char
- uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- //共地?cái)?shù)碼管段碼0到9
- uchar i=1,count=9,scount=0;
- uchar Flag=0;
- void int0();//定時(shí)/計(jì)數(shù)中斷初始化
- sbit key1=P1^0;//定義按鍵位置 獨(dú)立按鍵模式
- sbit key2=P1^1;
- sbit key3=P1^2;
- sbit key4=P1^3;
- sbit key5=P1^4;//定義按鍵位置 獨(dú)立按鍵模式
- sbit key6=P1^5;
- sbit key7=P1^6;
- sbit key8=P1^7;
- /*-----------------------------------------------
- 主函數(shù)
- ------------------------------------------------*/
- main()
- {
- int0();//定時(shí)/計(jì)數(shù)中斷初始化
- P0=0x3f;//剛開始顯示0
- P2=0X3F;//剛開始顯示0
- while(1)
- {
- P0=DSY_CODE[scount];
- while(Flag)//執(zhí)行一次就停止了 先檢測(cè)到的相應(yīng) 復(fù)位后有效
- {
- if (!key1) {scount=1;P3=0xFE;Flag=0;EA=0;ET0=0;TR0=0;P0=DSY_CODE[scount]; }// 第一路燈亮,令falg=0,退出循環(huán),使其他路應(yīng)答無效,停止中斷
- else if(!key2){scount=2;P3=0xFD;Flag=0;EA=0;ET0=0;TR0=0;P0=DSY_CODE[scount];}// 第一路燈亮,令falg=0,退出循環(huán),使其他路應(yīng)答無效,停止中斷
- else if(!key3){scount=3;P3=0xFB;Flag=0;EA=0;ET0=0;TR0=0;P0=DSY_CODE[scount];}// 第一路燈亮,令falg=0,退出循環(huán),使其他路應(yīng)答無效,停止中斷
- else if(!key4){scount=4;P3=0xF7;Flag=0;EA=0;ET0=0;TR0=0;P0=DSY_CODE[scount];}// 第一路燈亮,令falg=0,退出循環(huán),使其他路應(yīng)答無效,停止中斷
- else if(!key5){scount=5;P3=0xEF;Flag=0;EA=0;ET0=0;TR0=0;P0=DSY_CODE[scount];}// 第一路燈亮,令falg=0,退出循環(huán),使其他路應(yīng)答無效,停止中斷
- else if(!key6){scount=6;P3=0xDF;Flag=0;EA=0;ET0=0;TR0=0;P0=DSY_CODE[scount];}// 第一路燈亮,令falg=0,退出循環(huán),使其他路應(yīng)答無效,停止中斷
- else if(!key7){scount=7;P3=0xBF;Flag=0;EA=0;ET0=0;TR0=0;P0=DSY_CODE[scount];}// 第一路燈亮,令falg=0,退出循環(huán),使其他路應(yīng)答無效,停止中斷
- if(key8==0) //主持人按鍵重新開始
- {
- P3=0XFF; // 令所有燈滅
- EA=1; //開中斷計(jì)數(shù)
- ET0=1;
- TR0=1;
- Flag=1; //另flag=1使指向while(flag)進(jìn)入搶答環(huán)節(jié)
- count=9;
- scount=0;
- }
- }
- if(key8==0) //主持人按鍵重新開始
- {
- P3=0XFF; // 令所有燈滅
- EA=1; //開中斷計(jì)數(shù)
- ET0=1;
- TR0=1;
- Flag=1; //另flag=1使指向while(flag)進(jìn)入搶答環(huán)節(jié)
- count=9;
- scount=0;
- }
- }
- }
- void int0()//定時(shí)/計(jì)數(shù)中斷初始化
- {
- TMOD=0X01;//方式選擇
- //方式0 13位 8192,最大定時(shí)8.192ms;方式1 16位,65536,最大定時(shí)65.536ms
- TH0=(65536-50000)/256; //整除得高位 如12/10=1 定時(shí)50ms
- TL0=(65535-50000)%256 ; //取余得低位 如12%10=2 定時(shí)50ms
- //EA=1;
- //ET0=1;
- //TR0=1;
- }
- void int0_interrupt() interrupt 1
- {
- TH0=(65536-50000)/256; //恢復(fù)定時(shí)器0初值
- TL0=(65536-50000)%256;
- i++; //每來一次中斷對(duì)i進(jìn)行自加1
- if(i==20)//定時(shí)1s,50ms*20=1秒,定時(shí)器中斷20次
- {
- i=0;
- count--; //當(dāng)定時(shí)夠1S,count賦值為1
- }
- P2=DSY_CODE[count%10]; //取低位
- if(count==0) //當(dāng)count=60秒進(jìn)行自動(dòng)清零復(fù)位
- {
- EA=0;ET0=0;TR0=0;
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
單片機(jī)控制的多路搶答器程序 仿真.rar
(75.61 KB, 下載次數(shù): 109)
2019-5-2 21:06 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|