|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机八路抢答器proteus仿真图及C语言源代码2 N* ^ X& l9 K- l' `
! v* c, V8 @2 p' o( |
. H' a4 D. @' ]: d/ Z6 J单片机c语言源代码如下:
' E5 r6 B$ Y/ h//名称:八路抢答器! k( c- j" ` c' A0 ]& H& R
//功能:主持人按下按键开始抢答,此时抢答灯闪烁, `, d* ? C& p+ v
//十秒内抢答,如果没有抢答的则直接复位
1 o9 @: \% I* \ q6 S//如果有人抢答成功,则其他人抢答无效,60s内答完超过60s自动复位
) B" k' h" {/ _1 R2 e7 ?//回答期间抢答灯常亮,回答的人方灯闪烁,直到回答完毕,灯常亮表明回答有效
9 G/ k2 W1 L) `//如果超过60s自动复位,回答结束主持人打开按键,复位。6 n& I% E' p8 @" _. M
#include<reg51.H>
: P6 F, P" O5 B1 p R9 j; y6 x# @( v1 g0 x( J
) ?1 L9 y2 i. o5 X& H( ]6 U0 Asbit Presenter=P2^0;
' ?+ B" [. U+ K/ Y' ^' y' Dsbit K=P3^2;
% Q! m0 U# b6 K, m) U4 z. wbit Presenter_flag=0,flag;//主持人按键标志位,仅允许一个数据通过标志位0 o! f+ P+ D+ u7 u$ d$ l8 z
unsigned char Timer=0,i; //时间标志7 k- `$ v; S, G/ v g4 o
unsigned char ren=0xff;
& Z; j# S; a# w3 z, ybit x=0;
1 V$ ~. y; E4 F6 w7 Xvoid System_Init();3 W* N) L9 K! t, c( r: t& p
void System_Rest();
/ N5 {2 w0 S" i" F3 L% o% Xvoid main()
9 p' s* p# P5 j1 n, i/ U0 D. c* u8 a{
/ [' b1 }, |4 t" k3 e# t System_Init();. C! L. p& z/ o* I F) J
while(1)
( S4 g# g2 \! F8 R( h. z! D* L, H& y {$ u7 m/ j2 o! B2 m2 Y2 K
if(Presenter_flag) //主持人按键按下时开始系统
+ V6 K# A. Q4 d* A$ M" U { 0 u6 k" |) P+ R2 F+ ~3 ^; i3 F
K=1;
0 J& m' @& \$ a* K; Y! o" h5 ] if(K==1) //主持人按键起开, S2 y7 T8 @, S# X. E
{break;
% x7 _% q0 A% g7 k Presenter_flag=0;
- t5 z7 Z2 A$ C! M( v3 q }6 ?- ~- i7 X) ~- S' ~; p
}/ R7 f5 C* P6 a
else
. a* N- e; Y% }* w! Z System_Rest();5 h' s; W Z- x
}
$ B' |2 w# z! @& V6 H}! t( ~4 ?' s: n0 }
void System_Init()
/ x2 x1 b+ T: u4 n2 Y4 h6 D{. X: w# l8 m; R# s& [
EA=1; //打开中断1 Y- Q1 E: u3 u" j& S( F
EX0=1;1 x3 J" H2 } B% x, |
IT0=1;
0 J; J8 x5 [5 A: E1 q N/ |2 h TMOD=0x01;/ c: c4 r; k, E% h5 B8 T
ET0=1;
* ~: c9 s, i0 G/ c9 k5 P v$ }! T TH0=(65535-50000)/256; //50ms
* W8 x, B( K B# n- ? TL0=(65535-50000)%256;
* q5 x" T- H. T Presenter=0;
7 {/ O A, ^ f; T TR0=0;' G$ V5 `( l' S# H4 [: f7 A; ?- A
}9 H$ h* R# H+ p0 z% w9 ]9 y" j5 w
void System_Rest()9 ?7 X4 J. [, g
{
& c0 A: U8 w' R" H9 T P0=0xff; //复位设置:在主持人按键起开或者,抢答时间超过10s或者答题时间超过60s! \. `# e+ B6 G9 H
P1=0xff;) k4 S! u3 L" F/ `9 X
TR0=0;
% a% ~- c1 T1 B$ p7 p Presenter=0; i- L0 x6 h# l4 F4 y
flag=1;
! i- }. C9 F0 a! O5 P* m/ V, S6 D: V i=0;
1 m: |: \! v, T7 R Timer=0; ! K, I y# R( s k! C8 Z
}% F7 j2 x4 y5 e) u$ f
void into() interrupt 07 [2 f- t+ m7 v/ c! Y
{
2 v( ]! v+ u! l9 Z1 y" ]; r Presenter_flag=1;//主持人按键按下* D/ G: a' r' X4 {
TR0=1;2 [) N. T% e0 F: L7 h! o
}, Y/ I- v& q# c" E( J3 k! t5 f
void Timer0() interrupt 16 ~5 q5 G7 ?6 ]0 B+ S
{7 `) g+ @7 y; X4 A- p. S, a+ a3 }
TH0=(65535-50000)/256;
3 [1 X ?! L; Y" H+ D( J TL0=(65535-50000)%256;3 b: w' |& r$ |- U+ s3 ?
i++;
2 L, [" D$ i6 ~" M if(i==20) //1s钟! A9 v* N' U' {% a0 F
{
( G% c& f$ G/ [- Z& l i=0;2 h9 c y* V6 M1 @. T8 s4 I/ X
Timer++;0 z L' w) G9 E/ W9 U( _2 Q9 x
P1=0xff;9 Z& V4 m8 ]" y
if((Timer<10)&&(P1==0xff)&&(flag==1)) //10s抢答时间,10s内如果无人抢答则复位
1 S |. ~6 L' a& x) x n N {
7 @4 D( z; ~- G& o, x Presenter=~Presenter; //抢答指示灯闪烁2 M% v' b1 C4 l4 W. {, B/ x
}
. r2 S+ ]% V0 H# O4 K. Q7 r9 e else if((Timer>=10)&&(P1==0xff)&&(flag==1)); R3 f; K# h) L2 _" L w" q
{
~' F# B$ z5 D4 M Presenter_flag=0;/ S- m4 w& b4 K( c ?; q) B4 j
Timer=0;
: ]" K G- k7 E! F! e1 \ i=0;. F" ~, R! t+ y# b
}
* v; o! G7 T4 [7 Y P1=0xff;- e# h9 G$ w) r4 B M
if((Timer<=60)&&(P1!=0xff)&&(flag==1)) //答题时间,60s没答完则复位9 d" F+ g7 v! h2 P3 P0 k
{
# C; `; c, _4 @6 K; q1 ^" R ren=P1;) d& l8 Q2 K. I8 Z
Presenter=1;
2 s! o; T( s6 c" j) y! T/ Q flag=0;* s/ @6 {) K3 j D" A/ b+ q& U
}
/ Z- N* q( A8 x) v if(flag==0)
0 R3 S4 Q H# W2 z) s0 a {3 k8 Z- K1 H+ B Q/ B& v f
if(x==0)
O4 ^ e5 ~! `7 B+ f {x=1 0=0xff;}
2 g% K( t o. q, C else if(x==1)
7 @7 c, q- x9 p% ~) ^6 A/ L {x=0 0=ren;}
- d/ g1 `3 V: v, I9 ~ d0 A }
* x3 @- C( G- J1 S$ j$ s if((flag==0)&&(P1==0xff))
( u5 t j M$ G0 q" Y {P0=ren;TR0=0;flag=1;}5 p- z7 T% R1 C' m
if((Timer>60)&&(P1!=0xff))
' y6 s5 N9 ^+ D7 \' A9 G, Y ( ?( `% u$ |1 G. p" i# l$ ^
4 S+ y7 U. ]4 }/ ^
- q2 f# R; K$ g( q3 q/ G' e/ E
. s4 B4 ?, e1 }) g' l1 I$ J
6 V2 T' E6 w" ?7 D4 H5 o
…………限于本文篇幅 余下代码请从论坛下载附件…………- V/ M6 s) J" A% N) g) u
, s6 z0 r6 I9 l+ Z& o4 M3 u' n8 ?- l; ?% U3 n
|
|