|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机八路抢答器proteus仿真图及C语言源代码
2 K" F7 k; c. @
! H6 o% Z# B# \' C- Z" S: d6 K1 z5 K( B: D1 e: ~: j) P, I( \
单片机c语言源代码如下:; i T- ?9 r3 e, |. O& O
//名称:八路抢答器
& \$ M; j( _8 D4 W3 o//功能:主持人按下按键开始抢答,此时抢答灯闪烁
9 p; o" _( k( a+ k//十秒内抢答,如果没有抢答的则直接复位
- ~7 @3 q6 K4 t8 ]$ M//如果有人抢答成功,则其他人抢答无效,60s内答完超过60s自动复位* w& [/ y" _9 Z$ x# V" j) w( ^
//回答期间抢答灯常亮,回答的人方灯闪烁,直到回答完毕,灯常亮表明回答有效
! G' y0 A1 S& m' F9 u8 F% h//如果超过60s自动复位,回答结束主持人打开按键,复位。7 ]( _% O: k0 c2 Y+ v
#include<reg51.H>6 c, b( `8 h! w' j
( q( n0 T; ]1 Z n3 l& s+ G: s- [- w5 ^% m' z( ^
sbit Presenter=P2^0;5 _ I# E% b' n
sbit K=P3^2;4 k) M8 m% K+ D) a# E
bit Presenter_flag=0,flag;//主持人按键标志位,仅允许一个数据通过标志位
4 b, t" v- X3 T7 nunsigned char Timer=0,i; //时间标志+ R' d$ s' @* k+ [* D0 a0 {
unsigned char ren=0xff;7 D$ M2 T# u, s: \( p
bit x=0;% x/ L! O7 y q1 t) u
void System_Init();
( h& ~+ W' Q" W3 E I' mvoid System_Rest();8 c* Y9 q6 H) _8 ?& e: S' p6 d
void main(); `8 j2 e6 F( R. T
{! @$ i, [/ B; m
System_Init();# X+ F$ r$ C3 r8 ]8 R$ d
while(1)
0 B1 c& O9 }9 K# ?5 ] {2 U4 N1 E2 _$ |
if(Presenter_flag) //主持人按键按下时开始系统
5 g( N1 @7 d: o3 j5 W( x: _- a { + f# g! \+ z1 l9 R; g& t8 m5 Y
K=1;
& {. U* U& R" x4 y* l if(K==1) //主持人按键起开% A9 J% l- C9 `+ r, e
{break;2 V4 _4 A9 D# P# E2 L
Presenter_flag=0;& ?( j2 q- t7 X+ q# E' K- v$ g: C: J
}
. L( D, V: _3 O4 q }. F( w" S( ?8 [! l, h
else
0 s& ]# i/ v( `2 b6 D/ ? System_Rest();
5 ^5 l8 n7 ~9 C+ j3 u8 H4 j2 H }
; N; G* l, {% Y4 B0 D% z}
# E# z# G- ]2 Svoid System_Init()
* U6 ]0 c0 F* y% J6 Y: y$ D{
7 d6 U. V5 Z. E' r# G% \ EA=1; //打开中断
5 Y& S5 Y5 b) x( [) n4 W( a EX0=1;
. Y% K+ w5 e8 m2 z% s- E' Q6 V IT0=1;% A9 o9 z9 l: b+ z* d- r
TMOD=0x01;' i% _4 V1 ?) |% L9 W: c* Y# ^
ET0=1;" l/ h! W) @' ?. n; N% \4 e7 c, f
TH0=(65535-50000)/256; //50ms& m4 m& v4 J7 n( F: f
TL0=(65535-50000)%256;, R" [ J. a! ^5 z
Presenter=0;
, R q y7 c, S TR0=0;
$ T; l' C Z/ S( Q( V}" @; Y6 v' m% I
void System_Rest()
' ]3 @' e% n& b. S& @/ ]& H{; j$ B! J/ c) G: `; b( m* B! v
P0=0xff; //复位设置:在主持人按键起开或者,抢答时间超过10s或者答题时间超过60s
`! G9 Y2 Y& O8 C( w! y' h, K6 f, | P1=0xff;) u1 h7 v5 e) `) J& ^
TR0=0;5 M/ m* m1 [. v2 \
Presenter=0;3 D$ q! x. r( X2 D! x# Z* G1 B
flag=1;- s8 Q$ a0 j0 S# b& d
i=0;, ~, r7 K* B+ _* t
Timer=0; ! e3 N) L3 g7 P% L
}) n1 e+ Y* g- E9 R! C0 | L2 ^# u
void into() interrupt 0
3 N% F8 e# d: g; H+ n, i7 J{9 P! D* U* v6 ^6 }9 [+ z
Presenter_flag=1;//主持人按键按下
/ F2 v+ X' s% Q% ~. M TR0=1;
6 l% }9 }$ F4 ], I8 J' B9 u! Q/ k}
+ |4 y3 ?; q" x B' Yvoid Timer0() interrupt 1- E8 }9 u2 m" a+ L/ [) z, \ h5 |
{
( u) g$ x3 t/ b( { TH0=(65535-50000)/256;
) d) m: \2 v/ m& T s2 S. q TL0=(65535-50000)%256;
. ?3 _) Y* {' x+ |0 [ }3 H6 c i++;
- R& p a4 U! m if(i==20) //1s钟5 }, T' E1 v: q
{
8 t5 @" X+ F4 R0 ~1 z+ P i=0;$ i% c: H: Z$ d% D* V) I* E6 N
Timer++;0 H) X3 I2 Y' Q$ V* e
P1=0xff;8 q4 E2 L& u4 u/ x. a: z3 e
if((Timer<10)&&(P1==0xff)&&(flag==1)) //10s抢答时间,10s内如果无人抢答则复位2 e. ~- v- T+ S) C7 B( n, ~
{
) P( n. V, ?& p, V& o% l Presenter=~Presenter; //抢答指示灯闪烁' w1 O* j {# V7 ]$ r: x2 j0 Z, ? v
}
; ~! G- e5 ]; N, g) b$ g' ] else if((Timer>=10)&&(P1==0xff)&&(flag==1))
; |& j& K6 Y: s. c$ t" c {
: w- C% d+ M& D Presenter_flag=0;& r- p# C, s. }1 \# f. Z
Timer=0;( W* w+ Q7 k+ P9 A( I6 w% {: k
i=0;
& r# |2 f+ o2 Z. F. y0 \' z" L }
8 @/ i# b1 l6 X P1=0xff;; [8 W; T7 E1 Y1 a
if((Timer<=60)&&(P1!=0xff)&&(flag==1)) //答题时间,60s没答完则复位
2 b3 e/ k7 p1 R' x7 S3 o {
+ w. ^1 y4 _6 }* |" V% R: T, N ren=P1;# q) S2 ]0 n0 _, M, h8 M
Presenter=1;% p! M5 ]+ N+ P! n1 K' _0 [
flag=0;
% [7 I2 T9 Z8 r% ?2 z1 _ }
C1 r9 h, T8 V0 F( q: D5 a2 s8 D if(flag==0)6 _3 _: U v/ T- k
{! t+ f9 W' ^3 Q; f
if(x==0)
3 V4 X+ X2 V2 y; j' f4 i {x=1 0=0xff;}
) x' a7 a( E" C9 K8 }* p: _ else if(x==1)" c; n; f& E. D3 G
{x=0 0=ren;}
. l; g/ ?* ~4 M }( ?& I7 B; ~7 k) a2 ~8 E$ |9 ~/ {
if((flag==0)&&(P1==0xff))
6 k9 e# z: x/ G% N7 q/ e7 D {P0=ren;TR0=0;flag=1;}% C/ U( Y4 c* J& j2 F* Y( f# x ?" i( r: \
if((Timer>60)&&(P1!=0xff))
- ~# Y' p, k" S! R6 ?5 B! x
# ^. F& c) l, s0 y. I- v l) ^$ f2 c, j/ G( y
8 v. {# r2 O" }
; U7 Y9 i% `( m# B) s' \7 Z
2 c, I$ V; `' u/ j- K+ O7 E
…………限于本文篇幅 余下代码请从论坛下载附件…………
/ N1 m* L0 D1 v
3 R, B9 Z7 c5 t g1 K, A- g0 Z! E" h( x( X8 z3 k7 Y1 i, B
|
|