打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
单片机的内部结构(并行口)

第五课 单片机的内部结构

上一课中 我们提到了 DJNZ R6 #250 这条指令被执行了 250*250=62500 次 就产生了延时 那

么这个时间是多少呢 它又是如何计算出来的呢 这一课就来讨论这个问题

一 单片机的时序

1 时序的由来

我们已经知道单片机执行指令的过程就是顺序地从 ROM程序存储器中取出指令一条一条的顺 序执行 然后进行一系列的微操作控制 来完成各种指定的动作 它在协调内部的各种动作时必须要有

一定的顺序 换句话说 就是这一系列微操作控制信号在时间上要有一个严格的先后次序 这种次序就

是单片机的时序 这就好比我们学校上课时用的电铃 为了保证课堂秩序 学校就必须在铃声的统一协 调下安排各个课程和活动 那么单片机的时序是如何规定的呢 接着往下看

2 时序的周期

计算机每访问一次存储器的时间 我们把它称为一个机器周期 它是一个时间基准 就象我们日

常生活中使用的秒一样 计算机中一个机器周期包括 12 个振荡周期 什么是振荡周期 一个振荡周期 是多少时间 振荡周期就是振荡源的周期 也就是我们使用的晶振的时间周期 一个 12M 的晶振 它的

时间周期是多少呢 电子技术过的朋友应该不难算出T=1/f也就是 1/12微秒那么使用 12M 晶 振的单片机 它的一个机器周期就应该等于 12*1/12微秒也就是 1 S

在 89C51 单片机中 有些指令只要一个机器周期 而有些指令则需要两个或三个机器周期 另外

还有两条指令需要 4 个机器周期 这也不难理解 你在家擦地板的话总比擦桌子的时间要长 不过我可 是大男子主义 从来不做家务的 开句玩笑 如何衡量指令执行时间的长短 我们就要用到一个新的

概念 指令周期—即执行一条指令所需的机器周期 INTEL 公司规定了每一条指令执行的机器周期 当 然这不需要我们非把它记住 不过在这里 DJNZ 指令我们是要记住的 它是双周期指令 执行一次需要

两个机器周期 即 2 S 12M 晶振的话回到我们上一课的实验 延时的时间就应该算出来了吧 是

62500*2 S=125000 S 也就是 125mS 这么大的数字也就 0.125S 怪不得 LED1 闪烁的这么快 这里 给大家出个题目 在上一课的实验中 如何延长闪烁的时间 想想看 怎么做 当然 不会也没关系

二 单片机的时钟电路

大家已经知道 单片机是在一定的时序控制下工作的 那么时序和时钟又有什么关系呢 时钟是

时序的基础 单片机本身就如同一个复杂的同步时序电路 为了保证同步工作方式的实现 电路就要在 唯一的时钟信号控制下按时序进行工作 那么单片机内的时钟是如何产生的呢

1 内部时钟电路

 

18

----------------

 

在 MCS-51 单片机的内部有一个高增益的反相放大器 其输入端为引脚 XTAL119 脚输出端为

XTAL218 脚我们只要在外部接上两个电容和一个晶振 就能构成一个稳定的自激振荡器 它的内 部电路的工作原理就不介绍了 这里主要讲一下电容和晶振的选择 看上面的图 晶振的大小与单片机

的振荡频率有关 我们到串行接口时再详细讲解 电容的大小影响着振荡器振荡的稳定性和起振的快速

性 通常选择 10-30P 的瓷片电容或校正电容 另外在设计电路时 晶振和电容应尽可能的靠近芯片

以减少 PCB 板的分布电容保证振荡器工作的稳定性 提高系统的抗干扰能力

2 外部时钟电路

除了内部时钟方式外 单片机还可以采用引入外部时钟的振荡方式 什么时候需要采用外部时钟 方式呢 当我们的系统由多片单片机组成时 为了保证各单片机之间时钟信号的同步 就应当引入唯一 的公用的外部脉冲信号作为各单片机的振荡脉冲 此时应将 XTAL2 悬空不用 外部脉冲信号由 XTAL1 引

入 如上右图所示 这是大虾们的作品 在此就不介绍了

三 本课总结

本课的内容比较少 我就罗嗦一下 讲几句题外话 我是一个只有初中毕业 没有读过多少书的

