1、基于proteus的单片机控制模拟交通灯的设计基于proteus的单片机控制模拟 交通灯的设计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的工作电源电压为5 (1 0.2) V且典型值为5V,最高工作频率为24
2、MHz夕卜部 扩展 P0 P1 RXTX单片机的中央处理器(CPU)是单片机的核心,完成运算和操作控制,主要包括运 算器和控制器两部分。(1)运算器运算器主要用来实现算术、逻辑运算和位操作。其中包括算术和逻辑运算单元 ALU、 累加器ACC、B寄存器、程序状态字PSW和两个暂存器等。ALU是运算电路的核心,实质上是一个全加器,完成基本的算术和逻辑运算。算 术运算包括加、减、乘、除、增量、减量、 BCD码运算;逻辑运算包括“与”、“或”、“异或”、左移位、右移位和半字节交换,以及位操作中的位置位、位复位等。暂存器1和暂存器2是ALU的两个输入,用于暂存参与运算的数据。ALU的输出 也是两个:一个
3、是累加器,数据经运算后,其结果又通过内部总线返回到累加器;另一 个是程序状态字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为例。I/O 口线
5、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位地
6、址。在编程和校验时,P2 口 接收高字节地址和某些控制信号。P38位、准双向I/O 口,具有内部上拉电阻。P3 口可作为普通I/O 口。用作输入时,应先将输出锁存器置 1。在编程/校验时,P3 口接收某些控制信号。它可驱动 4个TTL负载。(2)控制信号线RST 复位输入信号,高电平有效。在振荡器稳定工作时,在RST脚施加两个机器 周期以上的高电平,将器件复位。EA/Vpp 外部程序存储器访问允许信号 EA。当EA信号接地时,对ROM的读操作限定在外部程序存储器,地址为 OOOOH-FFFFH ;当EA接Vcc时,对ROM的读操作从内部程序存储器开始,并可延 续至外部程序存储器。在编程时,该引
7、脚可接编程电压 5V或12V。在编程校验时,该引脚可接Vcc。 PSEN 片外程序存储器读选通信号 PSEN,低电平有效。在片外程序存储器取指期 间,当PSEN有效时,程序存储器的内容被送至 P0 口;在访问外部ram时,PSEN无 效。 ale/prog 低字节锁存信号ale。在系统扩展时,ale的下降沿将P0 口输出 的低8位地址锁存在外接的地址锁存器中,以实现低字节地址和数据的分时传送。此外, ale端连续输出正脉冲,频率为晶振频率的 1/6,可做外部定时脉冲使用。(3)外部晶振引线XTAL1 片内振荡器反向放大器和时钟发生线路的输入端。 使用片内振荡器时,连接外部石英晶体和微调电容。X
8、TAL2 片内振荡器反相放大器的输出端。 当使用片内振荡器时,外接石英晶体和微调电容。2.存储器组织和特殊功能寄存器AT89C51的存储器将程序存储器和数据存储器分开, 并有各自的存储空间和访问指 令。它有4个存储空间:片内存储器、片外存储器、片内数据存储器及片外存储器。3.时钟电路和工作时序(1)振荡器电路原理(2)震荡电路的接法第一章 硬件电路原理图设计第二章软件程序设计源程序:SECONDEQU 30HH_REDBITP2.1H_GREENBITP2.2H_YELLOWBITP2.3L_REDBITP2.4L_.GREENBITP2.5L_.YELLOWBITP2.6ORG0000H;定
9、义10端口LJMP MAINORG 0030HMAIN: MOV TMOD,#01H ;设置定时器0,为方式1MOV TH0,#3CH;置定时器的初始值,定时 50msMOVTL0,#0B0HCLRTF0;清疋时器0溢出标志SETBTR0;启动定时器START: CLR AMOVP1,A;首先关闭显示MOVP3,A *;状态1,东西方向绿灯亮,南北方向红灯亮 *;MOV R2,#20MOV R3,#21MOV SECOND,#20 ; 20 秒初值LCALL STATE1LCALL COUNT *;状态2,东西方向绿灯闪,南北方向红灯亮 * ;MOV R0,#01HMOV R2,#2MOV R
10、3,#4MOV R4,#10MOV SECOND,#3LCALL DISPLAYLCALL STATE2LCALL COUNT1 *;;状态3,东西方向黄灯闪,南北方向红灯亮 *;MOV R0,#02HMOV R2,#2MOV R3,#3MOV R4,#10MOV SECOND,#2LCALL STATE3LCALL COUNT1 *;;状态4,东西方向红灯亮,南北方向绿灯亮 *;MOV R2,#20MOV R3,#21MOV SECOND,#20LCALL STATE4LCALL COUNT *;状态5,东西方向红灯亮,南北方向绿灯闪 *;MOV R0,#03HMOV R2,#2MOV R3
11、,#4MOV R4,#10MOV SECOND,#3;标志位,南北方向绿灯闪3秒初值;标志位,南北方向黄灯闪2秒初值20秒初值;标志位,东西方向绿灯闪3秒初值LCALLSTATE5LCALL COUNT1 *;;状态6,东西方向红亮,南北方向黄灯闪 *;MOVR0,#04H;标志位,东西方向黄灯闪MOVR2,#2MOVR3,#3MOVR4,#10MOVSECOND,#2;2秒初值LCALL STATE6LCALL COUNT1LJMP START * ;;计时程序 * ;COUNT: LCALL DISPLAYWAIT1:JNB TF0,WAIT1;定时器50ms未到,则等待CLR TF0;定
12、时器50ms到了;清定时器0溢出标志MOVTH0,#3CHMOVTL0,#0B0HLCALLDISPLAYDJNZR2,WAIT1;是否到1秒MOVR2,#20DECSECOND;到1秒则秒值减1DJNZR3,WAIT1;20秒是否倒计时减完,未完则返回RETCOUNT1: LCALL DISPLAYWAIT2:JNB TF0,WAIT2CLRTF0MOVTH0,#3CHMOVTL0,#0B0HLCALLDISPLAYDJNZR4,WAIT2;是否到500ms,未到则返回CJNER0,#01H ,D1CPLL_GREEN;到了 500ms,贝则闪南北方向绿灯D1:CJNER0,#02H ,D2
13、CPLL_YELLOW;闪南北方向黄灯D2:CJNER0,#03H ,D3CPLH_GREEN;闪东西方向绿灯D3:CJNER0,#04H ,D4CPLH_YELLOW;闪东西方向黄灯D4:MOVR4,#10DJNZR2,WAIT2;是否到1秒MOVR2,#2DECSECONDDJNZR3,WAIT2RET * ;LED显示状态 * ;STATE1:SETBH_RED;东西方向绿灯亮,南北方向红灯亮CLR H_GREENCLRH_YELLOWCLRL_.REDSETBL_GREENCLRL_YELLOWRETSTATE2:CLRH_GREEN;东西方向绿灯闪,南北方向红灯亮CLRH_YELLO
14、WCLRL_.REDCLRL_GREENCLRL_YELLOWRETSTATE3:CLRH_RED;东西方向黄灯闪,南北方向红灯亮CLRHYELLOWCLRL_REDCLRL_GREENSETBL_.YELLOWRETSTATE4: CLR H_REDSETB H_GREEN;东西方向红灯亮,南北方向绿灯亮CLRH_YELLOWSETBL_REDCLRL_GREENCLRL_YELLOWRETSTATE5: CLR H_REDSETB H_GREEN;东西方向红灯亮,南北方向绿灯闪CLRH_YELLOWCLRL_GREENCLRL_YELLOWRETSTATE6:CLR H_REDCLR H_GREENSETBH_YELLOWCLRL_REDCLRL_YELLOWRET *;显示程序 *;DISPLAY: MOV A,SECOND;东西方向红灯亮,南北方向黄灯闪MOV B,#10DIV ABMOVDPTR,#LEDMAPMOVCA,A+DPTRMOVP1,A ;显示十位MOVA,BMOVCA,A+DPTR ;显示个位MOV P3,ARETLEDMAP: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND