久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
八路搶答器
[打印本頁]
作者:
單片機菜鳥.001
時間:
2015-7-27 16:39
標題:
八路搶答器
八路搶答器資料,下面是仿真圖:
0.png
(37.88 KB, 下載次數: 71)
下載附件
2017-4-14 03:41 上傳
單片機源程序:
/****************************************************************
******以單片機為核心,設計一個8位競賽搶*******
******答器:同時供8名選手或8個代表隊*************
******比賽,分別用8個按鈕S0~S7表示。*************
******設置一個系統清除和搶答控制開關************
******S,開關由主持人控制。搶答器具有***********
******鎖存與顯示功能。即選手按按鈕,************
******鎖存相應的編號,并在優先搶答選************
******手的編號一直保持到主持人將系統************
******清除為止。
******搶答器具有定時搶答功能,且一次************
******搶答的時間由主持人設定(如30秒)**********
******。
******當主持人啟動“開始”鍵后,定時************
******器進行減計時,同時揚聲器發出短************
******暫的聲響,聲響持續的時間為0.5s左************
******右。
******參賽選手在設定的時間內進行搶答************
******,搶答有效,定時器停止工作,顯************
******示器上顯示選手的編號和搶答的時間*********
******,并保持到主持人將系統清除為止。*********
******如果定時時間已到,無人搶答,本次*********
******搶答無效,系統報警并禁止搶答,定*********
******時顯示器上顯示00。*********************************
******************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code Tab0[]= //用于74HC595掃描的數組
{
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80
};
unsigned char code LED_DATE [] = //共陽數碼管的編碼
{
0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90
};
sbit Set_Rest =P3^0; //主持人設置時間和復位按鍵
sbit Start_Jia =P3^1; //主持人開始和調整時間按鍵
sbit S1 =P2^0; // 1號選手按鍵
sbit S2 =P2^1; // 2號選手按鍵
sbit S3 =P2^2; // 3號選手按鍵
sbit S4 =P2^3; // 4號選手按鍵
sbit S5 =P2^4; // 5號選手按鍵
sbit S6 =P2^5; // 6號選手按鍵
sbit S7 =P2^6; // 7號選手按鍵
sbit S8 =P2^7; // 8號選手按鍵
sbit BUZZ =P3^2;
sbit DS =P1^5; //74HC595 I/O
sbit SHCP =P1^6;
sbit STCP =P1^7;
uint Time_Alarm=500; //搶答時間,默認定時500ms
uchar Player=0; //選手號碼
bit K1_bit=0; //K1標志位
bit Start_bit=0; //開始標志位
bit Set_bit=0; //設置標志位
uchar Set0=0; //用于設置時間時顯示閃爍控制
bit Set1=0; //用于設置時間時顯示閃爍控制
void Delay_ms(uint xms); //延時
void HC595(uchar Value); //74HC595驅動函數
void Display(); //顯示函數
void Init();
void KEY1();
void KEY2(); //開始/加時間鍵函數
void Player_KEY(); //選手搶答按鍵
void main()
{
Init();
while(1)
{
KEY1();
KEY2();
Player_KEY();
Display();
}
}
void Player_KEY() //選手搶答按鍵
{
if(Start_bit==1)
{
if(S1==0)
{
Delay_ms(10);
if(S1==0)
{
Player=1;
Start_bit=0;
TR0=0;
while(!S1);
}
}
if(S2==0)
{
Delay_ms(10);
if(S2==0)
{
Player=2;
Start_bit=0;
TR0=0;
while(!S2);
}
}
if(S3==0)
{
Delay_ms(10);
if(S3==0)
{
Player=3;
Start_bit=0;
TR0=0;
while(!S3);
}
}
if(S4==0)
{
Delay_ms(10);
if(S4==0)
{
Player=4;
Start_bit=0;
TR0=0;
while(!S4);
}
}
if(S5==0)
{
Delay_ms(10);
if(S5==0)
{
Player=5;
Start_bit=0;
TR0=0;
while(!S5);
}
}
if(S6==0)
{
Delay_ms(10);
if(S6==0)
{
Player=6;
Start_bit=0;
TR0=0;
while(!S6);
}
}
if(S7==0)
{
Delay_ms(10);
if(S7==0)
{
Player=7;
Start_bit=0;
TR0=0;
while(!S7);
}
}
if(S8==0)
{
Delay_ms(10);
if(S8==0)
{
Player=8;
Start_bit=0;
TR0=0;
while(!S8);
}
}
}
}
void KEY2() //開始/加時間鍵函數
{
if(Start_Jia==0)
{
Delay_ms(10);
if(Start_Jia==0)
{
if(Set_bit==0)
{
if(Time_Alarm==0) //判斷是否搶答結束
{
TR0=0;
Time_Alarm=0;
}
else
{
TR0=~TR0;
Start_bit=~Start_bit;
}
}
else
{
Time_Alarm=(Time_Alarm+250);
if(Time_Alarm>1500)
{
Time_Alarm=500;
}
}
while(!Start_Jia);
}
}
}
void KEY1()
{
if(Set_Rest==0)
{
Delay_ms(100);
if(Set_Rest==0)
{
Delay_ms(500); //判斷長按還是短按
if(Set_Rest==0)
{
Time_Alarm=500;
TR0=0;
TR1=0;
Set_bit=0;
Player=0;
Start_bit=0;
BUZZ=1;
while(!Set_Rest);
}
else
{
if(Start_bit==0) //判斷是否開始
{
Set_bit=~Set_bit;
TR1=~TR1;
}
}
}
}
}
void Time_0() interrupt 1
{
TH0=0xfc; //定時器0定時1毫秒
TL0=0x18;
Time_Alarm--;
if(Time_Alarm<=0)
{
TR0=0;
Start_bit=0;
BUZZ=0;
}
}
void Time_1() interrupt 3
{
TH1=0x3c; //定時器1定時50ms
TL1=0xb0;
Set0++;
if(Set0==10)
{
Set0=0;
Set1=~Set1;
}
}
void Display() //顯示函數
{
uchar i=0;
for(i=0;i<3;i++) //選手編號數碼管前三位顯示0
{
P0=LED_DATE[0]; //送段數據
HC595(Tab0[i]); //送位數據
Delay_ms(5); //延時
P0=0XFF; //消隱
}
P0=LED_DATE[Player]; //數碼管第4位顯示選手編號,送段數據
HC595(Tab0[3]); //送位數據
Delay_ms(5); //延時
P0=0XFF; //消隱
if(Set_bit==0)
{
P0=LED_DATE[Time_Alarm/1000]; //顯示定時時間千位
HC595(Tab0[4]); //送位數據
Delay_ms(5); //延時
P0=0XFF; //消隱
P0=LED_DATE[Time_Alarm%1000/100]; //顯示定時時間百位
HC595(Tab0[5]); //送位數據
Delay_ms(5); //延時
P0=0XFF; //消隱
P0=LED_DATE[Time_Alarm%100/10]; //顯示定時時間十位
HC595(Tab0[6]); //送位數據
Delay_ms(5); //延時
P0=0XFF; //消隱
P0=LED_DATE[Time_Alarm%10]; //顯示定時時間個位
HC595(Tab0[7]); //送位數據
Delay_ms(5); //延時
P0=0XFF; //消隱
}
if(Set_bit==1)
{
if(Set1==1)
{
P0=LED_DATE[Time_Alarm/1000]; //顯示定時時間千位
HC595(Tab0[4]); //送位數據
Delay_ms(5); //延時
P0=0XFF; //消隱
P0=LED_DATE[Time_Alarm%1000/100]; //顯示定時時間百位
HC595(Tab0[5]); //送位數據
Delay_ms(5); //延時
P0=0XFF; //消隱
P0=LED_DATE[Time_Alarm%100/10]; //顯示定時時間十位
HC595(Tab0[6]); //送位數據
Delay_ms(5); //延時
P0=0XFF; //消隱
P0=LED_DATE[Time_Alarm%10]; //顯示定時時間個位
HC595(Tab0[7]); //送位數據
Delay_ms(5); //延時
P0=0XFF; //消隱
}
else
{
P0=0xff; //顯示定時時間千位
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png
(57.09 KB, 下載次數: 81)
下載附件
2017-4-14 03:41 上傳
proteus仿真工程文件和單片機源碼下載:
51智能8路搶答器.rar
(97.65 KB, 下載次數: 166)
2015-7-27 16:38 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
14781708282
時間:
2016-5-10 09:18
好東西 頂起來
作者:
傲嬌的奔奔
時間:
2016-5-30 15:20
是C語言的么
作者:
傲嬌的奔奔
時間:
2016-5-30 15:25
好東西,謝謝
作者:
李歌笑
時間:
2016-5-30 18:54
最近在設計這個東西,謝謝分享
作者:
李歌笑
時間:
2016-5-30 18:54
最近在設計這個,謝謝分享
作者:
MX安心
時間:
2016-6-20 11:16
不錯!!!!!!!!!!!!!!!!!!!!
作者:
xinshouxuexi
時間:
2016-7-30 22:26
謝謝樓主,學習中
作者:
梔_子_花
時間:
2016-10-31 11:58
先下來看看再說吧
作者:
123.123
時間:
2017-4-13 22:46
不錯!!!!!!!!!!!!!!!!!!!!
作者:
李彥霖
時間:
2017-5-22 17:02
怎么把時間設定改一下,這倒計時有點快,設置到不到30s- -
作者:
faridzled
時間:
2017-5-22 21:20
thanks for sharing
作者:
330021162
時間:
2017-6-4 18:15
這個5黑筆真的有點那啥了
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
在线欧美一区二区
|
www.av7788.com
|
亚洲精品在线视频
|
国产一区二区三区
|
久久这里只有精品首页
|
免费播放一级片
|
国产精品久久久久久久三级
|
北条麻妃av一区二区三区
|
2019天天操
|
日韩在线日韩
|
亚洲精品在线观看网站
|
在线观看深夜视频
|
久久国产精品久久
|
亚洲欧美在线观看
|
国产日韩欧美91
|
欧美黄色一区
|
丝袜美腿一区二区三区动态图
|
欧美性大战xxxxx久久久
|
亚洲精品在线视频
|
黄色一级片在线播放
|
国产a区
|
精品福利视频一区二区三区
|
成人婷婷
|
亚洲高清在线
|
99免费在线观看
|
精品久久av
|
国精产品一区一区三区免费完
|
久久精品一区二区三区四区
|
日本电影韩国电影免费观看
|
欧美在线观看一区二区
|
国产福利在线
|
精品亚洲一区二区三区
|
中文字幕日本一区二区
|
欧美日韩视频在线第一区
|
国产2区
|
亚洲一区二区三区在线
|
a级毛片国产
|
亚洲欧洲成人av每日更新
|
欧美日本在线观看
|
欧美在线天堂
|
免费网站国产
|