表4-1 比例及调整时间
南北与东西向比例 调整南北向时间 调整东西向时间
0—0.7 20 40 0.8—1.5 30 30 1.5及以上 40 20 由表可知,对应的时间调整也只有三种,分别是20,40;30,30;40,20.显然在实际应用中这样简单的处理难以尽如人意,但在此处,本设计只是模拟大致的调整过程,以上要求的程序如下:
CJNZ A, #7 M1 M2: MOV R2, #20 MOV R1, #40 SJMP OUT
M1: JB C, M2 CJNZ A, #15 N1 N2: MOV R0, #30 MOV R1, #30 SJMP OUT
N1: JB C, N2 MOV R0, #40 MOV R1, #20 OUT: CLR R5 CLR R6 RET ?? 4.2.7消抖动程序
利用程序执行一条指令的时间,再加上两次累减嵌套,程序如下:
DELAY: MOV R2, #14H A1: MOV R7, #0FFH DJNZ R2, $ DJNZ R7, A1
RET4.2.8源程序:见附录A
20
参考文献
[1].边海龙,孙永奎. 单片机开发与典型工程项目实例详解[J].电子工业出版社,2008,(10):143-160.
[2].王为青,邱文勋. 51单片机开发案例精选[J].人民邮电出版社,2001,(5):45-47.
[3].张鑫,华臻,陈书谦. 单片机原理及应用[J].电子工业出版社,2008(5). [4].张洪润,张亚凡.单片机原理及应用[J]. 清华大学出版社,2005,(4). [5].黄智伟.凌阳单片机课程设计指导[J]. 北京航空航天大学出版社,2007,(6)
[6].蒋辉平,周国雄. 基于Proteus的单片机系统设计与仿真实例[M].机械工业出版社,2009.
[7].张毅坤. 单片微型计算机原理及应用,[M]西安电子科技大学出版社 1998 [8].余锡存 曹国华.单片机原理及接口技术[M].陕西:西安电子科技大学出版社,2000.7
[9].雷丽文 等.微机原理与接口技术[M].北京:电子工业出版社,1997. [10].张萌·单片机应用系统开发综合实例·第二版·清华大学出版社·2005年 [11].何立民·单片机应用文集·第一版·北京航空航天大学出版社·2004年 [12].张一工·现代电力电子技术原理与应用第一版·科学出版社·2002年 [13].欧阳文·ATMEL89系列单片机的原理与开发实践·第一版·中国电力出版社·2007年
[14].陈大钦 电子技术基础实验 [M].北京:高等教育出版社 2004 [15].陈梓城 电子技术实训 [M].北京:机械工业出版社 2003 [16].吴黎明 单片机原理及应用技术[M].北京:科学出版社 2003
[17].李学海 标准80C51单片机基础教程[M].北京: 北京航空航天大学出版社 2006
[18].刘乐善 微型计算机接口技术及应用[M].北京: 华中科技大学出版社 2004
[19].陈炳权、曾庆六 EDA技术实用教程[M].北京: 湘潭大学出版社 2010 [20].先锋工作室. 单片机程序实例[M].北京:清华大学出版社,2002. [21].李伯成.基于MCS-51单片机的嵌入式系统的设计[M].北京:电子工业出版社,
21
附录A
H_RED BIT P2.1 ;定义IO端口 H_GREEN BIT P2.2 H_YELLOW BIT P2.3 L_RED BIT P2.4 L_GREEN BIT P2.5 L_YELLOW BIT P2.6
;主程序,选择设置红绿灯时间模式或自动调整模式
ORG 0000H LJMP MAIN
ORG 0003H ;中断入口 LJMP INT0 ORG 0030H
MAIN: MOV R3, #20 ;用于嵌套50ms软件方法计时1s
MOV R0, #20 ;预设值红绿灯时间 MOV R1, #20 CLR EX0
K1: MOV C, P3.7 ;等待检测何种模式按键按下
ANL C, P3.2 JB C, K1
JNB P3.7, F ;F键按下为自动模式,进入扫描
K2: JNB P3.2, S ;S键按下并等待计数次数
SJMP K2
F: LCALL DELAY
MOV R0, #30 MOV R1, #30 SETB 00H SETB EA SETB EX1 SJMP START
S: LCALL DELAY
CJNZ R0, #40, V1 MOV R0, #20
22
V1: INC R0
JNB P0.1, $
JNB P3.6, J ;J键按下并等待计数次数 SJMP K2
J: LCALL DELAY
CJNZ R1, #40, V2 MOV R1, #20
V2: INC R1
JNB P3.6, $
JNB P3.7, START JNB P3.6, J
MOV P2, #0DDH MOV R4, R0 SETB 01H SETB EX0
;程序开始,进行每50ms扫描 START: MOV TMOD, #01H
MOV TH0, #3CH MOV TL0, #0B0H CLR TF0
SETB TR0 DJNZ R3, Y MOV R3, #20
DJNZ R4, Y MOV A, P2 CJNZ A, #0DDH, D1 MOV P2, #BDH MOV R4, #5
D1: CJNZ A, BDH, D2
MOV P2, #EDH MOV R4, R1 CLR 01H
D2: CJNZ A, #EDH, D3
MOV P2, #E7H MOV R4, #5
;设置完毕为设定时间模式,进入扫描 ;开始50ms计时 ;1s是否计时完毕 ;本状态是否结束,并进行下一状态设置23
;预设信号灯状态,时间和车向
JNB 00H, D3 LCALL DATA
D3: CJNZ A, #E7H, Y
MOV R2, #DDH MOV R4, R0 SETB 01H
Y: MOV A, R4 ;LED倒计时显示
LEDMAP: DB C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H
WAIT: JNB TF0, WAIT INT1: JNB 01H, U U: INC R6
INT0: SETB P3.4 DATA: MOV A, R6
MOV B, #10 DIV A, B
MOB DPTR, #LEDMAP MOVC A, @A+DPTR MOV P1, A MOV A, B MOVC A, @A+DPTR MOV P0, A
JNB 00H, WAIT JB P3.3, WAIT SJMP START
INC R5
RETI
JB P3.7, $ LCALL DELAY CLR P3.4 RETI
MOV B, R0 MUL A, B MOV R6, A MOV A, R5 MOV B, R1
;判断是否要计数车流量 ;判断是否有车经过
;50ms一次扫描完毕
;判断车向
;中断服务子程序,闯红灯或紧停按键;车流量数据处理及红绿灯时间调整
24