欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機設計的8路搶答器(Proteus仿真+代碼注釋詳解)
[打印本頁]
作者:
18312284784
時間:
2019-5-2 21:07
標題:
51單片機設計的8路搶答器(Proteus仿真+代碼注釋詳解)
設計要求:1.利用數碼管進行顯示搶答時間和答題時間倒計時;利用中斷定時器進行定時/計數
2.實現按鍵自鎖功能,只有當主持人按鍵有效后搶答者按鍵才有效,當任一搶答者按鍵后,其他搶答者按鍵無效
3.對優先搶答者進行LED發亮與數碼管顯示搶答者序號提示是對應搶答者進行搶答
設計者百度貼吧號:wife101,耐性解答
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(16.17 KB, 下載次數: 86)
下載附件
2019-5-5 22:05 上傳
單片機源程序如下:
/*-----------------------------------------------
名稱:七路搶答器
名稱:單個獨立按鍵控制
編寫:吳柱俊 百度賬號:wife101 桂林電子科技大學 電子工程與自動化學院
內容: 1、試驗目的:了解按鍵的掃描原理
2、實現現象:同時按鍵搶答,先按的鍵有效,其他按鍵鎖死 主持人按開始后后重新開始搶答
3、硬件要求:按鍵 LED燈 ,數碼管顯示原理
原理:當主持人按鍵開始后方可按鍵顯示,否則其他應答者按鍵無效
當主持人按鍵開始后開始等待應答者按鍵,給予搶答者時間為10秒,搶答者要在這10S內做出搶答反應
當有搶答者搶答后顯示第幾個搶答者為p0口數碼管顯示
P2數碼管顯示為搶答時間
當有搶答者搶答按鍵后時間暫停
關注我貼吧下一個搶答后給予應答著10S時間應答而不是暫停出應答時間
------------------------------------------------*/
#include<reg51.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
#define uint unsigned int
#define uchar unsigned char
uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//共地數碼管段碼0到9
uchar i=1,count=9,scount=0;
uchar Flag=0;
void int0();//定時/計數中斷初始化
sbit key1=P1^0;//定義按鍵位置 獨立按鍵模式
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit key5=P1^4;//定義按鍵位置 獨立按鍵模式
sbit key6=P1^5;
sbit key7=P1^6;
sbit key8=P1^7;
/*-----------------------------------------------
主函數
------------------------------------------------*/
main()
{
int0();//定時/計數中斷初始化
P0=0x3f;//剛開始顯示0
P2=0X3F;//剛開始顯示0
while(1)
{
P0=DSY_CODE[scount];
while(Flag)//執行一次就停止了 先檢測到的相應 復位后有效
{
if (!key1) {scount=1;P3=0xFE;Flag=0;EA=0;ET0=0;TR0=0;P0=DSY_CODE[scount]; }// 第一路燈亮,令falg=0,退出循環,使其他路應答無效,停止中斷
else if(!key2){scount=2;P3=0xFD;Flag=0;EA=0;ET0=0;TR0=0;P0=DSY_CODE[scount];}// 第一路燈亮,令falg=0,退出循環,使其他路應答無效,停止中斷
else if(!key3){scount=3;P3=0xFB;Flag=0;EA=0;ET0=0;TR0=0;P0=DSY_CODE[scount];}// 第一路燈亮,令falg=0,退出循環,使其他路應答無效,停止中斷
else if(!key4){scount=4;P3=0xF7;Flag=0;EA=0;ET0=0;TR0=0;P0=DSY_CODE[scount];}// 第一路燈亮,令falg=0,退出循環,使其他路應答無效,停止中斷
else if(!key5){scount=5;P3=0xEF;Flag=0;EA=0;ET0=0;TR0=0;P0=DSY_CODE[scount];}// 第一路燈亮,令falg=0,退出循環,使其他路應答無效,停止中斷
else if(!key6){scount=6;P3=0xDF;Flag=0;EA=0;ET0=0;TR0=0;P0=DSY_CODE[scount];}// 第一路燈亮,令falg=0,退出循環,使其他路應答無效,停止中斷
else if(!key7){scount=7;P3=0xBF;Flag=0;EA=0;ET0=0;TR0=0;P0=DSY_CODE[scount];}// 第一路燈亮,令falg=0,退出循環,使其他路應答無效,停止中斷
if(key8==0) //主持人按鍵重新開始
{
P3=0XFF; // 令所有燈滅
EA=1; //開中斷計數
ET0=1;
TR0=1;
Flag=1; //另flag=1使指向while(flag)進入搶答環節
count=9;
scount=0;
}
}
if(key8==0) //主持人按鍵重新開始
{
P3=0XFF; // 令所有燈滅
EA=1; //開中斷計數
ET0=1;
TR0=1;
Flag=1; //另flag=1使指向while(flag)進入搶答環節
count=9;
scount=0;
}
}
}
void int0()//定時/計數中斷初始化
{
TMOD=0X01;//方式選擇
//方式0 13位 8192,最大定時8.192ms;方式1 16位,65536,最大定時65.536ms
TH0=(65536-50000)/256; //整除得高位 如12/10=1 定時50ms
TL0=(65535-50000)%256 ; //取余得低位 如12%10=2 定時50ms
//EA=1;
//ET0=1;
//TR0=1;
}
void int0_interrupt() interrupt 1
{
TH0=(65536-50000)/256; //恢復定時器0初值
TL0=(65536-50000)%256;
i++; //每來一次中斷對i進行自加1
if(i==20)//定時1s,50ms*20=1秒,定時器中斷20次
{
i=0;
count--; //當定時夠1S,count賦值為1
}
P2=DSY_CODE[count%10]; //取低位
if(count==0) //當count=60秒進行自動清零復位
{
EA=0;ET0=0;TR0=0;
}
}
復制代碼
所有資料51hei提供下載:
單片機控制的多路搶答器程序 仿真.rar
(75.61 KB, 下載次數: 109)
2019-5-2 21:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
51hei團團
時間:
2019-5-5 22:10
好資料,51黑有你更精彩!!!
作者:
yfpc2006
時間:
2019-5-6 02:48
不錯不錯!多學習~!
作者:
hualuoshuijia
時間:
2020-12-26 16:02
好資料,謝謝樓主分享,學到了
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1