找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3041|回复: 0

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

[复制链接]
发表于 2018-6-21 09:06:56 | 显示全部楼层 |阅读模式
5-交通灯.png 5-1交通灯.png - E: I/ D" m8 [- x* q
#include<reg51.h>
* q. h2 q/ D4 l( a9 o# D' B% t7 z#define uchar unsigned char
" @% ?  j: |% h' p9 P2 Z# S#define uint unsigned int( m, O* v9 `, G) `" B
sbit RED_A=P0^0; //东西向灯
" t" E& V4 Z# t) gsbit YELLOW_A=P0^1;
+ J& C) ]+ o2 d( x3 \sbit GREEN_A=P0^2;/ m% `2 l& T) x: e2 i  {! U
sbit RED_B=P0^3; //南北向灯
9 E/ }- k2 u# m5 |" F9 v, lsbit YELLOW_B=P0^4;- R- Z9 S1 |: O: e
sbit GREEN_B=P0^5;
( d; L* Z+ {, Y% X$ s9 Cuchar Flash_Count=0,Operation_Type=1; //闪烁次数,操作类型变量  & ~3 N4 n; A8 f" k

/ A7 r' H; u, ~//延时
8 T5 p! ^7 T+ J/ r8 `2 B& n8 O% }void DelayMS(uint x)
) f' @5 E5 N& s1 Y0 c2 G0 h- R{
$ ?  e) N: Y) l+ M% |! Ouchar i;) _* L4 M9 i" t4 s: l- G+ T; u5 G
while(x--) for(i=0;i<120;i++);
8 V9 W1 ~- l! P2 P/ E- C6 Z! D}- D& Q. y4 I6 U- y
//交通灯切换/ x0 b' g+ f5 k4 \5 e3 c; V3 ?
void Traffic_Light()7 L8 x8 u- n  ~' x
{0 `2 j6 e5 c" v) {6 C- r  h
switch(Operation_Type)
- a1 m1 s- `, t+ u{
" l# I0 L/ e/ K( C2 n: v: j0 r; tcase 1: //东西向绿灯与南北向红灯亮3 w9 k; e; q& \1 F$ u
RED_A=1;YELLOW_A=1;GREEN_A=0;  e/ e0 v" x" c' Z; @
RED_B=0;YELLOW_B=1;GREEN_B=1;
( N" A; Z% u& O2 UDelayMS(2000);
* E1 E- }1 C, Z+ l# ]+ r1 nOperation_Type=2;' X$ t/ O$ V) m' K
break;$ b3 ~( g0 P( z! P
case 2: //东西向黄灯闪烁,绿灯关闭' E' U/ w: i) ~3 g9 Q2 ]
DelayMS(300);
0 s( u$ V, W& \. @  R% U5 nYELLOW_A=~YELLOW_A;GREEN_A=1;
, ^* s% m; n) l3 e) N* R* x5 B4 Wif(++Flash_Count!=10) return; //闪烁 5 次7 Z  }5 x. h! d: `# g& K5 V3 s
Flash_Count=0;
' V8 @& ^, o3 ^; K8 S. H4 ZOperation_Type=3;9 G8 i; a$ ]2 G0 i
break;
% I7 G$ U7 _" k7 ~* H; Scase 3: //东西向红灯,南北向绿灯亮' j) k% p) I! ^5 y: S" b
RED_A=0;YELLOW_A=1;GREEN_A=1;4 {$ V! h* q9 l* d; p/ o& r
RED_B=1;YELLOW_B=1;GREEN_B=0;
% T$ }, `0 }) tDelayMS(2000);) f# g0 s+ q* P) o3 _* H0 o
Operation_Type=4;' D3 {. [5 |0 d5 B/ w( {
break;, ]' m1 s1 T% \# u
case 4: //南北向黄灯闪烁 5 次
' s2 S3 V. W( [* [# }" kDelayMS(300);: ^4 {  X% [1 D) g& q/ P; ^. V' a
YELLOW_B=~YELLOW_B;GREEN_B=1;! s& r7 z) F. @$ c8 Q' y- q
if(++Flash_Count!=10) return;
6 N/ `* t3 y. B) }8 W% FFlash_Count=0;
! ~% r( s. G8 z1 XOperation_Type=1;& H+ w1 U1 e0 g7 j5 A- y+ m
}
$ U6 C" G& H5 a" Z8 b# J0 I3 s! [}
7 d* C0 f) t' Z" K  k3 ]% C# x//主程序. Q+ L% e# v9 p, N+ O1 T- Q
void main()
* a0 |+ b' r1 T4 g{
/ I+ l. q5 m; {. x' x8 |% }while(1) Traffic_Light();
* a* @% }$ s) J9 h) {}  
  H1 c: A8 \5 O; @/ K# V) x* n
: `1 y% k5 S0 C$ N
# d; M' y  f$ L! \1 g  {
4 l# F' }8 X9 ~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-21 04:17 , Processed in 0.062854 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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