单片机原理及应用

单片机时钟电路及时序

时钟电路用于产生AT89S51单片机工作时所必需的时钟脉冲信号(工作频率);AT89S51单片机的CPU正是在时钟脉冲信号的控制下,严格地按时序执行指令进行工作的。AT89S51单片机的最高时钟频率为33MHz。

时钟电路

AT89S51单片机常用的时钟电路有两种方式:内部时钟方式和外部时钟方式。

1.内部时钟方式

时钟电路=振荡电路+分频电路

(1)振荡电路的组成:片内高增益反相放大器+片外反馈元件(石英晶振) 和电容

时钟引脚:

XTAL1:19:片内反向放大器的输入端

XTAL2:18:片内反向放大器的输出端

    电容C1和C2为无极性电容,典型值通常选择为 15pF~30pF。晶振通常选择6MHz、12MHz(可得到准确的定时)或11.0592MHz(可得到准确的串行通信波特率)的石英晶体。  

振荡频率主要取决于晶振的频率。

(2)分频电路

    振荡电路产生的时钟脉冲信号并不能直接为单片机所用,而要进行分频,经分频后才能得到单片机所需各种相关的信号。

时钟脉冲信号经二分频后,作为系统的状态周期信号; 在二分频的基础上再进行三分频,产生ALE信号; 在二分频的基础上再进行六分频,得到机器周期信号。

下图很重要的:

2.外部时钟方式

外部时钟方式:是将现成的外部振荡器产生的时钟脉冲信号,直接提供给单片机使用。

对于COMS型的AT89S51等单片机,其外部时钟方式的电路如图所示:外部时钟源直接接到XTAL1端;XTAL2端悬空。

       

常用于由多片单片机组成的多机系统中。        

因为从同一个外部振荡器引入时钟脉冲信号,可以保证各片单片机之间的同步。

CPU时序

单片机的CPU从程序存储器取出指令、分析指令和 执行指令的过程,均是在CPU控制器的定时控制逻辑电路产生的时序控制下进行的。

51系列单片机的时序有以下四种:

1. 时钟周期    

振荡器产生的时钟脉冲信号频率的倒数, 是最小的时序单位。

若晶振的频率为f,则时钟周期T=1/f

2. 状态周期    

时钟脉冲信号经二分频后,作为系统的状态周期信号

状态周期又称S周期:是时钟周期的两倍,分为两拍,分别称为P1和P2

3. 机器周期    

时钟脉冲信号经二分频后,再进行六分频得到机器周期信号。    

一个机器周期包括12个时钟周期或6个状态周期S1~S6(每个状态周期又分为两拍:P1和P2)

例:当时钟频率为12MHz时,机器周期为1uS

        当时钟频率为 6MHz时,机器周期为2uS

机器周期是最基本的时序单位。 单片机的CPU每个机器周期完成一个基本操作。

4. 指令周期    

指单片机的CPU执行一条指令所需的全部时间。在单片机中,常把CPU执行一条指令的过程分为:几个机器周期。它是以机器周期为单位的。

 AT89S51单片机中指令按字节分:单字节、 双字节和三字节指令。CPU执行一条指令的时间也不同,比如:简单的单字节指令,取出指令立即执行,只需一个机器周期的时间;而有些复杂的指令,如转移、乘、除指令则需两个或四个机器周期。

单片机的复位与复位电路

    单片机在启动运行时都需要复位,其目的是使中央处理器CPU和内部的其它部件都处于一个确定的初始状态,并从这个初始状态开始工作。

AT89S51的复位操作

复位引脚RST(9脚):当振荡器起振后,该引脚上出现2个机器周期以上的高电平,即可使单片机复位。只要RST保持高电平,单片机就一直处于复位状态;RST变为低电平,退出复位,CPU从 初始状态开始工作。因为PC初始化值为0000H,使单片机从ROM的0000H单元开始执行程序。

    复位后,程序计数器PC和各特殊功能寄存器初始状态如表所示。     除(SP)=07H,P0~P3为FFH外,其它都为0。

AT89S51的复位电路

1.上电自动复位

为了可靠地复位,在上电时RESET引脚应保持2个机器周期以上的高电平。    

RC为充电时间常数。RC越大,上电时RESET端保持高电平的时间越长。          

振荡器频率为12MHz时,典型值为 (R一般取10KΩ)。

2.手动复位(人工复位)

    在系统运行时,有时还需要在不关闭电源的情况下对单片机进行复位操作。此时,一般是通过一个人工按键复位。

当时钟频率选用6MHz时,电容C的参考取值为10µF/16V,两个电阻 R1和R2的参考阻值分别为220Ω和2kΩ。

AT89S51单片机的最小(应用)系统

最小(应用)系统:能维持单片机运行的最简单配置系统

AT89S51的最小(应用)系统组成:

1. 接电源:40脚接Vcc=+5V;20脚接地GND

2. 时钟电路:XATL1(19脚)、XATL2(18脚)并接晶振和2个15~30PF无极电容

