历史上的今天
返回首页

历史上的今天

今天是:2025年01月07日(星期二)

正在发生

2018年01月07日 | 如何弄懂单片机时序_关于单片机时序分析

2018-01-07 来源:互联网

单片机时序是指单片机执行指令时应发出的控制信号的时间序列。这些控制信号在时间上的相互关系就是CPU的时序。它是一系列具有时间顺序的脉冲信号。


CPU发出的时序有两类:一类用于片内各功能部件的控制,它们是芯片设计师关注的问题,对用户没有什么意义。另一类用于片外存储器或I/O端口的控制,需要通过器件的控制引脚送到片外,这部分时序对分析硬件电路的原理至关重要,也是软件编程遵循的原则,需要认真掌握。


CPU发出的时序有两类:一类用于片内各功能部件的控制,它们是芯片设计师关注的问题,对用户没有什么意义。另一类用于单片机外部芯片的控制,这部分时序对分析硬件电路的原理至关重要,也是软件编程遵循的原则。


操作时序永远使用是任何一片IC芯片的最主要的内容。一个芯片的所有使用细节都会在它的官方器件手册上包含。所以使用一个器件事情,要充分做好的第一件事就是要把它的器件手册上有用的内容提取,掌握其工作时序。


在这里我们以液晶1602为例,分析其操作时序。其基本时序有读状态,写指令,读数据和写数据。


1602的引脚定义


我们首先来看1602的引脚定义,1602的引脚是很整齐的SIP单列直插封装,所以器件手册只给出了引脚的功能;

我们只需要关注以下几个管脚:


3脚:VL,液晶显示偏压信号,用于调整LCD1602的显示对比度,一般会外接电位器用以调整偏压信号,注意此脚电压为0时可以得到最强的对比度。


4脚:RS,数据/命令选择端,当此脚为高电平时,可以对1602进行数据字节的传输操作,而此脚为低电平时,则是进行命令字节的传输操作。命令字节,即是用来对LCD1602的一些工作方式作设置的字节;数据字节,即使用以在1602上显示的字节。值得一提的是,LCD1602的数据是8位的。


5脚:R/W,读写选择端。当此脚为高电平可对LCD1602进行读数据操作,反之进行写数据操作。笔者认为,此脚其实用处不大,直接接地永久置为低电平也不会影响其正常工作。但是尚未经过复杂系统验证,保留此意见。


6脚:E,使能信号,其实是LCD1602的数据控制时钟信号,利用该信号的上升沿实现对LCD1602的数据传输。


7~14脚:8位并行数据口,使得对LCD1602的数据读写大为方便。


写命令和写数据


在此,我们分析两个写时序:写命令和写数据。


写命令


当我们要写指令字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。


voidWriteCommandLCD(unsignedcharWCLCD,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;//以上三条语句引入一个高脉冲


}


写数据


当我们要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。


voidWriteDataLCD(unsignedcharWDLCD)


