单片机开发之拓展并行I/O口

简介: 本文主要介绍单片机开发之拓展并行I/O口


一、题目
拓展并行I/O口

二、要求
1、画出实验的流程图

2、编写源程序并进行注释

3、记录实验过程

4、记录程序运行结果截图

三、过程及结果记录
按照思路搭建电路图1如下:

image.png

图1:实验电路图

实现功能:控制交通信号灯

仿真实现交通信号灯控制功能。

控制顺序为:

① 南北绿灯亮,同时东西红灯亮 10s;

② 南北黄灯亮,同时东西红灯亮 2s;

③ 南北红灯亮,同时东西绿灯亮 10s;

④ 东西黄灯亮,同时南北红灯亮 2s;

⑤ 重复①~④。

过程:

  1. 在Proteus环境下建立原理图,如图1所示,并保存为expandIO.DSN文件。
  2. 将实验代码写入文本文档,并保存为expandIO .asm文件。
  3. 输入源程序,将源程序加入系统中并编译源程序。
  4. 双击芯片,将编译得到的hex文件下载到芯片
  5. 执行仿真过程观察各个方向的交通信号灯指示,查看程序功能是否正确。

实验的结果如下图2~5所示:

image.png

图2:南北绿灯亮,同时东西红灯亮10s

image.png

图3:南北黄灯亮,同时东西红灯亮2s

image.png

图4:南北红灯亮,同时东西绿灯亮 10s

image.png

图5:东西黄灯亮,同时南北红灯亮 2s

四、实验思路
实验流程图如下:

image.png

图6:实验流程

  1. 进行初始化工作,包括设置堆栈指针SP,将两个373 的输出口所有位均设置为1,使所有发光二极管全部熄灭。
  2. 定义两个锁存器的地址: U4的地址是0FE00H, U5的地址是0FD00H
  3. 分析4 个状态下两个373 的输出数据值:假定“南北绿灯亮,同时东西红灯亮”为状态1,即:Stat1;“南北黄灯亮,同时东西红灯亮”为状态2,即:Stat2;“南北红灯亮,同时东西绿灯亮”为状态3,即:Stat3;“东西黄灯亮,同时南北红灯亮”为状态4,即:Stat4。可以分析其每个状态下的输出。
  4. 对于状态1:东西红灯,南北绿灯

    ① 那么对于U4,只有两个红灯亮,红灯对应的地址置0即可。对应的控制信号是11110011即0F3H

② 对于U5,绿灯亮,只需要将对应的绿灯置0 即可,对于高四位不使用的端口,也一起置0.控制信号为00001100即0CH

image.png

图7:状态1下U4和U5的输出

  1. 对于状态2:东西红灯,南北黄灯

    ① 对于U4:南北的黄灯、东西红灯对应的端口置0.所以控制信号为11000011即0C3H

② 对于U5:没有绿灯亮,有用位(低四位)置1,用不到的位还是置0.所以控制信号为00001111即0FH

image.png

图8:状态2下U4和U5的输出

  1. 对于状态3:东西绿灯,南北红灯

    ① 对于U4:将南北红灯对应的端口置0,其余位为0.所以控制信号为11111100即0FCH

② 对于U5: 将东西绿灯对应端口置0,其余位为1.注意未用到的位也置零。所以控制信号为00000011即03H

image.png

图9:状态3下U4和U5的输出

  1. 对于状态4:东西黄灯,南北红灯

    ① 对于U4:将东西黄灯、南北红灯对应的端口置0,其余位置1,。所以控制信号为00111100即3CH

    ② 对于U5:没有涉及到绿灯,所以将有用位置1即可。所以控制信号为00001111即0FH

image.png

图10:状态4下U4和U5的输出

五、源程序
ORG 0000H ; 在内存的0地址处就强制转到主程序上去,绕过中断程序
AJMP MAIN ; 无条件的转移到主程序
ORG 0030H
MAIN: ;定义主程序
MOV SP,#60H ;设置栈指针
CLR P3.6 ; 使用CLR位操作指令将P3.6口清零
MOV P0,#0FFH ;设置P0口,使两个输出口均位高电平,此时所有的LED灯灭
STATUS1: ; 状态1
MOV DPTR,#0FE00H ;数据指针指向U4
MOV A,#0F3H ;使U4输出0F3H
MOVX @DPTR,A ; 让A寄存器访问内存,让东西红灯亮
MOV DPTR,#0FD00H ;数据指针指向U5
MOV A,#0CH ;使U5输出0CH
MOVX @DPTR,A ; 让A寄存器访问内存,让南北绿灯亮
ACALL DELAY10 ; 调用延时10S子程序
STATUS2: ; 状态2
MOV DPTR,#0FE00H ;数据指针指向U4
MOV A,#0C3H ;使U4输出03CH
MOVX @DPTR,A ; 使用A寄存器访问内存,使东西红灯,南北黄灯
MOV DPTR,#0FD00H ;数据指针指向U5
MOV A,#0FH ; 使U5输出0FH
MOVX @DPTR,A ;置1,使绿灯全灭
ACALL DELAY2 ; 调用延时2S子程序
STATUS3: ; 状态3
MOV DPTR,#0FE00H ;数据指针指向U4
MOV A,#0FCH ; U4输出0FCH
MOVX @DPTR,A ; 借A寄存器间接访问内存,使南北红灯亮
MOV DPTR,#0FD00H ;数据指针指向U5
MOV A,#03H ; U5输出0FD00H
MOVX @DPTR,A ;东西绿灯亮
ACALL DELAY10 ; 调用延时10S子程序
STATUS4: ; 状态4
MOV DPTR,#0FE00H ;DPTR指向U4
MOV A,#3CH ; U4输出3CH
MOVX @DPTR,A ; 寄存器A访问内存,南北红灯,东西黄灯
MOV DPTR,#0FD00H 从 ;使FPTR指向U5
MOV A,#0FH ; 使U5输出0FH
MOVX @DPTR,A ;置1,使绿灯全灭
ACALL DELAY2 ; 调用延时2S子程序
ACALL DELAY1 ; 调用延时1S子程序
AJMP STATUS1 ; 跳转到状态1,形成循环

