怎么看懂单片机时序图?

news/2024/12/2 19:59:59/

本人没有上过单片机相关的专业课,是在《计算机系统结构》里遇见的时序图。由于看不懂加之老师没有专门讲,因此自行查阅了相关的视频和博客。(参考视频已放在文末)

网上资源贫瘠,不过我也不需要太过深入的知识。

大家看个乐子。如有错误,请指正!

目录

一、神奇的线条

二、引脚及功能

三、时序参数


字符型 LCD 1602 的写操作时序图

一、神奇的线条

1. 奇奇怪怪的交叉线

交叉线表示电平的变化,由两种情况叠加而来。

2. R/W

3. 简单的 E

4. 有效数据

虽然大图里 DB0~DB7 是画在一起的,但是实际上指的是每一位 DB 各自的变化情况。

当 E 为高电平时数据有效,当 E 为低电平时数据无效。

二、引脚及功能

 我们使用到的:

(1)RS:是寄存器选择脚。高电平时选择数据寄存器,低电平时选择指令寄存器。

(2)R/W:是读/写信号线。高电平时进行读操作,低电平时进行写操作。

(3)E:是使能端。

(4)DB0~DB7:是 8 位双向数据线。

三、时序参数

Q:什么是建立时间和保持时间?

建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间。如果建立时间不够, 数据将不能在这个时钟上升沿被打入触发器。

保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间。如果保持时间不够,数据同样不能被打出触发器。
 

Q:什么是地址建立时间?

Access time: For random access memory, access time is the time it takes to perform a read or write operation i.e. time taken to address a memory plus to read / write from addressed memory location. Whereas for non-random access, it is the time needed to position read / write mechanism at desired location.

个人感觉,在读/写之前,我们应该知道是对哪个存储单元进行读/写,所以地址线上需要发出对应存储单元的地址,并且要保持一段时间。地址建立时间就是发地址到地址线上所需的时间(?)

再来看时序图:

根据时序参数名称可知,红色竖线必须取在端点处。黑色竖线只需取在斜线任意处即可。


参考视频:

7分钟看懂时序图,不懂你骂我_哔哩哔哩_bilibili

器件的学习与使用系列4-字符型LCD1602操作时序_哔哩哔哩_bilibili


http://www.ppmy.cn/news/6719.html

相关文章

BufferedWriter带有缓冲区的字符输出流

package com.javase.io;import java.io.*;/*** BufferedWriter:带有缓冲区的字符输出流* OutputStreamWriter:转换流 把字节输出流(FileOutputStream)转换成字符输出流*/ public class BufferedWriterText {public static void main(String[] args) {Bu…

【C++】侯捷C++面向对象高级编程(下)

转换函数(conversion function) 可以把"这种"东西,转化为"别种"东西。 即Fraction ——> double class Fraction { public:Fraction(int num, int den 1) :m_numerator(num), m_denominator(den) {}operator double()const {return ((dou…

使用 Docker Hub 完美地存储 Helm 图表实战

使用 Docker Hub 完美地存储 Helm 图表实战 Helm 是 Kubernetes 的包管理器。它是一个开源容器编排系统。它通过提供一种简单的方法来定义、安装和升级复杂的 Kubernetes 应用程序,帮助您管理 Kubernetes 应用程序。 使用 Helm,您可以将您的应用程序打包…

【几种可调动对象,Function和bind;线程的调动方式举例】

1.可调动对象的调动方式 方法 1、函数指针调动 方法2 、类类型的括号的重载 调动可调动对象 #include<iostream> #include<functional> using namespace std; struct Foo {void operator()(int x){cout<<"Foo operator "<<x<<endl;}…

【VUE3】保姆级基础讲解(三)非父子组件通讯,$refs,动态组件,keep-alive,Composition API

目录 非父子组件通讯 全局事件总线mitt库 组件的生命周期 $refs 动态组件 keep-alive 异步打包 v-model绑定组件 Composition API 定义响应式数据 readonly toRefs与toRef computed $ref 生命周期钩子 provide和inject watch侦听 watchEffect script setup语法…

[JavaEE] 线程与进程的区别详解

专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录 认识线程(Thread) 1. 线程是什么? 2. 为什么要有…

C#项目实战——【实例】企业人事管理系统(一):1、系统分析;2、系统设计;3、系统运行环境;

学习《C#从入门到精通》&#xff0c;边学边练记录实现过程。 1、系统分析 1.1、需求分析 基于其他企业人事管理软件的不足&#xff0c;要求能够制作一个可以方便、快捷地对职工信息进行添加、修改、删除的操作&#xff0c;并且可以在数据库中存储相应职工的照片。为了能够更…

【C++初阶】list的模拟实现

文章目录list的介绍list的模拟实现成员变量Member functionsconstructordestructoroperatorIterators正向迭代器反向迭代器beginendrbeginrendModifierspush_frontpop_frontpush_backpop_backinserteraseclear完整版代码list.hreverse_iterator.htest.cpplist的介绍 list是STL…