基于proteus的单片机控制模拟交通灯的设计.docx
- 文档编号:17126407
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:13
- 大小:29.45KB
基于proteus的单片机控制模拟交通灯的设计.docx
《基于proteus的单片机控制模拟交通灯的设计.docx》由会员分享,可在线阅读,更多相关《基于proteus的单片机控制模拟交通灯的设计.docx(13页珍藏版)》请在冰点文库上搜索。
基于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,最高工作频率为24MHz
夕卜部扩展P0P1RXTX
单片机的中央处理器(CPU)是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。
(1)运算器
运算器主要用来实现算术、逻辑运算和位操作。
其中包括算术和逻辑运算单元ALU、累加器ACC、B寄存器、程序状态字PSW和两个暂存器等。
ALU是运算电路的核心,实质上是一个全加器,完成基本的算术和逻辑运算。
算术运算包括加、减、乘、除、增量、减量、BCD码运算;逻辑运算包括“与”、“或”、
“异或”、左移位、右移位和半字节交换,以及位操作中的位置位、位复位等。
暂存器1和暂存器2是ALU的两个输入,用于暂存参与运算的数据。
ALU的输出也是两个:
一个是累加器,数据经运算后,其结果又通过内部总线返回到累加器;另一个是程序状态字PSW,用于存储运算和操作结果的状态。
累加器是CPU使用最频繁的一个寄存器。
ACC既是ALU处理数据的来源,又是ALU运算结果的存放单元。
单片机与片外RAM或I/O扩展口进行数据交换必须通过ACC来进行。
B寄存器在乘法和除法指令中作为ALU的输入之一,另一个输入来自ACC。
运算结果存于AB寄存器中。
(2)控制器
控制器是识别指令并根据指令性质协调计算机内各组成单元进行工作的部件,主要
包括程序计数器PC、PC增量器、指令寄存器、指令译码器、定时及控制逻辑电路等,其功能是控制指令的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。
AT89C51单片机中,PC是一个16位的计数器,可对64KB程序存储器进行寻址。
复位时PC的内容是0000H。
(3)存储器
片机内部的存储器分为程序存储器和数据存储器。
AT89C51单片机的程序存储器采用4KB的快速擦写存储器FlashMemory编程和擦除完全是电器实现。
(4)外围接入电路
AT89C51单片机的外围接口电路主要包括:
4个可编程并行I/O口,1个可编程串行口,2个16位的可编程定时器以及中断系统等。
AT89C51的工作原理:
1.引脚排列及其功能
AT89C51的封装形式有PDIP,TQFP,PLCC等,现以PDIP为例。
⑴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负载。
P2—8位、准双向I/O口,具有内部上拉电阻。
当使用外存储器或外扩I/O口时,P2口输出高8位地址。
在编程和校验时,P2口接收高字节地址和某些控制信号。
P3—8位、准双向I/O口,具有内部上拉电阻。
P3口可作为普通I/O口。
用作输入时,应先将输出锁存器置1。
在编程/校验时,
P3口接收某些控制信号。
它可驱动4个TTL负载。
(2)控制信号线
RST—复位输入信号,高电平有效。
在振荡器稳定工作时,在RST脚施加两个机器周期以上的高电平,将器件复位。
EA/Vpp—外部程序存储器访问允许信号EA。
当—EA信号接地时,对ROM的读操作限定在外部程序存储器,地址为OOOOH-FFFFH;当EA接Vcc时,对ROM的读操作从内部程序存储器开始,并可延续至外部程序存储器。
在编程时,该引脚可接编程电压5V或12V。
在编程校验时,该
引脚可接Vcc。
PSEN—片外程序存储器读选通信号PSEN,低电平有效。
在片外程序存储器取指期间,当PSEN有效时,程序存储器的内容被送至P0口;在访问外部ram时,PSEN无效。
ale/prog—低字节锁存信号ale。
在系统扩展时,ale的下降沿将P0口输出的低8位地址锁存在外接的地址锁存器中,以实现低字节地址和数据的分时传送。
此外,ale端连续输出正脉冲,频率为晶振频率的1/6,可做外部定时脉冲使用。
(3)外部晶振引线
XTAL1—片内振荡器反向放大器和时钟发生线路的输入端。
使用片内振荡器时,连
接外部石英晶体和微调电容。
XTAL2—片内振荡器反相放大器的输出端。
当使用片内振荡器时,外接石英晶体和
微调电容。
2.存储器组织和特殊功能寄存器
AT89C51的存储器将程序存储器和数据存储器分开,并有各自的存储空间和访问指令。
它有4个存储空间:
片内存储器、片外存储器、片内数据存储器及片外存储器。
3.时钟电路和工作时序
(1)振荡器电路原理
(2)震荡电路的接法
第一章硬件电路原理图设计
第二章软件程序设计
源程序:
SECOND
EQU30H
H_
_RED
BIT
P2.1
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
;定义10端口
LJMPMAIN
ORG0030H
MAIN:
MOVTMOD,#01H;设置定时器0,为方式1
MOVTH0,#3CH
;置定时器的初始值,定时50ms
MOV
TL0,#0B0H
CLR
TF0
;清疋时器0溢出标志
SETB
TR0
;启动定时器
START:
CLRA
MOV
P1,A
;首先关闭显示
MOV
P3,A
・***********************************
;
;状态1,东西方向绿灯亮,南北方向红灯亮
・***********************************
;
MOVR2,#20
MOVR3,#21
MOVSECOND,#20;20秒初值
LCALLSTATE1
LCALLCOUNT
・***********************************
;
;状态2,东西方向绿灯闪,南北方向红灯亮・***********************************;
MOVR0,#01H
MOVR2,#2
MOVR3,#4
MOVR4,#10
MOVSECOND,#3
LCALLDISPLAY
LCALLSTATE2
LCALLCOUNT1
・***********************************
;
;状态3,东西方向黄灯闪,南北方向红灯亮
・***********************************
;
MOVR0,#02H
MOVR2,#2
MOVR3,#3
MOVR4,#10
MOVSECOND,#2
LCALLSTATE3
LCALLCOUNT1
・************************************
;
;状态4,东西方向红灯亮,南北方向绿灯亮
・************************************
;
MOVR2,#20
MOVR3,#21
MOVSECOND,#20
LCALLSTATE4
LCALLCOUNT
・************************************
;
;状态5,东西方向红灯亮,南北方向绿灯闪
・************************************
;
MOVR0,#03H
MOVR2,#2
MOVR3,#4
MOVR4,#10
MOVSECOND,#3
;标志位,南北方向绿灯闪
3秒初值
;标志位,南北方向黄灯闪
2秒初值
20秒初值
;标志位,东西方向绿灯闪
3秒初值
LCALL
STATE5
LCALLCOUNT1
・************************************
;
;状态6,东西方向红亮,南北方向黄灯闪
・************************************
;
MOV
R0,#04H
;标志位,东西方向黄灯闪
MOV
R2,#2
MOV
R3,#3
MOV
R4,#10
MOV
SECOND,#2
;2秒初值
LCALLSTATE6
LCALLCOUNT1
LJMPSTART
・************************************;
;计时程序
・************************************;
COUNT:
LCALLDISPLAY
WAIT1:
JNBTF0,WAIT1
;定时器50ms未到,则等待
CLRTF0
;定时器50ms到了;清定时器0溢出标志
MOV
TH0,#3CH
MOV
TL0,#0B0H
LCALL
DISPLAY
DJNZ
R2,WAIT1
;是否到1秒
MOV
R2,#20
DEC
SECOND
;到1秒则秒值减1
DJNZ
R3,WAIT1
;20秒是否倒计时减完,未完则返回
RET
COUNT1:
LCALLDISPLAY
WAIT2:
JNBTF0,WAIT2
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
LCALL
DISPLAY
DJNZ
R4,WAIT2
;是否到500ms,未到则返回
CJNE
R0,#01H,D1
CPL
L_GREEN
;到了500ms,贝则闪南北方向绿灯
D1:
CJNE
R0,#02H,D2
CPL
L_YELLOW
;闪南北方向黄灯
D2:
CJNE
R0,#03H,D3
CPL
H_GREEN
;闪东西方向绿灯
D3:
CJNE
R0,#04H,D4
CPL
H_YELLOW
;闪东西方向黄灯
D4:
MOV
R4,#10
DJNZ
R2,WAIT2
;是否到1秒
MOV
R2,#2
DEC
SECOND
DJNZ
R3,WAIT2
RET
・********************************;
;LED显示状态
・********************************;
STATE1:
SETB
H_RED
;东西方向绿灯亮,
南北方向红灯亮
CLRH_
_GREEN
CLR
H_
_YELLOW
CLR
L_
.RED
SETB
L_
GREEN
CLR
L_YELLOW
RET
STATE2:
CLR
H_GREEN
;东西方向绿灯闪,南北方向红灯
亮
CLR
H_
_YELLOW
CLR
L_
.RED
CLR
L_
GREEN
CLR
L_YELLOW
RET
STATE3:
CLR
H_RED
;东西方向黄灯闪,
南北方向红灯亮
CLR
H
YELLOW
CLR
L_
_RED
CLR
L_
_GREEN
SETB
L_
.YELLOW
RET
STATE4:
CLRH_RED
SETBH_GREEN
;东西方向红灯亮,南北方向绿灯亮
CLR
H_YELLOW
SETB
L_RED
CLR
L_GREEN
CLR
L_YELLOW
RET
STATE5:
CLRH_RED
SETBH_GREEN
;东西方向红灯亮,南北方向绿灯闪
CLR
H_YELLOW
CLR
L_GREEN
CLR
L_YELLOW
RET
STATE6:
CLRH_RED
CLRH_GREEN
SETB
H_YELLOW
CLR
L_RED
CLR
L_YELLOW
RET
・*******************************
;
;显示程序
・********************************
;
DISPLAY:
MOVA,SECOND
;东西方向红灯亮,南北方向黄灯闪
MOVB,#10
DIVAB
MOV
DPTR,#LEDMAP
MOVC
A,@A+DPTR
MOV
P1,A;显示十位
MOV
A,B
MOVC
A,@A+DPTR;显示个位
MOVP3,A
RET
LEDMAP:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 proteus 单片机 控制 模拟 交通灯 设计