3.程序存储器选择:采用内部程序存储器:EA(31脚)接Vcc

                                采用外部程序存储器:EA(31脚)接GND

4. 复位电路:RST(9脚)接RC电路   R=10KΩ;C=10µF/16V

按上述要求,就可画出AT89S51最小应用系统电路图

CMOS型单片机的节电工作方式

在便携式、手提式或野外作业的仪器设备上,低功耗和节电是非常有意义的。

采用CMOS工艺的单片机不仅运行时功耗低,而且还提供了两种节电工作方式:空闲和掉电工作方式,可以进一步降低功耗。

因此,在便携式、手提式或野外作业的仪器设备上通常使用CMOS型单片机。

其控制由电源控制寄存器PCON的编程来实现,PCON的格式及各位的定义如下:

SMOD:串行口波特率倍增控制位

GF1:    通用标志位。

GF0:通用标志位。

PD: 掉电方式控制位,当PD=1时,进入掉电方式。

IDL:空闲方式控制位,当IDL=1时,进入空闲方式。 同时为1时,则PD优先,进入掉电方式。

CMOS型单片机的空闲和掉电工作方式内部硬件电路

 图中PD、IDL分别控制单片机进入空闲和掉电方式

CMOS型单片机的空闲工作方式

进入空闲工作方式:当使PCON.0(IDL)位置1

时钟信号:通往CPU的时钟信号被关断,CPU停止工作,进入空闲方式; 而通往中断、串行口和定时器等模块的时钟信号没被关断,使它们继续工作。

CPU的内部状态维持:即包括堆栈指针SP、程序计数器PC、程序状态字PSW、累加器ACC、P0~P3端口以及内部RAM和其它特殊功能寄存器SFR中的内容均保持进入空闲方式前的状态不变。

退出空闲方式:

(1)响应中断方式: 被允许的中断源请求中断被响应:  由内部的硬件电路将PCON.0(IDL) 清0,从而退出空闲方式。CPU 执行完中断服务程序返回时,将从设置进入空闲方式指令的下一条指令开始继续执行程序。

(2)硬件复位: RST端的复位信号直接将PCON.0(IDL)清0,从而退出空闲方式。

CMOS型单片机的掉电工作方式

进入掉电方式:使PCON.1(PD)位置1

振荡器停止工作:CPU和所有的功能部件都停止工作

内部RAM和特殊功能寄存器中的内容维持不变;所有I/O引脚均保持进入掉电工作方式之前的状态。

退出掉电方式:硬件复位: RST端的复位信号直接将PCON.1(PD)清0,从而退出掉电方式。

在掉电工作方式期间,VCC可以降到2V。 而在准备退出掉电方式之前,VCC必须恢复正常的工作电压值,并维持一段时间(约10ms),方可退出掉电方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/776858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习或复习电路的game推荐:nandgame(NAND与非门游戏)、Turing_Complete(图灵完备)、logisim工具

https://www.nandgame.com/ 免费 https://store.steampowered.com/app/1444480/Turing_Complete/ 收费,70元。据说可以导出 Verilog ! logisim及其衍生版本 都需要安装java环境。 http://www.cburch.com/logisim/ 是原版, 下载页面&#…

Python拆分PDF、Python合并PDF

WPS能拆分合并&#xff0c;但却是要输入编辑密码&#xff0c;我没有。故写了个脚本来做拆分&#xff0c;顺便附上合并的代码。 代码如下&#xff08;extract.py) #!/usr/bin/env python """PDF拆分脚本(需要Python3.10)Usage::$ python extract.py <pdf-fil…

垃圾回收机制--GC 垃圾收集器--JVM调优-面试题

1.触发垃圾回收的条件 新生代 Eden区域满了&#xff0c;触发young gc (ygc)老年代区域满了&#xff0c;触发full gc (fgc)通过ygc后进入老年代的平均大小大于老年代的可用内存,触发full gc(fgc).程序中主动调用的System.gc()强制执行gc,是full gc&#xff0c;但是不必然执行。…

蓝桥杯(3):python搜索DFS

目录 1 DFS简介 1.1 DFS与n重循环 1.2 代码实现 1.3 例题 1.3.1 分糖果 1.3.2 买瓜 2 回溯 2.1 定义 2.2 代码实例 2.1.1 排列数 2.1.2 找子集 2.3 例题 2.3.1 N皇后 2.3.2 小朋友崇拜圈 2.3.3 全球变暖 3 剪枝 3.1 定义 3.2 分类 3.3 例子 3.3.1 数字王国之…

自动化测试:Selenium中的时间等待

在 Selenium 中&#xff0c;时间等待指在测试用例中等待某个操作完成或某个事件发生的时间。Selenium 中提供了多种方式来进行时间等待&#xff0c;包括使用 ExpectedConditions 中的 presence_of_element_located 和 visibility_of_element_located 方法等待元素可见或不可见&…

javaWeb项目-火车票订票信息系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、Spring Boot框架 …

任务2.1 一元二次方程(顺序结构版)