人 从小就爱好无线电 记得很小的时候 当通讯兵的父亲带回来几本电子方面的书籍 从此就迷上了 无线电 那种痴迷程度决不亚于现在的小孩迷恋游戏机 至今仍然清楚的记得 曾经因为装成功一台 6 管收音机而兴奋的几天几夜没睡好觉 那个时候 我国的电子工业还刚刚起步 买一个 3AX31 的三极管 都要特地跑到市区 而且价格奇贵 几乎要用去一个月的零化钱 当时最愿意去的地方就是上海的虬江 路电子旧货市场 因为在那里可以淘到好多旧的电子元件 初中毕业以后 在当地根本就找不到一家电 子企业 只好在镇上开了一家电器修理店 也就是这几年 边干边做地学了不少在今天已根本无法再学 得进去的 电子啊 空穴啊 移位啊 寄存啊 等等理论知识 由于身边没有一个可以请教的老师 为 了加深学习的印象 所以只好一边做实验一边学理论 尽管进度很慢 但效果竟然还不错 好在当时搞 家电修理的收入还可以 加上没有家庭负担 也就这么过来了

随后的几年 做过工人 也当过老师 但更多的时间是在搞技术开发 这些年来 看到很多的昔 日同学靠导腾房地产或者做生意发了财 可自己依然还在这个领域默默无闻的钻研着 但我还是没有后

悔 也从来没有想过改行 因为电子技术那众多迷人而未知的领域常常会使我深深地陷入其中 以至无 法自拔 也感叹自己搞了这么多年 还只是一个入门者

现在老是听到有些年轻的朋友说我要速成单片机 速成 C 语言 速成什么什么的 每当我看到或 听到这些话的时候 总有一种说不出的滋味 现在的社会 什么都讲究个效率 这本来没有错 但学一 项技术也能速成 实在让人有点不知道说什么好 就单片机而言 即使你现在只有 15 6 岁 也很有天

赋 想把现在的几种主流单片机都搞懂并很好的应用到实践中去 没有个几年恐怕也难 更何况单片机 的技术是在不断发展的 你想跟也来不及

不过 话又说回来 我不是要打击大家的学习积极性 单片机是一种非常宽泛的技术 它的设计 是为了满足大多数的需要 换言之 即使你并没有把全部的知识都理解得很深透 或者说没有把每种单 片机都搞懂 也没关系 你一样可以在实际的产品开发中应用它 因为几乎没有一个产品会把全部的指 令都用起来

好了 废话讲了半天 还是言归正传吧 希望大家课后多进行交流 因为在我看来 技术只有不 断的交流 才会有进步 闭门造车只有 S 路一条

四 第 5 课习题

1 什么是单片机的机器周期 什么是振荡周期 什么是指令周期 它们之间的关系是怎么样的

2 什么是单片机的时序

3 单片机有几种振荡方式

4 简述单片机内部时钟的产生过程

 

19

----------------

 

第六课 单片机的内部结构 四

在前一课中 我们讲述了单片机的时序和时钟 大家是不是又觉得有些头疼了 下面让我们再来

做两个实验放松一下

一 单片机 I/O 口的输出实验

1 实验程序 程序如下

LOOP:MOV P1,#0FFH ; LCALL DELAY ; MOV P1,#00H ; LCALL DELAY ; LJMP LOOP ;

DELAY:MOV
R7,#250
;

D1:MOV
R6,#250
;

D2:DJNZ R6,D2 ; DJNZ R7,D1 ; RET ; END

还是老规矩 调试 写入源代码 编译 下载 看到了什么 8 只 LED 灯都在闪烁注意 前面

的实验是让一个 LED 灯闪烁分析一下程序

2 程序分析

这段程序和前面的程序比较 有两处不同 第 1 条 原来是 SETB P1.0 现在改为 MOV P1 #0FFH

第 3 条 原来是 CLR P1 现在改为 MOV P1 #00H 为什么这样改了之后就变成了 8 只 LED 灯同时闪 烁了 原来 P1 代表了 P1.7-P1.0 的全部 我们把它当作一个存储器单元即一个字节不过对一个存

储器单元送数就应该用 MOV 指令了 在这里 P1P1.7-P1.0接的是 LED 灯也就是负载它起到了

一个输出端的作用 那如果把 P1 改为 P0 或 P2 或 P3 行不行呢 答案是肯定的 为什么 我们稍后再谈

接着看第 2 个实验

二 单片机 I/O 口的输入实验

1 实验程序

程序如下




MAIN:MOV
P3,#0FFH
;

LOOP:MOV
A,P3
;

 

END.

MOV P1,A ;

LJMP LOOP ;

同样的方法把程序下载到单片机 按下第 1 个按钮 第 1 个 LED 灯亮了 按下第 2 个按钮 第 2

个 LED 灯亮了 松开按钮 相应的灯就灭了 是不是有点象工业控制中的点动控制原理 分析一下这个 程序

2 程序分析

看附图的实验系统硬件接线图 有 4 个按钮分别接到了 P3.2 P3.3 P3.4 P3.5 引脚上 再来分 析一下程序 第 1 条 使 P3 口包括 P3.7-P3.0全部为高电平为什么 MOV P3 #0FFH 能使 P3 口全