{


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、框出并注明了看懂此图的一些常识:


(1)时序图最左边一般是某一根引脚的标识,表示此行图线体现该引脚的变化,上图分别标明了RS、R/W、E、DB0~DB7四类引脚的时序变化。


(2)有线交叉状的部分,表示电平在变化,如上所标注。


(3)应该比较容易理解,如上图右上角所示,两条平行线分别对应高低电平,也正好吻合(2)中电平变化的说法。


(4)下,密封的菱形部分,注意要密封,表示数据有效,Valid Data这个词也显示了这点。


3、需要十分严重注意的是,时序图里各个引脚的电平变化,基于的时间轴是一致的。一定要严格按照时间轴的增长方向来精确地观察时序图。要让器件严格的遵守时序图的变化。在类似于18B20这样的单总线器件对此要求尤为严格。


4、以上几点,并不是LCD1602的时序图所特有的,绝大部分的时序图都遵循着这样的一般规则,所以大家要慢慢的习惯于这样的规则。


时序参数


时间的标注,也是个十分重要的信息,这些时间的标注表明了某些状态所要维持的最短或最长时间。因为器件的工作速度也是有限的,一般都跟不上主控芯片的速度,所以它们直接之间要有时序配合。

推荐阅读

史海拾趣

Fair Rite公司的发展小趣事

1952年,理查德·帕克与合作伙伴埃德蒙·斯坦威克和杰克·韦伯在纽约的Wallkill共同创立了Fair Rite产品公司。当时,电子行业正处于起步阶段,对新型电子元器件的需求日益增长。Fair Rite凭借对市场敏锐的洞察力,开始专注于铁氧体元件的研发和生产。公司初期面临资金短缺和技术挑战,但通过不断努力和创新,逐渐在市场中树立了良好的口碑。

Conexcon Group公司的发展小趣事

在电子行业的快速发展中,Conexcon Group以其前瞻性的技术视野,成功研发出一款新型智能芯片,这款芯片不仅性能卓越,而且功耗极低,迅速赢得了市场的青睐。公司凭借这一技术突破,逐步扩大了在国内外市场的份额,成为了行业内技术创新的领军者。随着产品线的不断丰富,Conexcon Group逐渐形成了从芯片设计到整机制造的完整产业链,进一步巩固了其在电子行业的领先地位。

Crocus Technology公司的发展小趣事

经过多年的发展,Crocus Technology已经在电子行业树立了良好的口碑和品牌形象。公司的产品在汽车、工业等多个领域得到了广泛应用,并帮助客户实现了产品性能的提升和成本的降低。展望未来,Crocus Technology将继续致力于技术创新和市场拓展,为电子行业的发展贡献更多的力量。

请注意,以上故事是基于现有信息和常识构建的,可能并不完全反映Crocus Technology公司发展的全部细节和真实情况。如需了解更多关于Crocus Technology的故事和发展历程,建议查阅公司官方发布的资料或相关新闻报道。

ACCRETECH公司的发展小趣事

Crocus Technology的创立源于2006年法国格勒诺布尔的自旋电子学Spintec研究实验室。这家公司在创立之初就面临着巨大的挑战,因为磁阻随机存取存储器(MRAM)市场当时竞争激烈,众多公司因技术难题和市场定位不当而相继倒闭。然而,Crocus Technology凭借其独特的技术视角和坚定的市场信念,成功地在这场竞争中生存下来。

Davico Industrial Ltd公司的发展小趣事

随着技术的不断成熟和市场需求的变化,Crocus Technology开始拓展其产品线。2015年,公司成功推出了首款磁开关产品,这标志着公司在磁传感器领域迈出了重要的一步。随后,公司又陆续推出了位置传感和2D传感器产品,进一步巩固了其在磁传感器市场的地位。

High Tech Chips Inc公司的发展小趣事

在成立初期,Crocus Technology专注于IP存储模块的研发与销售。这一时期,公司通过不断的技术创新和市场调研,成功开发出了一系列具有竞争力的产品。这些产品不仅满足了市场对高性能存储解决方案的需求,还为公司积累了宝贵的市场经验和客户资源。

问答坊 | AI 解惑

红外协议资料

红外协议资料 …

查看全部问答>

51读写nandflash例程

51读写flash  下面是CYPRESS 68013上的一个读写samsung K9F1G的例子程序, 说明:程序针对mcu:cypress 68013,flash:samsung k9f1g08u,MCU运行于48M,对于其它频率,一些时序常数可能需要修改.程序实现了FLASH的CLEAR,WRITE,READ基本操作. /**** ...…

查看全部问答>

想买个开发板,大家给推荐推荐!

性价比高的吧,不能太贵,但是功能也不能太少!…

查看全部问答>

Stratix®IV 和HardCopy IV介绍 白皮书

Altera于2008年第二季度推出Stratix® IV和HardCopy® IV器件系列标志着世界上首款40-nm FPGA和业界唯一40-nm ASIC 无风险移植途径的诞生。 Altera 通过三年周密的规划和开发,并与代工线合作伙伴台积电(TSMC)协作,最终获得成功,交付定制 ...…

查看全部问答>

救助 用VHDL 设计一个指令寄存器 紧急 谢谢

救助 用VHDL  设计一个指令寄存器  紧急 谢谢  大家新年快乐哈…

查看全部问答>

谁给推荐一本wince5.0 bsp开发的书,现在觉得有本书比问人要方便一些;即使很简单的问题问人总也帮不上太多的忙

我现在入门学习wince, 但在怎么编译wince bsp这里遇到了问题. 发了几个帖,也许大家觉得太简单,没有人给个有意义的答案! 那高人们就给推荐一本书吧! 谢谢啊!…

查看全部问答>

wince sip手写输入法输出问题

各位大哥:     我的全屏输入程序是从定格输入的代码上改的,按理说手写识别之后将识别结果放到焦点的部分应该不受影响,但是现在程序编译可以通过,运行的时候没有焦点注入的效果。 我这儿是在识别线程函数DWORD ThreadProcRecognise( ...…

查看全部问答>

请教s3c2440功耗如何降低的问题?

我用的三星2440,在休眠时候把没用的IO都设置成了 input,并且上拉有效,奇怪的是电流一直在0.05A降不下来。 大家有什么高招吗? …

查看全部问答>

开机报警重装硬盘驱动

SMART Failure Predicted on Primary Master:IC35L040AVVA07-0 WARNING:Immediately back-up your data and replace your hard disk drive. A failure may be imminent . Press F1 to Continue ,DEL to enter Setup”, 硬盘驱动是怎么重 ...…

查看全部问答>

wince5.0子类化的疑问

Public Class ContextMenuHelper#Region \"事件\"Public Event ButtonDbClick(ByVal SubControl As Control, ByVal e As MouseEventArgs)Public Event ButtonClick(ByVal SubControl As Control, ByVal e As MouseEventArgs)#End RegionPublic Sub ...…

查看全部问答>