DELAY1: ;定义延时1S子程序
MOV R7,#10 ;定义最外层循环,循环10次
DL2:MOV R6,#200 ; 定义中间层循环200次
DL1:MOV R5,#250 ; 定义内层循环250次

DJNZ R5,$      ;等待,且该指令占两个时钟周期
DJNZ R6,DL1    ;占两个时钟周期
DJNZ R7,DL2    ;计算总延时为((1μs*2*250+2+1)*200+1+2)*10+1=1s

RET ; 子程序返回
DELAY2: ;定义延时2S子程序
MOV R7,#20
DL4:MOV R6,#200
DL3:MOV R5,#250

DJNZ R5,$
DJNZ R6,DL3
DJNZ R7,DL4

RET ; 子程序返回

DELAY10: ;延时10S子程序
MOV R7,#100 ; 延时10S比延时1S的程序最外层循环多10倍
DL6:MOV R6,#200
DL5:MOV R5,#250

DJNZ R5,$
DJNZ R6,DL5
DJNZ R7,DL6

RET ; 子程序返回
END ;程序结束

目录
相关文章
|
7月前
|
物联网
STC51单片机-实验开发装置仿真-物联网应用系统设计
STC51单片机-实验开发装置仿真-物联网应用系统设计
153 0
|
数据采集 C语言
单片机开发之ADC0808/9信号采集
本文主要介绍了单片机开发之ADC0808/9信号采集
656 0
单片机开发之ADC0808/9信号采集
|
6月前
技术心得记录:单片机开发过程中使用结构体简化程序
技术心得记录:单片机开发过程中使用结构体简化程序
39 0
|
7月前
|
IDE 开发工具 C++
【51单片机】开发板&开发软件(Keil5&STC-ISP)简介&下载安装破译传送门(1)
【51单片机】开发板&开发软件(Keil5&STC-ISP)简介&下载安装破译传送门(1)
|
7月前
|
存储 芯片
【期末不挂科-单片机考前速过系列P12】(第十二章:单片机的并行拓展例题)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P12】(第十二章:单片机的并行拓展例题)经典例题盘点(带图解析)
|
7月前
|
缓存 编译器 程序员
嵌入式开发环境Vscode开发STM32单片机程序
嵌入式开发环境Vscode开发STM32单片机程序
187 0
|
7月前
|
传感器 测试技术 数据处理
单片机开发|基于单片机的婴儿睡眠监测系统设计
单片机开发|基于单片机的婴儿睡眠监测系统设计
118 0
|
7月前
|
传感器 监控 测试技术
单片机开发|基于51单片机的全自动黑板檫粉尘清除装置设计与实现
单片机开发|基于51单片机的全自动黑板檫粉尘清除装置设计与实现
|
7月前
|
物联网 芯片
STC51单片机-应用系统并行扩展电路设计(存储器扩展)-物联网应用系统设计
STC51单片机-应用系统并行扩展电路设计(存储器扩展)-物联网应用系统设计
137 0
|
7月前
|
传感器 人工智能 Java
单片机开发|基于单片机的婴儿睡眠监测系统设计
婴儿一天中的大多数时间都处于睡眠状态,如何对婴儿进行睡眠监测、及时安抚婴儿,以及如何解决婴儿的尿湿问题,这些都是新妈妈们最关心的问题。大部分的家庭都会选择方便的纸尿裤,但是纸尿裤不仅价格昂贵,而且吸水性很强,如果不及时更换,很可能会长出红疹等皮肤疾病,对婴儿的身体也是有威胁的;婴儿醒了就会大哭,家长没有及时的听见,造成婴儿很长一段时间没有人照料。所以,为婴儿设计一个适合婴儿的睡眠监测系统,对于新手家长来说是很有帮助的。本论文采用STC89C52单片机为核心,采用声控、语音播报、湿度采集电路采集各种场景的数据,并通过 LED灯光、语音播报等方式来实现对幼儿进行实时监测。