久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
十四路搶答器單片機代碼與AD畫的原理圖
[打印本頁]
作者:
littleMG
時間:
2017-6-7 20:39
標題:
十四路搶答器單片機代碼與AD畫的原理圖
十四路搶答器原理圖 Altium Designer畫的(51hei附件中可下載工程文件):
0.png
(35.1 KB, 下載次數: 31)
下載附件
2017-6-8 03:04 上傳
0.png
(41.47 KB, 下載次數: 26)
下載附件
2017-6-8 03:05 上傳
單片機搶答器代碼如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit start=P3^0; //主持人按鍵開始
sbit reset=P3^1; //復位
//sbit m1=P3^1; //主持人按鍵答對加分,按一下加一分
//sbit m2=P3^2; //答錯減分
sbit add1=P3^2; //搶答時間調整,加1
sbit dec1=P3^7; //搶答時間調整,減1
sbit add2=P3^4; //答題時間調整,加1
sbit dec2=P3^5; //答題時間調整,減1
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit k6=P1^5;
sbit k7=P1^6;
sbit k8=P1^7; //選手按鍵
sbit beep=P3^6; //蜂鳴器
bit qd; //搶答標志位,=1時開啟搶答
bit dt; //答題標志位,=1時開啟答題
//時間計算
#define Imax 14000 //此處為晶振為11.0592時的取值,
#define Imin 8000 //如用其它頻率的晶振時,
#define Inum1 1450 //要改變相應的取值。
#define Inum2 700
#define Inum3 3000
//解碼變量
unsigned char Im[4]={0x00,0x00,0x00,0x00};
//全局變量
uchar f;
unsigned long m,Tc;
unsigned char IrOK;
//uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77}; //0-9代碼 abcdefg dp
unsigned char code tab[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x45,0xDF,0xD7,0xCE,0xC7,0xDC}; //數字0-9的編碼 G C DP D E B F A
uchar shiwei,gewei,xuanshou,count,p,second;
uchar qd_time=30,dt_time=60; //搶答時間,默認30S,答題時間,默認60S
uint t,n,a,a1,a2,a3,a4,a5,a6,a7,a8;
void Timer()
{
TMOD=0x11;
TH1=0x3C; //初值50ms
TL1=0xB0;
EA=1; //打開中斷總開關
ET1=1; //打開中斷允許開關
TR1=0; //打開定時開關
IT1=1;//下降沿有效
EX1=1;//外部中斷1開
TH0=0;//T0賦初值
TL0=0;
TR0=0;//t0暫時不計時,等到有紅外信號時開啟計時
}
void delay(uint z) //延時函數
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--); //約1ms
}
void display (void) //顯示函數
{
unsigned char shiwei,gewei,xuanshou;//定義數據變量,用于顯示時間和選手號碼
shiwei=tab[second/10]; //秒取十位數
gewei=tab[second%10]; //取個位數
xuanshou=tab[p]; //選手號
P0=gewei; //個位數據顯示
P2=0x7F; //打開位選
delay(5); //延時一會
P2=0xFF; //關閉顯示
P0=shiwei; //顯示十位
P2=0xBF; //打開顯示時間十位的位選
delay(5); //延時一會
P2=0xFF; //關閉顯示
P0=0x80; //顯示橫線
P2=0xDF;
delay(5);
P2=0xFF;
P0=xuanshou;
P2=0xEF; //選手位選
delay(5);
P2=0xFF;
}
void keyscan(void) //按鍵函數
{
if(add1==0) //搶答加按鍵按下
{
display(); //顯示函數當做去抖用,防止按鍵按下時黑屏
if(add1==0) //再次判斷搶答加按鍵是否按下(其他按鍵功能類似)
{
p=11; //P=11,顯示q
qd_time++; //搶答時間加
if(qd_time>=99) //最大加到99
qd_time=99;
}
second=qd_time; //將搶答時間賦值給計時變量
do
display(); //掃描顯示
while(add1==0);
}
if(dec1==0) //搶答時間減按鍵
{
display();
if(dec1==0)
{
p=11; //顯示q
qd_time--; //時間減
if(qd_time<=1) //最小減到1
qd_time=1;
}
second=qd_time;
do
display();
while(dec1==0);
}
if(add2==0)
{
display();
if(add2==0)
{
p=12;
dt_time++;
if(dt_time>=99)
dt_time=99;
}
second=dt_time;
do
display();
while(add2==0);
}
if(dec2==0)
{
display();
if(dec2==0)
{
p=12;
dt_time--;
if(dt_time<=1)
dt_time=1;
}
second=dt_time;
do
display();
while(dec2==0);
}
}
void init() //初始化函數
{
P2=0x04;
P0=0x3f;
t=0;
beep=1;
p=10; //選手號初始為顯示H,表示等待
second=qd_time;
}
void main()
{
uchar i;
init(); //調用初始化函數
Timer(); //定時器設置
while(1)
{
if((qd==0)&&(dt==0)) //在非搶答,非答題狀態下
keyscan(); //按鍵掃描函數
display(); //顯示函數
if(start==0) //主持人按下開始鍵
{
if((qd==0)&&(dt==0)) //在非搶答,非答題狀態下
{
p=10; //數碼管顯示H
second=qd_time; //搶答時間賦值計時變量
qd=1; //進入搶答模式
}
beep=0; //蜂鳴器長響一聲
for(i=0;i<20;i++) //此處用做延時
{
display();
}
beep=1; //關閉蜂鳴器
TR1=~TR1; //定時器取反,可以開始,可以隨時暫停
do
display(); //顯示函數
while(!start); //等待釋放按鍵
}
if(reset==0) //復位鍵按下
{
display();
if(reset==0)
{
second=qd_time; //將搶答時間賦值給計時變量
t=0; //清零
p=10; //顯示H
TR1=0; //停止計時
beep=1; //蜂鳴器停止
qd=0; //搶答清零
dt=0; //答題清零
}
do
display(); //顯示函數
while(!reset); //按鍵釋放
}
if(qd==1) //如果是搶答模式時
{
{
if(k1==0) //一號選手按下按鍵
{
display();
if(k1==0)
display();
t=1; //選手號置1
qd=0; //關閉搶答模式
dt=1; //準備打開答題模式(其他選手注釋相同)
}
else if(k2==0)
{
display();
if(k2==0)
display();
t=2;
qd=0;
dt=1;
}
else if(k3==0)
{
display();
if(k3==0)
display();
t=3;
qd=0;
dt=1;
}
else if(k4==0)
{
display();
if(k4==0)
display();
t=4;
qd=0;
dt=1;
}
else if(k5==0)
{
display();
if(k5==0)
display();
t=5;
qd=0;
dt=1;
}
else if(k6==0)
{
display();
if(k6==0)
display();
t=6;
qd=0;
dt=1;
}
else if(k7==0)
{
display();
if(k7==0)
display();
t=7;
qd=0;
dt=1;
}
else if(k8==0)
{
display();
if(k8==0)
display();
t=8;
qd=0;
dt=1;
}
if(IrOK==1) //有紅外信號時
{
//1鍵
if(Im[2]==0x0c) //是1號按下
{
display();
t=1; //選手號置1
qd=0; //關閉搶答模式
dt=1; //準備打開答題模式(其他選手注釋相同)
}
//2鍵
else if(Im[2]==0x18)
{
display();
t=2;
qd=0;
dt=1;
}
//3鍵
else if(Im[2]==0x5e)
{
display();
t=3;
qd=0;
dt=1;
}
//4鍵
else if(Im[2]==0x08)
{
display();
t=4;
qd=0;
dt=1;
}
//5鍵
else if(Im[2]==0x1c)
{
display();
t=5;
qd=0;
dt=1;
}
//6鍵
else if(Im[2]==0x5a)
{
display();
t=6;
qd=0;
dt=1;
}
//7鍵
else if(Im[2]==0x42)
{
display();
t=7;
qd=0;
dt=1;
}
//8鍵
else if(Im[2]==0x52)
{
display();
t=8;
qd=0;
dt=1;
}
IrOK=0; //紅外檢測完后將變量清零
}
}
if(t) //t不為0時
{
switch(t) //判斷t的數值
{
case 1: //數值為1時
{
TR1=0; //關閉定時器
p=1; //顯示1
second=dt_time; //答題時間賦值給計時變量
beep=0; //蜂鳴器響
for(i=0;i<20;i++) //延時
{
display();
}
beep=1; //蜂鳴器停止
qd=0;break; //搶答模式關閉(其他選手注釋相同)
}
case 2:
{
TR1=0;
p=2;
second=dt_time;
beep=0;
for(i=0;i<20;i++)
{
display();
}
beep=1;
qd=0;break;
}
case 3:
{
TR1=0;
p=3;
second=dt_time;
beep=0;
for(i=0;i<20;i++)
{
display();
}
beep=1;
qd=0;break;
}
case 4:
{
TR1=0;
p=4;
second=dt_time;
beep=0;
for(i=0;i<20;i++)
{
display();
}
beep=1;
qd=0;break;
}
case 5:
{
TR1=0;
p=5;
second=dt_time;
beep=0;
for(i=0;i<20;i++)
{
display();
}
beep=1;
qd=0;break;
}
case 6:
{
TR1=0;
p=6;
second=dt_time;
beep=0;
for(i=0;i<20;i++)
{
display();
}
beep=1;
qd=0;break;
}
case 7:
{
TR1=0;
p=7;
second=dt_time;
beep=0;
for(i=0;i<20;i++)
{
display();
}
beep=1;
qd=0;break;
}
case 8:
{
TR1=0;
p=8;
second=dt_time;
beep=0;
for(i=0;i<20;i++)
{
display();
}
beep=1;
qd=0;break;
}
}
}
if(dt==1) //答題標志開啟時
{
if(start==0) //進入答題模式后,主持人按下開始按鍵,則開始計時答題時間
{
display();
if(start==0)
{
beep=0; //蜂鳴器響
for(i=0;i<20;i++) //延時
{
display();
}
beep=1; //關閉蜂鳴器
TR1=1; //打開定時器
}
}
}
}
if(second==0) //計時到0時報警
{
beep=0; //打開蜂鳴器
qd=0; //關閉搶答模式
dt=0; //關閉答題模式
}
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
代碼:
搶答器.zip
(52.11 KB, 下載次數: 14)
2017-6-7 20:38 上傳
點擊文件名下載附件
搶答器代碼
下載積分: 黑幣 -5
原理圖:
http://www.zg4o1577.cn/bbs/dpj-87167-1.html
作者:
admin
時間:
2017-6-8 03:09
好資料,51黑有你更精彩!!!
作者:
faridzled
時間:
2017-6-8 08:32
thanks for sharing
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久网亚洲
|
久久精品国产一区老色匹
|
日韩激情网
|
欧洲色综合
|
日韩中文一区二区
|
精品视频在线播放
|
99影视
|
午夜在线免费观看
|
精品欧美乱码久久久久久1区2区
|
国产精品久久av
|
精品一级电影
|
av一区二区在线观看
|
91人人看
|
久草网址
|
国产亚洲网站
|
国产精品99久久久久久久久久久久
|
久久亚洲国产精品
|
网站黄色在线
|
91中文字幕在线
|
国精产品一品二品国精在线观看
|
天天艹天天干天天
|
日韩字幕
|
www.99re
|
免费xxxx大片国产在线
|
欧美日韩毛片
|
亚洲精品自拍视频
|
成人免费视频一区二区
|
精品一区二区三区四区外站
|
国产伦一区二区三区
|
中文字幕一区在线
|
精品久久久久久久久久久久
|
国产一区二区久久
|
久久91
|
一区二区三区在线免费观看
|
日韩成人免费av
|
欧美成人精品激情在线观看
|
色毛片
|
日韩羞羞
|
欧美久久一区
|
精品久久一区
|
欧美精品在线观看
|