部为高电平 我们在下一课中讨论第 2 条 MOV A P3 MOV 我们已经知道 是送数的意思 这条指 令的意思就是把 P3 口的数送到 A 中去 A 是什么呢 我们也可以把它看成一个中间单元 就象 R7 寄存

器一样 第 3 条指令就是把 A 中的数送到 P1 口去 第 4 条是循环 这些我们都已经见过 当我们按下

 

20

----------------

 

P3.2 所连接的按钮时 #0FFH 这个数就被送到了 A 中 通过程序又送到了 P1 使 P1.2 输出低电平 LED3 就亮了 按下 P3.3-P3.5 连接的按钮 对应的 LED4-LED6 也亮了 松开按钮 相应的 LED 灯就灭了 如 果把按钮接到 P2.0-P2.7 或 P0.0-P0.7 可不可以呢 当然可以 所以在这里 P3 口又起到了一个输入端 的作用

由上面两个实验我们得出结论 凡是以 P 开头的管脚都可以用作输入输出口 在 89C51 中这 32

个管脚我们就称之为并行口 它们实际上就是特殊功能存储器 SFR什么是特殊功能寄存器 我们后面 再讲中的四个 记作 P0 P1 P2 P3 它们都是双向通道 即既可以作为输出口 也可以作为输入

口 作输出时数据可以锁存 作输入时数据可以缓冲锁存和缓冲是什么意思 忘了 我也不告诉你

自己回去看数字电路基础 呵呵 不是我不肯讲 只是自己看可以加深印象那么它们是怎么实现输 入输出功能的呢 继续往下看

三 单片机并行口的结构分析 先来看看输入结构


1 输入结构

I/O 口作为输入口时有两种工作方式 即所谓的读端口与读引脚 读端口时实际上并不从外部读 入数据 而是把端口锁存器的内容读入到内部总线 经过某种运算或变换后再写回到端口锁存器 只有 读端口时才真正地把外部的数据读入到内部总线 上面图中的两个三角形表示的就是输入缓冲器 CPU 将根据不同的指令 分别发出 读端口 或 读引脚 信号 以完成不同的操作 这是由硬件自动完成

的 不需要我们操心

读引脚时 也就是把端口作为外部输入线时 首先要通过外部指令把端口锁存器置 1然后再 实行读引脚操作 否则就可能读入出错 为什么 看上面的图 如果不对端口置 1端口锁存器原来 的状态有可能为 0 Q 端为 0 Q^为 1加到场效应管栅极的信号为 1该场效应管就导通 对地 呈现低阻抗,此时即使引脚上输入的信号为 1也会因端口的低阻抗而使信号变低 使得外加的 1

信号读入后不一定是 1若先执行置 1 操作 则可以使场效应管截止 引脚信号直接加到三态缓 冲器中 实现正确的读入 由于在输入操作时还必须附加一个准备动作 所以这类 I/O 口被称为 准双

向 口 89C51 的 P0 P1 P2 P3 口作为输入时都是 准双向 口 接下来让我们再看另一个问题

从图中可以看出 这四个端口还有一个差别 除了 P1 口外 P0 P2 P3 口都还有其他的功能 这些功

 

21

----------------

 

能又是作什么用的呢 下面我们就来详细讲解这个问题

2 端口的工作原理

1P0 口

先来看 P0 口 从图中可以看到 P0 口的内部有一个 2 选 1 的选择器 它受内部信号的控制 如 果在图中的位置则处在 I/O 口工作方式 此时相当于一个 准双向口 输入时须先将口置 1每根

口线可以独立定义为输入或输出 但是须在口线上加上拉电阻 如果将开关往另一个方向 则就是另一

个功能—作为地址/数据复用总线用 此时不能逐位定义为输入/输出 它有两种用法 当作数据总线用

时 输入 8 位数据 而当作地址总线用时 则输出低 8 位地址 再强调一点 当 P0 口作为地址/数据复 用总线用之后 就再也不能作 I/O 口使用了 讲到这里 也许大家会感到困惑 什么叫作地址/数据复

用 这其实是当单片机的并行口不够用时 需要扩展输入输出口时的一种用法 具体如何使用 这就比 较复杂了 我们只能留到下册课程中再来给大家讲解 这里大家只要知道一下就可以了 了解了 P0 口

再来看 P1 口

2P1 口

同 P0 不同 P1 口只能作为 I/O 口使用 但它的内部有一个上拉电阻 所以连接外围负载时不需 要外接上拉电阻 这一点 P1 P2 P3 都一样 务必请大家记住

3P2 口

