我们都知道在学校是通过铃声来控制所有班级的上下课时间,那个单片机是通过什么样的办法进行取指令,执行指令和其它操作的呢?在这里引入了一个时序的概念:

一、时钟电路
单片机时钟电路有三种方式:
1、单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端,XTAL1和XTAL2需外接上晶体和合适的电容。

2、有的单片机内部也自带时钟电路,用于产生时钟信号。
3、单片机管脚XTAL2直接接晶振。

二、周期
1、时钟周期
时钟电路产生时钟信号的周期我们叫时钟周期(振荡周期)。
单片机通电后就产生了固定标称值的脉冲信号,单片机就是在脉冲信号的驱动下顺序地从ROM中(程序存储器)取出指令一条一条的顺序执行,然后进行一系列的微操作控制,来完成各种指定的动作。
2、机器周期
单片机每访问一次存储器的时间我们把它称为一个机器周期,它是一个时间基准就象我们日常生活中使用的秒一样。单片机中一个机器周期包括12个振荡周期。振荡周期就是振荡源的周期也就是我们使用的晶振的时间周期。一个12M的晶振它的时间周期是1/12微秒,那么使用12M晶振的单片机它的一个机器周期就应该等于12*1/12微秒,也就是1微秒。
3、指令周期
单片机中有些指令只要一个机器周期而有些指令则需要两个或三个机器周期另外还有两条指令需要4个机器周期。如何衡量指令执行时间的长短我们就要用到一个新的概念:指令周期,即执行一条指令所需的机器周期。

三、时序
单片机时序是指单片机执行指令时应发出的控制信号的时间序列。这些控制信号在时间上的相互关系就是CPU的时序。它是一系列具有时间顺序的脉冲信号。
CPU发出的时序有两类:一类用于片内各功能部件的控制,它们是芯片设计师关注的问题,对用户没有什么意义。另一类用于片外存储器或I/O端口的控制,需要通过器件的控制引脚送到片外,这部分时序对分析硬件电路的原理至关重要,也是软件编程遵循的原则,需要认真掌握。

CPU发出的时序有两类:一类用于片内各功能部件的控制,它们是芯片设计师关注的问题,对用户没有什么意义。另一类用于单片机外部芯片的控制,这部分时序对分析硬件电路的原理至关重要,也是软件编程遵循的原则。
操作时序永远使用是任何一片IC芯片的最主要的内容。一个芯片的所有使用细节都会在它的官方器件手册上包含。所以使用一个器件事情,要充分做好的第一件事就是要把它的器件手册上有用的内容提取,掌握其工作时序。
在这里我们以液晶1602为例,分析其操作时序。其基本时序有读状态,写指令,读数据和写数据。

这里,我们需要关注1602的几个管脚,分别是RS,RW,E,D0…D7。由上面的说明我们可以知道:
RS:数据/命令(状态)选择端,当此脚为高电平时,可以对1602进行数据字节的传输操作,而此脚为低电平时,进行命令(状态)字节的传输操作。
RW:读写选择端,当此脚为高电平可对LCD1602进行读数据操作,反之进行写数据操作。
E:使能信号,其实是LCD1602的数据控制时钟信号,利用该信号的上升沿实现对LCD1602的数据传输。
D0…D7:8位并行数据口。
在此,我们分析两个写时序:写命令和写数据。
1、当我们要写指令字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。

void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC为0时忽略忙检测
{
if (BuysC) ReadStatusLCD(); //根据需要检测忙
LCD_Data = WCLCD; //将要写的命令放在数据线上
LCD_RS = 0; //RS为低表明要写的为命令
LCD_RW = 0; //RS为低表明执行的是写操作
LCD_E = 0;
LCD_E = 0;
LCD_E = 1; //以上三条语句引入一个高脉冲
}
2、当我们要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。

void WriteDataLCD(unsigned char WDLCD)
{
ReadStatusLCD(); //检测忙
LCD_Data = WDLCD; //将要写的命令放在数据线上
LCD_RS = 1; //RS为高表明要写的为数据
LCD_RW = 0; //RS为低表明执行的是写操作
LCD_E = 0;
LCD_E = 0;
LCD_E = 1; //以上三条语句引入一个高脉冲
}

写指令和写数据,差别仅仅在于RS的电平不一样而已。以下是LCD1602的时序图,大家写驱动代码的时候一定要充分理解器件的时序图(配合文字说明),否则写不出合格的驱动代码,器件也就不能工作。大家可以将上面的代码对照下图,看是不是一回事。


看时序图需要注意的问题:
1、注意时间轴,从左往右的方向为时间正向轴,即时间在增长。
2、时序图最左边一般是某一根引脚的标识,表示此行图线体现该引脚的变化,上图分别标明了RS、R/W、E、DB0~DB7四类引脚的时序变化。
3、有线交叉状的部分,表示电平在变化。
4、两条平行线分别对应高低电平,如上图右上角所示。
5、密封的菱形部分,表示数据有效,Valid Data这个词也显示了这点。
6、时序图里各个引脚的电平变化,基于的时间轴是一致的。一定要严格按照时间轴的增长方向来精确地观察时序图。要让器件严格的遵守时序图的变化。
7、时间的标注,也是个十分重要的信息,这些时间的标注表明了某些状态所要维持的最短或最长时间。因为器件的工作速度也是有限的,一般都跟不上主控芯片的速度,所以它们直接之间要有时序配合。下面是时序参数表

