机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2806|回复: 0

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

[复制链接]
发表于 2018-6-21 09:06:56 | 显示全部楼层 |阅读模式
5-交通灯.png 5-1交通灯.png / `& U2 d3 B7 V6 ~7 M
#include<reg51.h>
1 @1 f* ?4 u( O3 ~8 G$ q( \#define uchar unsigned char
( h- [2 ?" E, c5 b, Y8 W. j; ~#define uint unsigned int
- }3 p- ]3 V1 x/ C1 w% [sbit RED_A=P0^0; //东西向灯
' q! J2 Q: Q; X) N# `' F( [  Bsbit YELLOW_A=P0^1;0 s8 m4 w* ]6 Q+ K" a0 X/ [. o
sbit GREEN_A=P0^2;
; J5 ^+ t& t! X$ k( Nsbit RED_B=P0^3; //南北向灯( N! a% Z6 |0 h0 {! m6 B+ C
sbit YELLOW_B=P0^4;
  t0 v# z, c) K" X4 l- Qsbit GREEN_B=P0^5;
& G1 p0 i# h& ]7 Zuchar Flash_Count=0,Operation_Type=1; //闪烁次数,操作类型变量  
, U) Y1 l6 B! W( d7 W: \  p9 @6 o+ i5 K
//延时: a" _1 O2 \& H
void DelayMS(uint x)& D: s4 U. B, L& G4 _- H$ ]
{6 H) `  ~5 Y+ X, I
uchar i;0 ^3 a$ ~" `: g& M  y# \$ o
while(x--) for(i=0;i<120;i++);
+ p( k+ A' ^2 p3 D; Q9 A5 j}0 E8 `# S7 l, F3 u$ E: U
//交通灯切换* y! [5 S: L" z/ T' K3 i
void Traffic_Light()7 J3 H/ }  b9 u8 u) \# G* ~
{
9 T) L5 f+ O5 L3 _, Lswitch(Operation_Type)
2 T7 a# {0 G) w: _2 u% n% Z6 n{
3 M$ V! ~( D. @8 Z3 ]; `case 1: //东西向绿灯与南北向红灯亮0 o0 y) f+ u6 |4 b- _) L" N
RED_A=1;YELLOW_A=1;GREEN_A=0;
; A, n6 v0 ?  }5 }. Q0 ARED_B=0;YELLOW_B=1;GREEN_B=1;
# [5 j5 X4 F; U/ A7 f5 z+ t5 T, `: LDelayMS(2000);3 m0 M- M! r; {6 e0 T6 f; z5 }
Operation_Type=2;5 F5 I. y5 ^7 l" h4 S3 {6 x* D
break;4 D0 V. d2 z- K. a  X
case 2: //东西向黄灯闪烁,绿灯关闭- t9 R, p3 d! R
DelayMS(300);
- m+ p+ M  t$ I9 ]! e( uYELLOW_A=~YELLOW_A;GREEN_A=1;, n" f9 W* s  \" v4 R/ s
if(++Flash_Count!=10) return; //闪烁 5 次
* g% N/ o: O' K3 a/ \: U7 cFlash_Count=0;
  g; c( k9 A: P2 C% ]* _% f: t3 aOperation_Type=3;
9 q' s" _4 v  s3 Xbreak;9 \- O* @& n0 ?  E
case 3: //东西向红灯,南北向绿灯亮3 X& |+ L. b; V) x+ }
RED_A=0;YELLOW_A=1;GREEN_A=1;
9 C, Q' S5 j% z% l+ M3 kRED_B=1;YELLOW_B=1;GREEN_B=0;0 t$ N0 R  v  n, ?1 R' p
DelayMS(2000);( A$ `" O7 d+ b" l5 e
Operation_Type=4;8 C7 Z# H6 u3 ^' H7 D' v4 H
break;+ C9 Q( ?- H( \. |
case 4: //南北向黄灯闪烁 5 次
2 F! ^. K2 l. CDelayMS(300);) c- u9 o( y& \1 b6 A5 R9 x
YELLOW_B=~YELLOW_B;GREEN_B=1;
+ k) z1 K$ p" aif(++Flash_Count!=10) return;
- i0 [: L: M2 h- LFlash_Count=0;+ k. _+ U5 B5 q8 \: ?
Operation_Type=1;
# S/ q6 Q0 @2 o8 ]/ F, d1 t" }! [}% I; G9 v7 _2 R6 b; z. E  d
}
! v' \2 s6 |8 k* `, G//主程序
, y7 `3 `( W" @. C* a  qvoid main()4 q* ^4 b% ?" x
{# A: t; F3 {/ _0 E& a
while(1) Traffic_Light();
, b0 n9 E8 G5 H9 v9 E4 F}  
& k" b" ?' I4 X: T, ]8 u
4 x4 s  ~- p3 ^/ x3 {* o2 H, A! R; o& U, \$ m& @
% e2 _, P( c4 o8 u3 S( N
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 15:29 , Processed in 0.054594 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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