P2 口作为 I/O 口线用时 与 P0 口一样 当内部开关向另一个方向时 即作地址输出时 可以输 出程序存储器或外部数据存储器的高 8 位地址 并与 P0 口输出的低地址一起构成 16 位的地址线(注意 和数据总线的区别 数据总线是 8 位的 很多书上都会提到 51 单片机是 8 位数据总线 16 位地址总线

但都不会解释有什么不同 看到这里你应该明白了吧) 16 位的地址可以寻址 64K 的程序存储器或外部 数据存储器 为什么 下一课我们再给大家解释 这里要注意的是当 P2 口作为地址总线时 这高 8 位 地址线是 8 位一起输出的 不能象 I/O 口线那样逐位定义 这和 P0 口是一样的

4P3 口

P3 口作为 I/O 口线用时 同其他的端口相同 也是 准双向口不同的是 P3 口的每一位都有 另一种功能 也叫第二功能 各位的功能如下 它们的具体作用我们用到时再详细解释

位的功能如下 它们的具体作用我们用到时再详细解释

端口位

第二功能

注释

P3.0

RXD

串行口输入

P3.1

TXD

串行口输出

P3.2

INTO

外部中断 0

P3.3

INT1

外部中断 1

P3.4

T0

计数器 0 计数输入

P3.5

T1

计数器 1 计数输入

P3.6

WR

外部 RAM 写入选通信号

P3.7

RD

外部 RAM 读出选通信号

讲到这里 也许您会问 既然单片机的引脚有第二功能 那么 CPU 是如何来识别的呢 这是一个 令许多初学者困惑的问题 几乎没有一本教科书提到过这个问题 其实单片机的第二功能是不需要人工 干预的 也就是说只要 CPU 执行到相应的指令 就自动转成了第二功能

了解了各个 I/O 口的功能和作用后 再来给大家讲解一下单片机 I/O 与外围电路的连接方法 这 可是蛮重要的哦

单片机 I/O 口的连接方法

当单片机的 I/O 口作输出时可以直接与外部设备连接 不过由于在实际的应用中 由于其驱动电 流是有限的

DATA SHEET 上说是 20mA
所以我们常常需要通过接口电路来扩展它的驱动能力 在单片

机的后向通道控制系统中 常用的功率控制器件有机械继电器 晶闸管 固态继电器等等 下面我们将

以机械继电器和固态继电器的应用为例介绍其具体的使用方法

1 单片机与机械继电器的接口

我们知道 单片机的一个 I/O 口只能灌入 20mA 的电流 所以往往不足以驱动一些功率开关

比如


22

----------------


稍大一点的机械继电器等

此时 就应该采用必要的扩展电路 如何来实现单片机与机械继电器的接 口呢 其实很简单 我们通常采用下面的接法
如图
为了防止前向通道信号的干扰 常采用一些光

电隔离器件 比如光电耦合器 4N25 PC814 当单片机的 P1.0 脚输出为低电平时 光藕受电导通

Q1 饱和开通 继电器吸合 负载电路接通

另外为了防止电压间的互相干扰 继电器的工作电压 VDD 与单片机的工作电压 VCC 不要使用同一 个电源 接地端也不要连在一起 即所谓的模拟地与数字地分开 驱动管的电流要大于继电器的工作电 流,其他的元件就不讲了 大家自行分析一下 讲了单片机与继电器的接口 再来介绍与固态继电器的 接口方法 接着往下看

2 单片机与固态继电器的接口

普通继电器由于开关速度慢 易跳火 易机械磨损 通常用于要求不高的场合 在某些特殊应用 场合 比如防火 防爆等系统中 则应采用固态继电器 固态继电器是一种无触点的电子继电器 它的 输入端只要很小的控制电流 可以与单片机的 I/O 口直接连接 输出则采用双向晶闸管控制 其输入输 出间均通过内部光电耦合器隔离 可以防止信号间的干扰 是单片机接口的理想器件 随着其技术的成

应用的广泛 价格也已经非常的便宜 1A/250V 的目前在 10 元左右 它与单片机的连接方法如图 所示 - 端所接的 P1.0 为低电平时 SSR 导通 负载工作

除了以上两种连接方法外 单片机与 TTL CMOS 管等都可以连接 具体的方法这里就不介绍了

大家可以自行找一下相关的资料

本课总结

输入和输出口

简称 I/O
是单片机与外部电路接口的唯一途径 四个并行口的结构是有一定 区别的 如何根据系统的设计要求和产品用途来正确 灵活地使用是初学者必须掌握的基本功 我们必

须好好搞清楚它的功能和用途

6 课习题

1 P0 P1 P2 P3 口的驱动电流分别是多少

2 什么是输入 什么是输出

3 找本数字电路的书 了解一下 D 触发器的原理


23

----------------

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
引用 用89c2051仿真PLC的方法
5课:单片机延时程序分析
不再困惑:详解经典51单片机P0口到底怎么用
8051单片机并行I/0口读写
电子电路设计之C51单片机常见问题
给大家介绍一个非常不错的c8051f单片机学习网站
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服