在这个任务中&#xff0c;我们编写了一个Java程序来解决一元二次方程。程序接受用户输入的系数a、b、c&#xff0c;并计算出方程的根。通过计算判别式delta的值&#xff0c;我们可以确定方程有两个不相等实根、两个相等实根还是没有实数根。这个程序遵循了IPO模式&#xff0c;即…

MCGS学习——MCGS仿真与实体西门子监控

MCGS仿真与西门子监控 前提知识——博图与MCGS联合仿真 适用于什么设备都没有的情况下进行学习 对NetToPLCsim进行初始设置 找到博图的IP地址 勾选允许远程对象的通信访问 勾选系统时钟参数&#xff0c;主要是需要用到1HZ的脉冲&#xff0c;做一个闪烁的灯 编写简单程序&am…

如何在Linux系统使用Docker本地部署Halo网站并实现无公网IP远程访问

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可…

2024/3/28 IOday1

编写一条学生链表&#xff0c;写一些能够像链表里边添加数据的函数 实现&#xff1a;将链表中的所有内容保存到文件中去 以及 读取文件中的所有内容&#xff0c;加载到链表里 #include <stdio.h> #include <string.h> #include <stdlib.h> typedef int datat…

SpringBoot学习之ElasticSearch下载安装和启动(Windows版)(三十)

本文先写windows下的下载安装和启动,后续有时间再补充其他环境下(Mac、Linux、Docker)的,这里我们后续对ElasticSearch简称为ES,读者习惯这一称呼就好。 一,ES下载 可以百度【ElasticSearch官网】或者直接点击这里的ES官网下载地址:​​​​​ Download Elasticsearch…

springboot检测脚本

import requests import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) session requests.session()# 从文本文件中读取 with open(dic.txt, r) as file:paths file.readlines()# 移除每个末尾的换行符 paths [path.strip() for path in pa…

智慧公厕解决方案打造更加智能的卫生空间

一、智慧公厕方案概述 智慧公厕方案旨在解决现有公厕存在的诸多问题&#xff0c;包括民众用厕困难、环境卫生状况不佳、管理效率低下等方面。针对民众的需求和管理方面的挑战&#xff0c;智慧公厕提供了一套综合解决方案&#xff0c;包括智能导航、环境监测、资源管理等功能&a…

pygame用chatgpt绘制3d沿x轴旋转的

import pygame from pygame.locals import * import sys import mathpygame.init()width, height 800, 600 screen pygame.display.set_mode((width, height))vertices [(0, 100, 0), (100, 200, 0), (300, 100, 0)]angle 0 rotation_speed 2 # 可根据需要调整旋转速度 c…

CXL系统架构

CXL系统架构 CXL支持三种设备类型&#xff0c;如下图。Type 1支持CXL.cache和CXL.io&#xff1b;Type 2支持CXL.cache&#xff0c;CXL.mem和CXL.io&#xff1b;Type 3支持CXL.mem和CXL.io。无论哪种类型&#xff0c;CXL.io都是不可缺少的&#xff0c;因为设备的发现&#xff0…

图像处理与视觉感知---期末复习重点(5)

文章目录 一、膨胀与腐蚀1.1 膨胀1.2 腐蚀 二、开操作与闭操作 一、膨胀与腐蚀 1.1 膨胀 1. 集合 A A A 被集合 B B B 膨胀&#xff0c;定义式如下。其中集合 B B B 也称为结构元素&#xff1b; ( B ^ ) z (\hat{B})z (B^)z 表示 B B B 的反射平移 z z z 后得到的新集合。…

MySQl基础入门 ⑮

上一遍文章内容 使用语句创建视图 还是用上次的三个表&#xff0c;如果没有创建&#xff0c;点击上一遍文章内容创建即可。 什么叫视图 视图是一个或多个表中导出来的表&#xff0c;它是一种虚拟存在的表&#xff0c;并且表的结构数据都依赖基本表&#xff0c;通过视图不仅…

js改变图片曝光度(高亮度)

方法一&#xff1a; 原理&#xff1a; 使用canvas进行滤镜操作&#xff0c;通过改变图片数据每个像素点的RGB值来提高图片亮度。 缺点 当前项目使用的是svg&#xff0c;而不是canvas 调整出来的效果不是很好&#xff0c;图片不是高亮&#xff0c;而是有些发白 效果 代码 …

鸿蒙OS开发实例:【工具类封装-首选项本地存储】

import dataPreferences from ohos.data.preferences; import bundleManager from ohos.bundle.bundleManager; 本地首选项数据的保存&#xff0c;利用key value 【使用要求】 DevEco Studio 3.1.1 Release api 9 【使用示例】 1、app启动时&#xff0c;从本地读取数据&…

Linux文件(系统)IO(含动静态库的链接操作)

文章目录 Linux文件&#xff08;系统&#xff09;IO&#xff08;含动静态库的链接操作&#xff09;1、C语言文件IO操作2、三个数据流stdin、stdout、stderr3、系统文件IO3.1、相关系统调用接口的使用3.2、文件描述符fd3.3、文件描述符的分配规则3.3、重定向3.4、自制shell加入重…