机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2904|回复: 0

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

[复制链接]
发表于 2018-6-21 09:06:56 | 显示全部楼层 |阅读模式
5-交通灯.png 5-1交通灯.png
" ]; z4 e5 [$ M( b/ t3 p/ [. D#include<reg51.h>& c; o# x( Q  c* B
#define uchar unsigned char
7 V) J5 P/ l- y* }, h" T3 A- H#define uint unsigned int
% G, D6 S' M6 j: f3 ^  \) \# [3 asbit RED_A=P0^0; //东西向灯. V3 R) S+ s0 s- y! D6 G3 [
sbit YELLOW_A=P0^1;1 g4 N0 R! e$ U8 d. V
sbit GREEN_A=P0^2;0 W8 N3 D, ~! n, y# U- r# V. Z# g
sbit RED_B=P0^3; //南北向灯1 s, }, y3 u& q# u" v
sbit YELLOW_B=P0^4;) o8 d. s1 X' i7 n
sbit GREEN_B=P0^5;
( F4 {8 u6 A; [+ P/ n2 I) x  i9 V4 |uchar Flash_Count=0,Operation_Type=1; //闪烁次数,操作类型变量  
1 E& }7 G) e) d
- ]! ~/ E" k, l$ T. i# r( A//延时0 }! x) s9 L' B/ f" R
void DelayMS(uint x). J  i0 t# r; M5 d& t; w% i
{! X! k, [# X  D8 m! B' X0 r
uchar i;9 y  ~6 d1 D1 Q6 g' [3 K
while(x--) for(i=0;i<120;i++);
, H9 Y# b# T8 r& @  c}
. X6 w* Z/ y3 S//交通灯切换+ X# t  Z1 p, j6 k$ g
void Traffic_Light()
. {# Z) ]) K0 W; p4 D# c0 k, o{
& v9 ]( F9 y/ D: o& f& |$ m/ }/ D1 Aswitch(Operation_Type)
& b0 `9 p5 f, W: R& y" j/ W& J{
* {" S7 M# x. n* ~/ X) W3 ?! R- Pcase 1: //东西向绿灯与南北向红灯亮
# c/ u/ O5 v1 l3 T2 B6 mRED_A=1;YELLOW_A=1;GREEN_A=0;
" K. H  ^0 v6 T/ ^9 P! E  hRED_B=0;YELLOW_B=1;GREEN_B=1;
  h# ~% w: W2 \  A: m. N: JDelayMS(2000);
- l9 }) P0 L: x# k9 d; C) G* U) `/ lOperation_Type=2;/ W% b" r% t' o) c
break;+ T" {9 z0 V& R5 a) U/ z8 O. E
case 2: //东西向黄灯闪烁,绿灯关闭8 |$ l; F! @3 _  V( _* D
DelayMS(300);" i0 i4 `) y0 S+ S2 a- K1 C
YELLOW_A=~YELLOW_A;GREEN_A=1;
  p* V. B8 b0 t$ v  j: Pif(++Flash_Count!=10) return; //闪烁 5 次
4 T! j6 {4 E' `+ OFlash_Count=0;
$ G3 q& Q& ^  l4 S3 v5 v$ u+ ROperation_Type=3;
4 i/ z, [3 \* r/ Fbreak;$ h+ V4 p2 {& ~0 e, f7 O8 {
case 3: //东西向红灯,南北向绿灯亮9 m3 Q0 S3 t+ o- h" B* ~
RED_A=0;YELLOW_A=1;GREEN_A=1;! I& A, {0 }- S0 e" A. z+ K7 s. ~
RED_B=1;YELLOW_B=1;GREEN_B=0;; j2 l! G( ]9 q6 y1 E2 j& n
DelayMS(2000);; m/ U6 L! Y8 [, v- n6 C
Operation_Type=4;+ d  t0 o/ ~( |* L
break;
# H& p% v- i$ |. K4 d* }5 kcase 4: //南北向黄灯闪烁 5 次% V9 S2 _+ {- {" _4 f9 P7 E
DelayMS(300);, v$ m  `/ p5 D0 E6 R( i
YELLOW_B=~YELLOW_B;GREEN_B=1;
0 K& P( r0 S# \" @; @- L% fif(++Flash_Count!=10) return;. D) ^5 q7 J" B. ?* ]8 r
Flash_Count=0;$ z  w2 {. O, b* u
Operation_Type=1;4 L3 V) q* T' m7 k& E$ `2 ^: @
}2 J% \1 d: }2 j  L; Z1 Y. o9 [
}
3 ^* L; f  ~+ A: d//主程序
5 h' B9 u0 V! X  Q# C4 uvoid main()
0 t0 {$ ^/ D5 O- q- w3 n( W% f; k{
( Y- G1 \' P" W4 C. V3 \while(1) Traffic_Light();
0 F8 A: N7 j6 X( w" @}  % R+ w" g4 S& [: Y  l1 v5 j

: ~" B. |- `, g# G2 ^/ `1 U
  a& K2 K$ I" p5 c5 R0 c- C4 V! B/ e; t- E6 k1 m
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 06:31 , Processed in 0.066299 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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