|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机智能交通灯 设计方案论证报告 仿真,程序,正式论文等
8 r( L3 L5 P h- d* D4 t8 W4 \' T* J3 D4 V8 Z5 D W; t3 g' N
/ [2 H3 U8 |' b t( y$ o+ @. Q该文件包括了电路图,仿真,程序,论文,资料等。当时是课设时做得,拿出来与大家分享。
' o( _* D' ^9 l) [5 m
" {% _+ c8 _- r" _" P所有资料下载:
5 ]. f' P, y: {/ o3 |- \# C3 i# N9 C9 M9 L- y5 |3 I5 B
8 { v, N+ y, S9 G5 z* W
) n& S2 F# M/ W3 ?" W" L& p; h下面是交通灯设计方案论证报告,压缩包里面还有完整的word格式的正式论文下载,很全面.- c% g7 I8 D$ J% c- b3 p, i( I' q
" K: ~8 D) v" x( N7 D, o: m专业课程设计设计方案论证报告
( }/ x( [3 ` P, k: ~: C$ b0 w一、课题研究的目的和意义 交通灯在我们的生活中起着非常重要的作用,不仅与人们的生命安全息息相关,同时也关系到交通的正常运行。随着人们安全意识的逐渐增高,人们对安全也有了新的认识,所以交通部门要认识到交通灯控制系统的重要性,努力完善交通控制系统。 二、课题研究的主要任务和预期目标 1.主要任务及要求 ①东西、南北方向均有红、黄、绿三种信号灯 ②带紧急制动按钮,按钮按下,所有方向亮红灯;再次按下,恢复正常显示 ③夜间模式按钮按下,所有方向显示黄灯闪烁 ④实时提醒绿灯亮的剩余时间 ⑤并可实现通行时间的按键输入。例如(1)南北红灯亮维持25S。在南北红灯亮的同时东西绿灯也亮,并维持20S。到20S时,东西绿灯闪烁,闪烁3S后熄灭。在东西绿灯熄灭时,东西黄灯亮,并维持2S。到2S时,东西黄灯熄,东西红灯亮。同时,南北红灯熄灭,南北绿灯亮。(2)东西红灯亮维持30S。南北绿灯亮维持25S。然后闪烁3S,熄灭。同时南北黄灯亮,维持2S后熄灭,这时南北红灯亮,东西绿灯亮。 2.预期目标 实现主要任务及要求,并在其基础上增添人行指示灯等其他功能。 三、设计方案 1.设计思想(总体的设计思路想法) 一个交通指示灯系统分为指示灯显示、倒计时显示两个大部分。指示灯显示部分中各个灯的情况如图所示。![]() 倒计时部分则利用晶振进行计时,设计一个1s的定时,设置初始值后每1s将初始值-1,并输出给数码管,从而达到倒计时的功能。 2.方案论证(要有多种方案的比较) * ?$ p: p2 V, D" L- I
方案1:采用标准STC89C51单片机作为控制器通行倒计时显示采用2位LED数码管;指示灯采用发光二极管;LED显示采用动态扫描,以节省端口。紧急情况采用中断完成。以上系统结构框架设计,单片机端口刚好满足要求。该系统具有电路的简单,设计方便,显示清晰等特点。整体框图、流程图如图所示。. L$ o! c* a, X- A1 r2 d0 S4 H
$ F% M1 g- ?" Z5 h/ |0 l1 t
![]()
% b; {1 d. d' }, u8 x; G
! j m) I6 e. A Z方案2:采用SCT89C2051单片机作为控制器,通行倒计时采用16X16点阵LED发光管;列驱动采用74LS595以实现串行端口扩展,行驱动采用4/16译码器74LS154动态扫描;译码器74LS154生成16条行选通信号线,再经过驱动器驱动对应的行线。每条行线上需要较大的驱动电流,应选用大功率三极管作为驱动。这种方案显示可以更加清晰明了,单片机占用端口少,但是需要大量硬件,电路复杂,耗电量大。整体电路如下图
' @6 |! }2 L+ L ! L" R8 Q7 z; V8 q3 B" ~. w
+ H1 ]4 D. z+ v9 L0 f0 C0 x( ~
: i$ k9 ^" I K0 g* A7 I
( v9 n+ t8 u$ _( E3.设计中要解决的主要问题和措施 问题一:如何实现倒计时与灯的变化相同步 在整个交通系统中,指示灯与倒计时相同步是重要的问题,设定的时间不光是倒计时也是指示灯的显示时间,因此解决此问题就变得尤为重要。 问题二:如何能够调节数码管所显示的数值 任务要求需要使得倒计时时间可调,那就需要将数码管显示的数值进行合理调整,同时还要确保时间和指示灯相对应。 解决方案一:可以看出,无论倒计时数十多少,指示灯发生变化的时间都是最后5s,因此,我们想出的方案是,不用想倒计时一共是多少时间而是仅在最后5s时做出判断,判断出是绿灯闪烁还是黄灯亮起。 解决方案二:对于数码管数值调整,可以想到+1/-1的调整程序,这类程序,我们在单片机的课程中已经学习,通过+1/-1的程序从而实现对数码管数值的调整。 四、课题进度安排 1、第一天至第三天:熟悉课题、查阅资料、合理分工、撰写方案论证报告。 2、第四天至十一天:硬件电路设计及软件设计。 3、十二天至十九天:实物的焊接及调试。 4、二十至二十一天:准备材料答辩。
$ z( h: D. |" k5 S" ]单片机智能交通指示灯仿真效果图:
' t- F$ Z% m# B
7 R5 q- T4 I2 T! W1 {+ D, f( e; s% b5 P! @4 g
智能交通指示灯的单片机源程序:
. G1 z2 C& y/ V1 @7 P8 Z1 Q- k. Y7 n#include <reg52.h> : N$ B/ o ^" p7 q2 p
#define uchar unsigned char & K. O" }9 X& y4 I8 P- ^
#define uint unsigned int
$ v3 ^$ t) [4 ^. Q. N4 ]+ h
) z* J o% u U6 }5 E4 x
- n) d' z( t `( v6 d% O7 ]8 w4 N, i* n/ w. f+ Y
// 0 1 2 3 4 5 6 7 8 9 ' @8 ~ V% h; e' g
uchar code smg_du[]={0xc0,0xf5,0x8c,0x94,0xb1,0x92,0x82,0xf4,0x80,0x90}; # L" ?/ p0 O8 \3 m7 e9 U# ^2 }
, \# l& S. l/ y) c. q) ruchar dis_smg[10] = {0xc0,0xf5,0x8c,0x94,0xb1,0x92,0x82,0xf4,0x80,0x90};
: n7 k, b8 [1 M# v8 Euchar smg_i = 4; //位数* {: F. l4 x; {' o/ s7 c4 Y& Z
& ?) f, ~8 r( z9 f( Y- K5 S0 I! {0 m" ?7 [
sbit smg_we1 = P2^0; 1 F4 _) ?, h( x) _) `
sbit smg_we2 = P2^1;1 H! ?- y4 y( I* L' r: T8 a
sbit smg_we3 = P3^6;
& L* B" C' d4 J( r2 Dsbit smg_we4 = P3^7;
4 ^* O2 m" Y: a+ Rsbit LE1 = P3^3;4 b0 O2 ]0 g- ?! Q1 f0 F
sbit LE2 = P3^3;
+ [, \: a8 H5 s+ H- }5 [) F) S6 k: W5 F' J: w9 A
char dx_s = 0; //倒计时开始 p; i: s- A6 m9 s- @ [
char nb_s = 0; ( M; F5 ~: }# }
sbit dx_red = P2^4; //东西红灯
4 v8 r# A% g$ w0 C9 d% ^: Fsbit dx_green = P2^3; //东西绿灯8 y3 J7 K4 h6 Y
sbit dx_yellow = P2^2; //东西黄灯% P4 q- Y! Q* ~6 B7 e% ]( E/ i0 P
: Q5 `3 G) U/ V# j9 y
sbit nb_red = P2^7; //南北红灯 P6 R) s P5 |2 z' s9 L
sbit nb_green = P2^6; //南北绿灯
8 j+ y) v- Q+ ~9 _3 d, E9 V; x ]sbit nb_yellow = P2^5; //南北黄灯+ a J& ~! H) Z' R3 z# B' b, Y( I
" ?5 S* V8 k' y' g; J$ s
* b t1 J, B3 F: B+ s* N
bit flag_1s = 0; //延时标志
6 ]2 k) x$ Y* a' @: t. a( S% cbit flag_500ms;
R* Y6 _2 N+ \' ~* ~* ebit flag_dx_nb;
3 G( R- k1 C8 fuchar flag_5m_value;! R$ q8 {; j8 ^% @$ @; y2 F! ?0 B6 O
uchar i;/ k. y, D/ R1 [+ C; _
uchar nb_time = 10,dx_time = 15; //东西南北时间初值
. o7 a4 B; l- M, ]9 Xuchar flag_jdgz ; //交通灯
4 ^( d! C: ?" X& @4 T. N4 F3 ~9 L0 E% [+ |. m: n) H$ Y- E. ]
4 f; l- I- {; p7 P; ^& H4 T" _// 数码管为位选
& x1 C1 o, Y7 A* k9 T5 Jvoid smg_we_switch(uchar i)
" y9 u8 F! `" G/ b8 ^' w{0 `- ?& b1 f2 U7 ^! G
switch(i)
+ g, I* J4 t( i {
* v4 `' O- _& c. f/ K case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 = 1; break;9 t/ c3 H& c/ A
case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_we4 = 1; break;6 R, P5 t' h. ?! L6 v
case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break;' U9 F& F% i3 |( E" W/ p
case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break;
( z3 v% R) l' {! F( ^ }
! |- [/ W$ h* Q4 f1 s$ q}
% y) [+ M1 A* G# C q! x" T3 {$ G' p: d3 _% A# v3 m1 x
" C) |$ a6 {7 ~
' _) b9 s) P, G# ?" a, D
// 延时程序. i% `6 z4 w& q4 O4 n) r$ }, n
: B# L0 |$ i# s& ~void delay_01ms(uint q)1 W. F* r/ I; M e) n2 P/ O5 `
{
+ {, P& N8 @2 X# F6 U uint i,j;: B1 w- r" Y+ W9 K j3 Z# v
for(i=0;i<q;i++)* `; Z, h; ~3 h9 C) P$ M- l9 B
for(j=0;j<110;j++);
( B: J' Y1 h$ E/ o1 I}# Y7 U! a4 Z% ~3 F
) P+ W* c9 i6 n* K0 X1 ~% u1 Q! @) u8 `3 Y9 [8 W& Q
// 数码管显示0 ^) Q0 @$ e, G- ` H5 l
# M" g. H M/ O# Z! M
void display()
' m! I/ M4 g& P0 q1 u5 M( h{
* [3 P( F, x1 y; a4 Q+ ]2 B# S uchar i;( q8 [% p3 c$ T, t; l. c
for(i=0;i<smg_i;i++)
6 W; Y0 A7 d- h0 D { 1 q9 K+ l7 H' C+ f% u# L
P0 = 0xff; % B7 A2 s% K; v2 W1 `; [9 s- e/ h
smg_we_switch(i);
2 t; N* B* O! c1 Q, k P0 = dis_smg; 9 N1 k& y W1 R: @
delay_01ms(3);4 S8 G# c3 E P
}; d r7 Z3 [0 w! r$ n
}! q/ \ y0 |1 s. c
& i3 {+ C4 p4 F' H: d
// 定时器初始化: p) @9 |9 m$ s$ o' u" ?9 B
; g7 |0 a$ c, E$ _& R6 Lvoid time0_init()
; T# E" x, \8 K$ Q4 J{
* m3 z) {& O: `. ]6 c EA = 1;
' p0 {2 a! |+ n6 p0 n1 m) u, D | TMOD = 0X11; * S; m' h7 o$ W) D7 L9 V$ U
ET0 = 1;
; s& u/ f" Q( Z% r TR0 = 1;
7 L1 |2 K4 Z8 P6 V' q+ C ET1 = 0;
+ A( M) D1 ~9 B3 w TR1 = 0; D; _8 e# O5 j5 R! O a1 Y9 F
}
* i% E9 y( S% C$ y. s8 t0 f( \6 [' U' C
// 交通灯管理
* ]- p( \) ]5 e) `3 x {
- w1 {; d( H$ Svoid jiaotongdeng_dis()" }3 k6 p3 ^$ l6 o; L
{
5 A% B* H( ~- l; G( m if(flag_1s == 1)& T$ o0 j, i* r
{
2 E8 y2 q) V, w' W/ @) J Y flag_1s = 0;
: D# B. T5 h# u% { if(dx_s == 0)
4 o4 P5 k |" d {
* O$ X+ B. z9 f {( {# B if(flag_dx_nb == 1)& S4 Z( e/ w# j* a# P2 J$ M' I7 i
{' E5 N+ ?: x! d% f
dx_s = nb_time; //南北时间
' l# g9 v) C/ J6 n nb_s = dx_time;
, l0 u. a1 n6 b: g }% G3 l' J) Z4 X3 D
else
, ^' E2 A/ L" t3 ]4 _ {! \; C- Z0 L6 a8 I* W) [+ s, q
dx_s = dx_time; //东西时间
2 U+ N. D# P1 a nb_s = nb_time;
- i( |* y+ a! [' ? }
& v2 \$ B& [) k' s( a# @. K flag_dx_nb = ~flag_dx_nb;
! f/ E- U$ @/ }5 v1 I0 v }/ v6 h* y' H$ D" m
dx_s --;
2 p$ G6 Q, h" R0 p/ R% u nb_s --;
2 e$ ^" u1 z6 J; P: j }# l4 F+ _$ |: D9 X- @* c" R
dis_smg[0] = smg_du[dx_s % 10] ;
( E6 e! t* |; q( K6 w: D dis_smg[1] = smg_du[dx_s / 10] ;
# N) L' I4 {( q4 h, m- S4 I- h$ ` dis_smg[2] = smg_du[nb_s % 10] ;/ E7 r+ U- U2 y# V4 c! l3 U
dis_smg[3] = smg_du[nb_s / 10] ;- z: V& q/ U( Q7 F8 F; _3 `
6 q3 G* d" ^5 d i4 F9 P+ X' k// 东西时间- c" W6 P* d) [9 \
if(flag_dx_nb == 0) - A2 R, {6 F7 b1 v
{ S1 \/ f+ p2 h9 x! X
if(nb_s > 5)
: H' R( P: e+ L( x{
& V, u" \) X$ T+ G" d: r dx_red = 1; //东西红灯灭
+ p" V2 N7 ?( I5 }, q d o/ z dx_green = 0; //东西绿灯亮. b; u, q7 @7 M; B( p7 X
dx_yellow = 1; //东西黄灯灭# ?# _% B& _. X& v1 ~
nb_red = 0; //南北红灯亮( ~- b9 ~) l+ d7 W
nb_green = 1; //南北绿灯灭9 M# ?7 H& B- E! k9 q
nb_yellow = 1; //南北绿灯亮
0 Z5 O) s9 i$ I+ {: o flag_5m_value = 0; / S% [8 P V5 A0 C9 ?
}
) C1 O6 j1 c# k2 ~8 s0 p if(nb_s >= 0&&nb_s <= 5) //绿灯闪烁
/ C( @* N! Y# k! R$ j. r% f9 G{# d' s9 V- h% k Y8 Y3 h" }3 d7 s
dx_red = 1; //东西红灯灭
& ^8 Q" T! r- F dx_yellow = 1; //东西黄灯灭8 P! e" G5 u6 r
nb_red = 0; //南北红灯亮5 U8 X0 q- l+ \! ~
nb_green = 1; //南北绿灯灭
' y$ V& c7 H$ u* u, Q4 _9 [0 q nb_yellow = 1; //南北黄灯灭* V# R+ @! V* N4 s
if(flag_500ms == 0) //绿灯闪烁" t: i7 a: j; [
{
. H D) e+ t; `! G5 B dx_green = 0;# M3 H) h$ d5 V4 w4 O7 @( j
}
+ G! `& |5 K; E* Y else - U6 M3 S! y- `0 k# p
{2 B; `9 U% v$ y% J
dx_green = 1;
s6 L" `" p# e, T* n- k- K3 w8 Q }1 H, N0 V B; \4 x6 e
}
6 m$ {# u6 P) V& }0 e) p1 J$ j; @9 L- F4 ?/ i
if(nb_s==0)+ I2 b9 J' T$ n a/ B
{) c( f q( L+ @; r9 w1 {
dx_red = 1; //东西红灯灭
- S: e- a1 e K0 n2 E dx_green = 1; //东西绿灯灭
' F2 ]9 v- S8 i. w' ^, U7 g/ O' u- L dx_yellow = 0; //东西黄灯亮
, s2 ?: m1 Y: O7 O/ T2 G nb_red = 0; //南北红灯亮8 X8 a* C9 Y; N% j) z% q# D
nb_green = 1; //南北绿灯灭
+ g* |$ k8 ?; h2 I5 i! m$ }- m nb_yellow = 1; //南北黄灯灭
I/ C- A# m- { }
' S3 V5 `" ?% A, M) b# I2 t
3 U! W4 x" a: G6 b( }5 L* L* l7 T; x6 K# k- W; W4 o P
}
! E' s5 y, [0 n. p
. t) }7 D8 Z; K// 南北时间6 \% B, {) F% u" s! J* ]
if(flag_dx_nb == 1) ' T# L6 Z$ q' H9 P
{ LE1=1;
8 t$ x9 }+ c+ V& e7 n if(dx_s > 5)* @! z& ~$ R! {* U- ?
{$ L! C9 @4 n3 k2 Q
dx_red = 0; //东西红灯亮+ o! F) Z1 P" F4 Q+ z1 u8 z" g6 s
dx_green = 1; //东西绿灯灭3 o- `$ i0 a/ w/ V3 g3 i; D! J
dx_yellow = 1; //东西黄灯灭
, O% _4 I. @9 M* `5 Z) r nb_red = 1; //南北红灯灭
" P( R8 {: c/ w: ^ nb_green = 0; //南北绿灯亮
& x+ O# _ b6 e nb_yellow = 1; //南北黄灯灭9 M2 ?9 L+ `/ X* z5 S5 z. q* i
flag_5m_value = 0;
* i) O% R6 l2 y( J }
1 y$ Z+ q2 f0 A d$ R7 o& q0 g if(dx_s >= 0&&dx_s <= 5) //绿灯闪烁+ \* r8 L( h3 |# i' @4 z2 E
{
8 F* p" n3 `# G+ d dx_red = 0; //东西红灯亮, w8 I( Y9 B- |/ Y- D3 P# u
dx_green = 1; //东西绿灯灭
3 x! u* @. ?$ y5 N: {3 \ dx_yellow = 1; //东西黄灯灭
" p+ r2 U7 A% {; ?: z nb_red = 1; //南北红灯灭
) e% ]: D& ~/ E) A- O1 K- G8 v nb_yellow = 1; //男别黄灯灭
+ X- x6 q) B& ]$ F. v+ y/ \4 t/ T if(flag_500ms == 0) //绿灯闪烁
5 w% Y: i# h5 }9 G2 P{
9 p' e* j \4 V* F) \' r nb_green = 0;
3 o( ]1 q$ @+ {/ f2 T7 L7 y* @- ] | }2 S! {! F; H8 W; Y! u) H; L
else * w X: n y7 E2 w+ m( I1 C' N
{
4 R7 w% U" R6 |' A* S. X" c nb_green = 1;
0 `+ O( y, x" R7 Z }2 ^' \3 \- X# o4 t
}; K4 s& B1 h1 S# O' p% z
' J- y. `5 Q( u- _5 n5 v
`" c7 X6 V! }7 X: U
}# `/ A2 C2 W8 h1 u* {& U/ ?3 \9 W
}5 E! `, z: h3 M8 m
// 按键设置# y x+ t2 g7 v- s* P, j) d
uchar key_can; //定义按键键值4 v2 d6 |1 O4 N
3 `2 e0 d0 l' H* G) s! ^# t
void key() //按键
: i+ e2 Z* Y$ ~8 u# x{+ [2 u# d1 J0 t2 _0 q% r: ^" I
static uchar key_new;
$ a. m) }: q7 G- q5 H- N' w key_can = 5; //键值最大; w9 G% N8 B( ?7 Y. x
P1 |= 0x1f; K8 k* h. k- B0 q7 p
if((P1 & 0x1f) != 0x1f) //确定按键
) Y; j. M" z' p B) J+ s$ W {4 x8 ?1 A0 w. z2 ~9 f
delay_01ms(1); //消除抖动0 _- {. }) M/ ]4 M) Z
if(((P1 & 0x1f) != 0x1f) && (key_new == 1))! r* ~5 | k7 y
{ //确定键值按下
" E0 c% z; u7 _0 L+ c& S ~# K/ V4 t key_new = 0;
9 X+ C/ \$ ?/ s6 t2 {2 Q switch(P1 & 0x1f), A1 Z3 S" k9 a3 T
{
4 S, ~4 d% U& R; f2 j% R6 H1 T case 0x1e: key_can = 1; break; //模式键
. F* i5 A- e: P& |( u case 0x1d: key_can = 2; break; //加键
/ {1 ?. d7 u# d% R case 0x1b: key_can = 3; break; //减键& T4 ^: m" X9 s& m! [, a
case 0x17: key_can = 4; break; //紧急模式键
9 [8 [/ D: R# ` }0 K5 A8 r& l6 z! K) f* ?
}
% |! z4 j5 j( C+ l2 Y4 D }
5 W: {9 H1 d% s( w else
/ g; ?' s5 D1 t7 |* c. u key_new = 1; $ l" s% }/ ?! i
}
, Y. a" |. U0 E4 |. i
& L V* k; G7 t' suchar menu_1,flag_s;' r+ Y4 G |; X2 Q2 F
3 Y1 Y: i* d" b% v; e8 _
2 K! j' I8 z* w7 N+ K0 x) j$ e// 四种键值. J0 J7 a Q4 c( N/ C/ E
void key_with()
) x' N5 I& k3 E3 {7 a; C( d4 I{
: }+ r0 q$ ?7 T+ O7 Z; s& ~% m# k if(key_can == 4) //紧急模式
, J; Y0 |# ?# T7 I8 }$ M5 D {
' T7 U5 L y9 M) `; s8 C( ] flag_jdgz ++;4 o+ j& D& F& Y8 a* R
if(flag_jdgz > 1)3 F) S- @+ ^7 p% R9 C1 _4 @5 }# B5 P
flag_jdgz = 0; " P6 `, y0 j5 C" U7 ]8 f! T8 ~# G# ?% W
if(flag_jdgz == 1) // 全部红灯亮
7 j1 A. W t( t5 h- ~ {
% N( c* ~+ _$ k' e2 P8 x dx_red = 0;
( b6 K( M# i( ~6 l% C+ V dx_green = 1; & _5 r. ~/ [3 c% y* E
dx_yellow = 1;
/ S/ {! ~; m Z& {* h9 o9 ]# e1 ^ nb_red = 0; - _8 a, I; P Q X
nb_green = 1; " F. W( }8 d4 X( _# z/ K' r- `
nb_yellow = 1;
" t8 {+ C9 b- i8 b; g }# o5 z# i: [5 p4 A6 t! K! \% B. v' Z
, ?# }1 s5 Z7 r/ P5 ` D4 {$ N9 u5 m9 i( y' P
}
5 u* {' V0 O' a% l/ S" G if(key_can == 1) //模式键
, y* `' X; I; y/ i9 E- t8 I {
" r; v8 e6 X8 ?1 q, Z menu_1 ++;
* ^# f; S) C! s" P3 F" B if(menu_1 > 3)
& r8 @. g+ G+ I' x: Z6 d {
( E2 b! a. M+ g% u menu_1 = 0;8 T8 D/ b' @$ k$ w
}/ W8 w/ v, Y" }5 B& {
}0 q |5 K( b M3 p9 Y
% J& L2 L1 F% `" w6 C if(menu_1 == 2) //东西时间调整/ k0 ^* i. X& n: Y3 G/ J# E
{
+ h. ]! r/ ^' H' l. H4 N if(key_can == 2)3 U6 h) |2 m0 K$ A
{5 _3 Q+ P1 [- E v2 Y5 ?: a" w0 M
dx_time ++ ; //+1) M7 `+ u6 A4 \
if(dx_time > 99)
: D: s* Y) p2 S0 R4 ^0 X" @; i dx_time = 99;* _$ K( N* r# G; K6 h* e: ?& B
}* y% Z7 P* h. Y6 q0 H
if(key_can == 3)
# R# @' E/ c+ i4 X/ a2 Q {3 O) E% K- B) T) Q9 d' [
dx_time -- ; //-1$ p: \1 i7 x9 z: r; [+ p1 l
if(dx_time <= 10)
( d Q+ u1 v& M5 z$ V: ? dx_time = 10;
7 N& G5 h& d' q# ^; ^! [+ | }
6 V. @& S0 u& @ _$ X dis_smg[0] = smg_du[dx_time % 10] ; //显示时间
5 U+ q4 Y1 O0 T# e dis_smg[1] = smg_du[dx_time / 10] ;
: ]) c% s4 q, Z. x* |$ F! j/ a5 x dis_smg[2] = smg_du[10] ;
) B. {# u" t( Z, v$ s4 f9 A3 C dis_smg[3] = smg_du[10] ;
2 S; K9 W# k" \/ v
3 u( L! G0 g! g) h% J% n4 u$ }' [/ d }
3 |. @( f" U2 w0 q* Q! J [" b if(menu_1 == 3) //南北时间调整
: k5 c5 S1 R. H" J$ Z4 { {
( j$ i N/ H: x8 O7 a- a/ S9 X& X if(key_can == 2)2 R, A9 K. x4 d, H' \$ D
{: o9 E6 i: h8 V, E6 a$ V4 P
nb_time ++ ; //+1$ E9 V1 b0 t8 U) i5 Y6 k
if(nb_time > 99)
% Z( [( X# y; T( N8 T' ?1 ? nb_time = 99;. G. D* R3 G. Z# E! x% I
}
, g2 o* [* p d/ {3 R if(key_can == 3): V2 Q) T" ]. ]0 V4 Y& T3 B+ \
{
! Y0 M. |1 F# N& f/ N nb_time -- ; //-13 h9 x( d" c' A) H
if(nb_time <= 10): S# B; N. H5 J: a; I$ e# N* g
nb_time = 10;4 P/ i2 O8 `/ f& B7 ^/ w
}
6 ~* J9 ?* n% r! ^& v dis_smg[0] = smg_du[10] ;
1 `" ?0 |: @' U+ U dis_smg[1] = smg_du[10] ; " R/ N% }9 ?( ~# l8 C) _9 }
dis_smg[2] = smg_du[nb_time % 10] ; //显示时间 6 @5 ?7 s, G) g3 w u Y# W# V
dis_smg[3] = smg_du[nb_time / 10] ; 0 c# M- Y; `. D9 J* T; s
; M$ O. B, \2 F% a7 ~7 R }( k* x5 n, U L5 K1 L# W9 L4 x8 b
}
5 {$ e: ~, i k4 E5 [4 k0 T5 U, H6 w* h3 f8 v; g$ g
+ I1 @$ ?4 C- A+ Z
//主函数% O1 N7 g6 m5 k) h5 o
void main()/ D4 A: f; z) Q0 S# S* w
{: o+ m7 T6 p7 M+ m7 d- l$ i" `
time0_init();
% Q, O% G/ J' b2 U$ N7 q2 B' p- t) v/ e, }# `' z
dx_s = nb_time; //初始时间为南北时间
8 Q- l# E0 O6 K0 t) W$ \9 W. S nb_s = dx_time;; q u2 P. }% g$ O% E/ p4 T
while(1)
& N6 r) g5 f5 }! ]: @) Q( X+ F7 q. { {
: b, W1 U" D+ D0 R( B T key();; S3 |3 Q9 U8 p$ `
if(key_can < 5): f1 x: ^5 Q$ E* e a
key_with();+ N- G+ O2 Z& R+ s
if(menu_1 == 1) // 夜间模式+ H/ d/ v( F9 x4 `! [. r& J
{: N& j% d& T y4 u, D
dx_red = 1; 5 E# b: P3 B% B1 ~. s$ Y* _
dx_green = 1;
% y) I! s8 L. w& ]4 {1 l: f nb_red = 1; //红绿灯不亮
7 f6 [3 G; C' J3 V% T) V4 H0 t nb_green = 1;
* [1 h+ k2 u( T8 }
8 h: ]! e, t' ^/ M ? if(flag_500ms == 0) //黄灯闪烁: r0 @0 p; C" ^
. y) z4 B8 ~6 a; j
{
- N" A! u. I* W9 f2 S dx_yellow = 0;! x) x, |' n/ H. [
nb_yellow = 0;( D- ^) j) O' [' x% ?0 f. T ^
}4 Z# D% @7 ]/ M2 W/ {5 }+ s
else
8 J8 W! Z t9 a* @4 k{9 l9 K. K5 g, `5 [1 L
dx_yellow = 1;- O1 [% i! C) n. @0 v7 q5 q
nb_yellow = 1;
) ?% q; v3 ?1 D: F# Z% C }5 l8 V* u7 h% Q/ U
# e( T7 B1 A9 M5 x& R- N* K/ }! I
}1 H+ v. Q% I2 {# I8 m# G
% @+ D6 x" x6 j6 a7 j
if((menu_1 == 0) && (flag_jdgz == 0))& ^3 W) O" i. m& U0 u
jiaotongdeng_dis();6 G4 I! J) V) o P
display(); ( d+ T, I2 N" i( D: H
}
, X Z+ X+ d! i7 x& n}
+ Q- O1 E1 X t8 p' d: K( x* v+ f+ Q3 a3 ]# X" ~6 S: q( @
// 定时器中断服务
- V' r5 v) x. y$ _' Pvoid time0_int() interrupt 1
! K: w6 b- w: \3 E$ z{ % T' u6 C: n3 d. ]
static uchar value; //延时10ms
1 V+ j$ ^8 u) g3 K9 a3 E. q TH0 = 0x3c;: L% |9 f% j; L
TL0 = 0xb0; //50ms
) x+ j) E' b2 R: x; Z, {* f W value ++;0 _: I* j4 V: P3 R2 [7 L9 j8 k, K# V
flag_5m_value++;
" R! c) g% D8 i6 B" W' H if(flag_5m_value % 10 == 0)
) i* Q! p. Y2 G4 @ flag_500ms = ~flag_500ms;( U# L$ O5 r+ J3 [
if(value >= 20); x& ]6 T( ?/ m" L
{3 d2 u# a* m( r( \6 a& |: f
value = 0;1 @& }$ e. D8 X4 _6 |( w @
flag_1s = 1;
& G! A0 x( I" k ]$ v# |' R }& j" U/ Q: Y U1 U" n
}- `4 o) E, m7 Q* K) B5 y$ Q% K# R* U
* z' X3 R7 U6 w2 ~2 f |
|