1.设计目的---------------------------------------------------(3)
2.设计要求及思路---------------------------------------------(3) (1)要求---------------------------------------------------(3)
(2)思路---------------------------------------------------(4) 3.设计软件---------------------------------------------------(4)
(1)keil uVisio-------------------------------------------(4) ( 2 ) proteus 7--------------------------------------------(5)
4.设计芯片89C51介绍--------------------------------------(6)
5.硬件仿真---------------------------------------------------(7) 6.设计小结---------------------------------------------------(8)
7.参考文献---------------------------------------------------(8)
8.源程序------------------------------------------------------(8) 1. 设计目的
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更
新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。因此为了能够更好的掌握单片机的理论和硬件知识,以及自身的动手能力,而做出了本次基于单片机交通灯显示系统的设计。
2. 设计要求及思路
用AT89C51控制一个交通信号灯系统,系统晶振为12MHz。 (1)设计要求:
a.东西方向、南北方向均有红、黄、绿三种信号灯;
b.正常情况,东南西北四个方向轮流放行,放行时间1分钟,黄灯警告5秒; c.带紧急制动按钮,按钮按下,所有方向亮红灯;再次按下,恢复正常显示; d.夜间模式按钮按下,所有方向显示黄灯闪烁; e.实时提醒绿灯亮的剩余时间。 (2)设计思路:
在这次单片机的设计过程中,我们并没有用到中断,主要是通过不断的循环和低电平判断来实现以上功能的。
下图是红绿灯的程序流程图
- 2 -
3.设计软件
(1)keil uVisio4 a.系统概述
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。
- 3 -
b.整体结构
C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
( 2 ) proteus 7
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试 到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器
4.设计芯片89C51介绍
89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
5.硬件仿真
- 4 -
主要具备以下功能:
A.当程序开始运行时,交通灯正常运行,绿灯延时60S B.当按下复位键,运行的程序立即从头开始。
C.当按下黄灯闪烁时,进入夜间模式,红绿灯正常运行,同时黄灯会闪烁。 D.当一次按下红灯全亮键时,交通灯的红灯全亮,进入紧急模式,再次按下是, 回到原先的红绿灯模式。
6.设计小结
- 5 -
经过多天课程设计的体验,我学到了很多,感触也很深。刚开始着手这个题目时,我就十分茫然,大脑中完全一片空白,因为一直以来都觉得C语言好比一座巨大的山峰,你永远攀越不了山顶,更何谈看到山的另一边。之后的几天里,一直在网上搜索,希望能找到一个现成的程序来解决暂时的痛苦。可是网上的程序在电脑上一编译满是错误,一下子头又晕了。该怎么办啊?想着想着,眼睛也在网上搜索的程序上一遍一遍的扫视,慢慢我发现里面有些功能我还勉强能编出来,然后我就尝试着从简单的功能做起,写着写着,渐渐地对写程序产生了一点感觉。同时通过多方的询问和网上各种程序的借鉴,一段“惊世之作”(对我而言)终于完成了,自豪感油然而生,从内心一直涌向全身,并久久不能平静下来。
整个过程花了不少时间,但我却从中真正体验了编程的乐趣!并且,我相信自己在编程方面的能力通过这次的训练一定已经产生了质的飞跃。
7.参考文献、
[1]张毅刚.单片机原理与应用设计.哈尔滨工业大学出版社,2008. [2]王东峰等.单片机C语言应用100例[M].电子工业出版社,2009. [3]陈海宴.51单片机原理及应用[M].北京航空航天大学出版社,2010. 8.源程序 ORG 00H
GREEN1: MOV R5,#10 MOV R6,#0 MOV DPTR,#TAB MOV R1,#10
- 6 -
L1: CALL MAIN1 INC R6 MOV R1,#10
CJNE R6,#10,L1 INC R5 MOV R6,#0 CJNE R5,#15,L1 M1: CALL MAIN1 MOV R1,#10 INC R6
CJNE R6,#5,M1 CALL YE1 JMP GREEN2
;----------夜间模式----------------------------------------------------------- NIGHT1:
MOV R5,#10
MOV R6,#0 MOV R1,#10 N1:
CALL YE1
CJNE R6,#10,N1 INC R5
- 7 -
MOV R6,#0 CJNE R5,#16,N1 JMP NIGHT2
;------------------------------------------------------------------------------- ;-------------黄灯闪烁子程序-------------------------------------------- YE1: MOV P2,#6AH MOV P3,#5FH MOV A,R5
MOVC A,@A+DPTR MOV P0,A CALL DELAY MOV P2,#69H MOV P3,#5FH MOV A,R6
MOVC A,@A+DPTR MOV P0,A CALL DELAY DJNZ R1,YE1 INC R6 CJNE R6,#10,Y1
- 8 -
JMP GREEN2
Y1: MOV R1,#10 CALL MAIN1 INC R6 MOV R1,#10 CJNE R6,#10,YE1 RET
;---------------------------------------------------------------------------------- ;-------------------------黄灯不闪,红绿灯正常运行--------------------------------- MAIN1: MOV P2,#7AH MOV P3,#5FH MOV A,R5 MOVC A,@A+DPTR MOV P0,A CALL DELAY MOV P2,#79H MOV A,R6 MOVC A,@A+DPTR MOV P0,A CALL DELAY
- 9 -
DJNZ R1 ,MAIN1 RET
;------------------------------------------------------------------------------------------------------------
;************************************************************************************************************
;------------------------------------------------------------------------------------------------------------
GREEN2:MOV R5,#10 MOV R1,#10 MOV R6,#0 L2: CALL MAIN2 INC R6 MOV R1,#10
CJNE R6,#10,L2 INC R5 MOV R6,#0 CJNE R5,#15,L2 M2: CALL MAIN2 MOV R1,#10 INC R6
- 10 -
CJNE R6,#5,M2 CALL YE2 JMP GREEN3
;----------夜间模式----------------------------------------------------------- NIGHT2:
MOV R5,#10
MOV R6,#0 MOV R1,#10 N2:
CALL YE2
CJNE R6,#10,N2 INC R5 MOV R6,#0 CJNE R5,#16,N2 JMP NIGHT3
------------------------------------------------------------------------------- ;---------------------黄灯闪烁子程序-------------------------------------------- YE2: MOV P2,#0A6H MOV P3,#5FH MOV A,R5
MOVC A,@A+DPTR MOV P0,A
- 11 -
CALL DELAY MOV P2,#0A5H MOV P3,#5FH MOV A,R6
MOVC A,@A+DPTR MOV P0,A CALL DELAY DJNZ R1,YE2 INC R6 CJNE R6,#10,Y2 JMP GREEN3
Y2: MOV R1,#10 CALL MAIN2 INC R6 MOV R1,#10 CJNE R6,#10,YE2 RET
;---------------------------------------------------------------------------------- MAIN2: MOV P2,#0B6H MOV P3,#5FH
- 12 -
MOV A,R5 MOVC A,@A+DPTR MOV P0,A CALL DELAY MOV P2,#0B5H MOV P3,#5FH MOV A,R6 MOVC A,@A+DPTR MOV P0,A CALL DELAY DJNZ R1,MAIN2 RET
;------------------------------------------------------------------------------------------------------------
;************************************************************************************************************
GREEN3:MOV R5,#10 MOV R6,#0 MOV R1,#10 L3: CALL MAIN3 INC R6
- 13 -
MOV R1,#10
CJNE R6,#10,L3 INC R5 MOV R6,#0 CJNE R5,#15,L3 M3: CALL MAIN3 MOV R1,#10 INC R6
CJNE R6,#5,M3 CALL YE3 JMP GREEN4
;----------夜间模式----------------------------------------------------------- NIGHT3:
MOV R5,#10
MOV R6,#0 MOV R1,#10 N3:
CALL YE3
CJNE R6,#10,N3 INC R5 MOV R6,#0 CJNE R5,#16,N3
- 14 -
JMP NIGHT4
;------------------------------------------------------------------------------- ;---------------------黄灯闪烁子程序-------------------------------------------- YE3: MOV P2,#66H MOV P3,#6FH MOV A,R5
MOVC A,@A+DPTR MOV P0,A CALL DELAY MOV P2,#65H MOV P3,#6FH MOV A,R6
MOVC A,@A+DPTR MOV P0,A CALL DELAY DJNZ R1,YE3 INC R6 CJNE R6,#10,Y3 JMP GREEN3
Y3: MOV R1,#10
- 15 -
CALL MAIN3 INC R6 MOV R1,#10 CJNE R6,#10,YE3 RET
;---------------------------------------------------------------------------------- MAIN3: MOV P2,#76H MOV P3,#6FH MOV A,R5 MOVC A,@A+DPTR MOV P0,A CALL DELAY MOV P2,#75H MOV P3,#6FH MOV A,R6 MOVC A,@A+DPTR MOV P0,A CALL DELAY DJNZ R1 ,MAIN3 RET
- 16 -
;------------------------------------------------------------------------------------------------------------
GREEN4:MOV R5,#10 MOV R1,#10 MOV R6,#0
L4: CALL MAIN4 INC R6 MOV R1,#10
CJNE R6,#10,L4 INC R5 MOV R6,#0 CJNE R5,#15,L4 M4: CALL MAIN4 MOV R1,#10 INC R6
CJNE R6,#3,M4 CALL YE4 JMP GREEN1
;----------夜间模式----------------------------------------------------------- NIGHT4:
MOV R5,#10
- 17 -
MOV R6,#0 MOV R1,#10 N4:
CALL YE4
CJNE R6,#10,N4 INC R5 MOV R6,#0 CJNE R5,#16,N4 JMP NIGHT1
;------------------------------------------------------------------------------- ;---------------------黄灯闪烁子程序-------------------------------------------- YE4: MOV P2,#66H MOV P3,#9FH MOV A,R5
MOVC A,@A+DPTR MOV P0,A CALL DELAY MOV P2,#65H MOV P3,#9FH MOV A,R6
MOVC A,@A+DPTR
- 18 -
MOV P0,A CALL DELAY DJNZ R1,YE4 INC R6 CJNE R6,#10,Y4 JMP GREEN1
Y4: MOV R1,#10 CALL MAIN4 INC R6 MOV R1,#10 CJNE R6,#10,YE4 RET
;----------------------------------------------------------------------------------
MAIN4: MOV P2,#76H MOV P3,#9FH MOV A,R5 MOVC A,@A+DPTR MOV P0,A CALL DELAY MOV P2,#75H
- 19 -
MOV P3,#9FH MOV A,R6 MOVC A,@A+DPTR MOV P0,A CALL DELAY DJNZ R1,MAIN4 RET
;*********************************************************************************** ;----------------------------------------------------------------------------------- TAB: DB 90H,80H,0F8H,82H,92H,99H,0B0H,0A4H,0F9H,0C0H DB 92H,99H,0B0H,0A4H,0F9H,0C0H DELAY:MOV R3,#250 JNB P1.0,REDALL JNB P1.1,NIGHT ;黄灯闪烁 JNB P1.2,RESET JMP D1
RESET:JMP GREEN1 ;复位 REDALL:CALL LOOP D1: MOV R4,#40 DJNZ R4,$
- 20 -
DJNZ R3,D1 RET
NIGHT:JMP NIGHT1
LOOP: MOV P2,#77H ;红灯全亮 CLR P1.0 CALL DELAY2 SETB P1.0
LOOP2: JNB P1.0,RETT CALL DELAY2 JMP LOOP2 RETT:RET
DELAY2:MOV R3,#250 JNB P1.2,RESET1 JMP D11
RESET1:JMP GREEN1 ;复位 D11: MOV R4,#45 DJNZ R4,$ DJNZ R3,D11 RET END
- 21 -
........忽略此处.......
- 22 -
因篇幅问题不能全部显示,请点此查看更多更全内容