《基于proteus的单片机控制模拟交通灯的设计.doc》由会员分享,可在线阅读,更多相关《基于proteus的单片机控制模拟交通灯的设计.doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、AT89C51单片机的片内硬件结构AT89C51单片机的主要工作特性:1内含4KB的FLASH存储器,擦写次数1000次。2内含28字节的RAM。3具有32根可编程I/O线。4具有2个16位可编程定时器。5具有6个中断源、5个中断矢量、2级优先权的中断结构。6具有1个全双工的可编程串行通信接口。7具有一个数据指针DPTR。8两种低功耗工作模式,即空闲模式和掉电模式。9具有可编程的3级程序锁定定位。AT89C51的工作电源电压为510.2V且典型值为5V,最高工作频率为24MHz。AT89C51各局部的组成及功能:TXDRXDP0 P1 P2 P3扩展控制外部中断振荡器和时钟电路数据存储器128
2、字节程序存储器14KBCPU两个16位定时器计数器中断控制总线扩展控制器并行可编程I/O口可编程串行口内部总线单片机的中央处理器CPU是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两局部。(1) 运算器运算器主要用来实现算术、逻辑运算和位操作。其中包括算术和逻辑运算单元ALU、累加器ACC、B存放器、程序状态字PSW和两个暂存器等。ALU是运算电路的核心,实质上是一个全加器,完成根本的算术和逻辑运算。算术运算包括加、减、乘、除、增量、减量、BCD码运算;逻辑运算包括“与、“或、“异或、左移位、右移位和半字节交换,以及位操作中的位置位、位复位等。暂存器1和暂存器2是ALU的两个输入,
3、用于暂存参与运算的数据。ALU的输出也是两个:一个是累加器,数据经运算后,其结果又通过内部总线返回到累加器;另一个是程序状态字PSW,用于存储运算和操作结果的状态。累加器是CPU使用最频繁的一个存放器。ACC既是ALU处理数据的来源,又是ALU运算结果的存放单元。单片机与片外RAM或I/O扩展口进行数据交换必须通过ACC来进行。B存放器在乘法和除法指令中作为ALU的输入之一,另一个输入来自ACC。运算结果存于AB存放器中。2控制器控制器是识别指令并根据指令性质协调计算机内各组成单元进行工作的部件,主要包括程序计数器PC、PC增量器、指令存放器、指令译码器、定时及控制逻辑电路等,其功能是控制指令
4、的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。AT89C51单片机中,PC是一个16位的计数器,可对64KB程序存储器进行寻址。复位时PC的内容是0000H。 3存储器片机内部的存储器分为程序存储器和数据存储器。AT89C51单片机的程序存储器采用4KB的快速擦写存储器Flash Memory,编程和擦除完全是电器实现。 4外围接入电路AT89C51单片机的外围接口电路主要包括:4个可编程并行I/O口,1个可编程串行口,2个16位的可编程定时器以及中断系统等。AT89C51的工作原理:1. 引脚排列及其功能AT89C51的封装形式有PDIP,TQFP,PLCC等,现以PDIP为例。(
5、1) I/O口线P0口8位、漏极开路的双向I/O口。当使用片外存储器及外扩I/O口时,P0口作为低字节地址/数据复用线。在编程时,P0口可用于接收指令代码字节;程序校验时,可输出指令字节。P0口也可做通用I/O口使用,但需加上拉电阻。作为普通输入时,应输出锁存器配置1。P0口可驱动8个TTL负载。P1口8位、准双向I/O口,具有内部上拉电阻。P1口是为用户准备的I/O双向口。在编程和校验时,可用作输入低8位地址。用作输入时,应先将输出锁存器置1。P1口可驱动4个TTL负载。P28位、准双向I/O口,具有内部上拉电阻。当使用外存储器或外扩I/O口时,P2口输出高8位地址。在编程和校验时,P2口接
6、收高字节地址和某些控制信号。P38位、准双向I/O口,具有内部上拉电阻。P3口可作为普通I/O口。用作输入时,应先将输出锁存器置1。在编程/校验时,P3口接收某些控制信号。它可驱动4个TTL负载。(2) 控制信号线RST复位输入信号,高电平有效。在振荡器稳定工作时,在RST脚施加两个机器周期以上的高电平,将器件复位。EA/VPP 外部程序存储器访问允许信号EA。当EA信号接地时,对ROM的读操作限定在外部程序存储器,地址为0000H-FFFFH;当EA接VCC时,对ROM的读操作从内部程序存储器开始,并可延续至外部程序存储器。在编程时,该引脚可接编程电压5V或12V。在编程校验时,该引脚可接V
7、CC。PSEN片外程序存储器读选通信号PSEN,低电平有效。在片外程序存储器取指期间,当PSEN有效时,程序存储器的内容被送至P0口;在访问外部RAM时,PSEN 无效。ALE/PROG低字节锁存信号ALE。在系统扩展时,ALE的下降沿将P0口输出的低8位地址锁存在外接的地址锁存器中,以实现低字节地址和数据的分时传送。此外,ALE端连续输出正脉冲,频率为晶振频率的1/6,可做外部定时脉冲使用。 3外部晶振引线XTAL1片内振荡器反向放大器和时钟发生线路的输入端。使用片内振荡器时,连接外部石英晶体和微调电容。XTAL2片内振荡器反相放大器的输出端。当使用片内振荡器时,外接石英晶体和微调电容。2.
8、 存储器组织和特殊功能存放器AT89C51的存储器将程序存储器和数据存储器分开,并有各自的存储空间和访问指令。它有4个存储空间:片内存储器、片外存储器、片内数据存储器及片外存储器。3. 时钟电路和工作时序(1) 振荡器电路原理(2) 震荡电路的接法第一章 硬件电路原理图设计第二章 软件程序设计源程序:SECONDEQU30HH_REDBIT P2.1;定义IO端口H_GREEN BIT P2.2H_YELLOWBIT P2.3L_RED BIT P2.4L_GREEN BIT P2.5L_YELLOWBIT P2.6 ORG 0000HLJMPMAINORG0030HMAIN: MOV TMO
9、D,#01H;设置定时器0,为方式1 MOV TH0,#3CH;置定时器的初始值,定时50msMOV TL0,#0B0HCLR TF0;清定时器0溢出标志SETB TR0;启动定时器START: CLR AMOV P1,A;首先关闭显示MOV P3,A;*;状态1,东西方向绿灯亮,南北方向红灯亮;*MOV R2,#20 MOV R3,#21MOV SECOND,#20 ;20秒初值LCALL STATE1LCALL COUNT;*;状态2,东西方向绿灯闪,南北方向红灯亮;* MOV R0,#01H;标志位,南北方向绿灯闪 MOV R2,#2MOV R3,#4MOV R4,#10MOV SECO
10、ND,#3 ;3秒初值LCALLDISPLAY LCALL STATE2LCALL COUNT1;*;状态3,东西方向黄灯闪,南北方向红灯亮;* MOV R0,#02H;标志位,南北方向黄灯闪 MOV R2,#2MOV R3,#3MOV R4,#10MOV SECOND,#2;2秒初值LCALL STATE3LCALL COUNT1;*;状态4,东西方向红灯亮,南北方向绿灯亮;* MOV R2,#20MOV R3,#21MOV SECOND,#20;20秒初值LCALL STATE4 LCALLCOUNT;*;状态5,东西方向红灯亮,南北方向绿灯闪;* MOV R0,#03H;标志位,东西方向
11、绿灯闪 MOV R2,#2MOV R3,#4MOV R4,#10MOV SECOND,#3;3秒初值 LCALL STATE5LCALL COUNT1;*;状态6,东西方向红亮,南北方向黄灯闪;* MOV R0,#04H;标志位,东西方向黄灯闪 MOV R2,#2MOV R3,#3MOV R4,#10MOV SECOND,#2;2秒初值 LCALL STATE6LCALL COUNT1LJMP START;*;计时程序 ;*COUNT: LCALL DISPLAYWAIT1: JNB TF0,WAIT1;定时器50ms未到,那么等待 CLR TF0;定时器50ms到了;清定时器0溢出标志MOV
12、 TH0,#3CHMOV TL0,#0B0HLCALL DISPLAYDJNZ R2,WAIT1;是否到1秒MOV R2,#20DEC SECOND;到1秒那么秒值减1DJNZ R3,WAIT1;20秒是否倒计时减完,未完那么返回RETCOUNT1: LCALL DISPLAYWAIT2:JNB TF0,WAIT2CLR TF0MOV TH0,#3CHMOV TL0,#0B0HLCALL DISPLAYDJNZ R4,WAIT2;是否到500ms,未到那么返回CJNE R0,#01H,D1CPL L_GREEN;到了500ms,那么闪南北方向绿灯D1:CJNE R0,#02H,D2CPL L_
13、YELLOW;闪南北方向黄灯D2:CJNE R0,#03H,D3CPL H_GREEN;闪东西方向绿灯D3:CJNE R0,#04H,D4CPL H_YELLOW;闪东西方向黄灯D4:MOV R4,#10DJNZ R2,WAIT2;是否到1秒MOV R2,#2DEC SECONDDJNZ R3,WAIT2RET;*;LED显示状态;*STATE1:SETB H_RED;东西方向绿灯亮,南北方向红灯亮 CLR H_GREENCLR H_YELLOWCLR L_REDSETB L_GREENCLR L_YELLOWRETSTATE2:CLR H_GREEN;东西方向绿灯闪,南北方向红灯亮CLR H
14、_YELLOWCLR L_REDCLR L_GREENCLR L_YELLOWRETSTATE3:CLR H_RED;东西方向黄灯闪,南北方向红灯亮CLR H_YELLOWCLR L_REDCLR L_GREENSETB L_YELLOWRETSTATE4:CLR H_RED;东西方向红灯亮,南北方向绿灯亮 SETB H_GREENCLR H_YELLOWSETB L_REDCLR L_GREENCLR L_YELLOWRETSTATE5:CLR H_RED;东西方向红灯亮,南北方向绿灯闪 SETB H_GREENCLR H_YELLOWCLR L_GREENCLR L_YELLOWRETSTATE6:CLR H_RED;东西方向红灯亮,南北方向黄灯闪 CLR H_GREENSETB H_YELLOWCLR L_REDCLR L_YELLOWRET;*;显示程序;*DISPLAY:MOV A,SECOND MOV B,#10DIV AB MOV DPTR,#LEDMAPMOVC A,A+DPTRMOV P1,A;显示十位MOV A,BMOVC A,A+DPTR;显示个位MOV P3,ARETLEDMAP: DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND仅供学习参考