找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3086|回复: 0

5-LED模拟交通灯单片机C语言程序设计实训100例

[复制链接]
发表于 2018-6-21 09:06:56 | 显示全部楼层 |阅读模式
5-交通灯.png 5-1交通灯.png 3 a2 X- h6 h9 }, R- p3 D' X
#include<reg51.h>
" v) \& J; q% G2 M2 d* J. U#define uchar unsigned char% F4 s9 s( ^, `
#define uint unsigned int
0 E5 y% y5 P  [0 K# jsbit RED_A=P0^0; //东西向灯1 x. _% [, I" g; \( q( l
sbit YELLOW_A=P0^1;
3 \9 u) q" |% vsbit GREEN_A=P0^2;
+ Q/ Z$ Z& v1 ?& Q( O! Rsbit RED_B=P0^3; //南北向灯+ k* u8 \! Q5 |7 Z: F1 e
sbit YELLOW_B=P0^4;% ?7 p+ p4 W- @, y6 A8 T) o; S# o
sbit GREEN_B=P0^5;" R0 {3 c% N% H- J; ?& V! Y( \
uchar Flash_Count=0,Operation_Type=1; //闪烁次数,操作类型变量  
$ r1 P" ~1 V2 a, c# F3 j
4 R; P9 `- u* g; T% ?//延时
  G9 P, e- _# I! C; w+ ?6 V6 N4 b7 Cvoid DelayMS(uint x)
' ~. z: O: ~# y9 [1 @{
( v6 S+ I" _1 K7 d' H9 c% Puchar i;
, ?' v2 T0 r6 M& zwhile(x--) for(i=0;i<120;i++);; P. {3 T" p2 Y! @1 s, b
}. M) c' T% x+ Q: A, m" l
//交通灯切换8 T9 N, F  ]# J
void Traffic_Light()
6 y6 B5 B1 R! L# C+ y& T* a, o{0 {% C7 d1 t( g) O: I4 V1 O
switch(Operation_Type)( ~% |5 C$ R% ]* T6 l- z" G0 Q
{
$ Y0 @& o9 Q0 `& A) bcase 1: //东西向绿灯与南北向红灯亮
# J2 e2 }  t/ |6 ~1 e' ?RED_A=1;YELLOW_A=1;GREEN_A=0;
, E+ N' A& P* Z& ~3 M8 IRED_B=0;YELLOW_B=1;GREEN_B=1;
. P. f% B  T5 E) x- M$ ?DelayMS(2000);$ \) \# q3 H  T. a7 h4 D6 t
Operation_Type=2;
# p( M5 ~. B' |) W$ R4 Gbreak;  d) }+ K- H$ o/ H- h
case 2: //东西向黄灯闪烁,绿灯关闭
/ E2 O2 r/ p; i/ T$ N7 PDelayMS(300);9 l& S5 m; l9 u+ E
YELLOW_A=~YELLOW_A;GREEN_A=1;
3 i- z9 h9 c( h- _1 ~if(++Flash_Count!=10) return; //闪烁 5 次* M$ A; t- }2 O- Q9 [  c3 p' g7 `
Flash_Count=0;% |5 a; ~" y) N0 i/ o1 n. O, h: J
Operation_Type=3;- d) Z' H4 U4 H/ b* \
break;0 {& d" z& L; `
case 3: //东西向红灯,南北向绿灯亮
- r: i, j9 _- U2 b/ wRED_A=0;YELLOW_A=1;GREEN_A=1;9 \# Y, A- m: C; b5 p4 T( `
RED_B=1;YELLOW_B=1;GREEN_B=0;
2 t7 n6 G% t: m2 L) HDelayMS(2000);
* f: G. G6 p& B8 K4 XOperation_Type=4;( B5 J0 P1 a" ?6 u+ [: Z6 ?& a# V
break;; ]) l4 q  [0 R2 F9 |; I- {
case 4: //南北向黄灯闪烁 5 次
9 F' f9 J& S% U& h; BDelayMS(300);* K, X  S& s3 Z& c% E
YELLOW_B=~YELLOW_B;GREEN_B=1;) J  u3 {. s% r- O
if(++Flash_Count!=10) return;  z% F" G2 E  j, ~! n8 y$ y
Flash_Count=0;- W$ r2 N# x) H& V, `- a) G: L' |
Operation_Type=1;
" H  L4 ]3 u: r0 U0 L$ o  _& y+ i8 z}/ N. E' n1 w& O' i0 q" R
}
0 {" |/ p; }7 ^7 m1 x2 ^) G2 u//主程序
; m4 U! t1 y  J- P& [8 j2 ovoid main()* m6 F% S9 W, {4 e
{
+ w# s; D9 h! M1 {; L3 P6 ]while(1) Traffic_Light();" `! A% E5 ]0 i2 k9 K; X3 ], F- U
}  
, f$ G4 D/ M7 t" I6 `" R4 o4 c2 H# }8 g4 ~/ a
' G( S( u+ h& u( i" s5 d
; ]+ D6 k* Q% x2 |
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-8-23 15:10 , Processed in 0.063423 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表