扫盲:什么是单片机时序,如何看懂时序图相关推荐

  1. sip 时序图_时序图怎么看_教你如何看懂时序图 - 什么是时序图_时序图怎么看_教你如何看懂时序图...

    时序图怎么看_教你如何看懂时序图 操作时序永远使用是任何一片IC芯片的最主要的内容.一个芯片的所有使用细节都会在它的官方器件手册上包含.所以使用一个器件事情,要充分做好的第一件事就是要把它的器件手册上 ...

  2. sip 时序图_什么是时序图?教你如何看懂时序图

    什么是时序图 时序图(Sequence Diagram),又名序列图.循序图.顺序图,是一种UML交互图.它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作.它可以表示用例的行为顺序,当执 ...

  3. 单片机编程好学吗?单片机初学者怎样看懂代码?

    单片机在很多人看来好像门槛很高,在某些人看来很简单. 所以,单片机编程好不好学,这取决于谁去学,有没有基础,有没有兴趣. 我自己是通过自学学会的,我个人认为相对java那些纯软件,单片机比较好学. 单 ...

  4. sip 时序图_教你如何看懂时序图(小白如何快速轻松的看懂时序图)

    操作时序永远是使用任何一片IC芯片的最主要的内容,看懂时序图,再操控这个芯片就非常容易了.而提取芯片器件手册上有用的信息是使用芯片的最基本步骤. 以液晶显示芯片1602为例 首先我们来看1602的引脚 ...

  5. 一分钟带你看懂UML图

    一分钟带你看懂UML图 小小demo package Test;/*** @Description:* @ProjectNmae: demo1* @PackageName: Test* @ClassN ...

  6. php户型图识别,2019如何教你看懂户型图的好坏

    导读:买房现在好多人除了交通,地段,配套,更多的是看的是户型,一个好的户型可以有一个宜居的生活,但是现在买房大多数的是期房,有好多人都看不懂户型图,小编今天收集了一些资料,教你如何看懂户型图的好坏,以 ...

  7. php户型图识别,教你看懂户型图,帮你选出理想房型!

    俗话说 " 娶老婆得看丈母娘 ".谈到购房,房子的户型不得忽视.大多数购房者拿着户型图,却不知道怎么看,有的因为对户型图研究不重视,最终看到实物户型时,才发现和当初所购房屋有很多出 ...

  8. 0160 十分钟看懂时序数据库(I)-存储

    摘要:2017年时序数据库忽然火了起来.开年2月Facebook开源了beringei时序数据库:到了4月基于PostgreSQL打造的时序数据库TimeScaleDB也开源了,而早在2016年7月, ...

  9. 看懂类图——UML类图基础

    类图 要学懂设计模式,就需要先看得懂类图,类与类之间的关系是学习设计模式的基础,而在软件工程中,类与类之间的关系是通过UML中的类图来体现. 这篇笔记包含的不会是类图的所有东西,包含的只是各个类之间的 ...

最新文章

  1. 淘宝海量数据库之二:一致性选择
  2. PhpMyAdmin的简单安装和一个mysql到Redis迁移的简单例子
  3. 【数据挖掘笔记十二】离群点检测
  4. node --- 实现session认证.
  5. V210 UART 整体流程
  6. C# 事务提交(非数据库)
  7. 佳能hdr_多方位升级 佳能发布数码单反相机新品EOS 850D
  8. JetBrains PyCharm选中内容后Backspace删除无法使用,Ctrl+c/Ctrl+v/Ctrl+s/Ctrl+d等等快捷键无法使用的问题的解决
  9. Bailian2752 字符串数组排序问题【排序】
  10. 数字 三位一节(逗号隔开)表示
  11. 电脑内录软件如何录制电脑系统在线声音?
  12. 地震数据.dat文件转.sgy文件
  13. 常见的统计图表及其应用
  14. matlab四面体网格分割,分割球面
  15. 为基于GTK/CLUTTER的库增加GJS支持
  16. IoT物联网嵌入式设备中30种常见传感器模块简介及原理讲解
  17. python输入矩形的长和宽、求周长_输入矩形的长和宽,求出该矩形的周长和面积...
  18. Xxl-Job 初次体验
  19. C++问题速记:十六进制数0x9C40(40000)被表示为unsigned int问题
  20. 国密ESAM模块,7816接口、SPI接口、IIC接口可选

热门文章

  1. java利用xml生成excel_JAVA环境中基于XML的一种EXCEL报表生成方法
  2. 网络分析仪E5071C 使用
  3. %md ,%0md ,%-md ,%m.nf
  4. GRBL学习-常用G代码
  5. Android 架构之长连接技术
  6. Mysql int(10) int(11) 字符长度的设置
  7. AJAX与JavaScript脚本语言
  8. input框的输入事件
  9. 【微信小程序】轮播图——swpier组件
  10. ibm服务器中文件存储设置,IBMv7000存储服务器双活配置流程