我们都知道在学校是通过铃声来控制所有班级的上下课时间,那个单片机是通过什么样的办法进行取指令,执行指令和其它操作的呢?在这里引入了一个时序的概念:
一、时钟电路
单片机时钟电路有三种方式:
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、时间的标注,也是个十分重要的信息,这些时间的标注表明了某些状态所要维持的最短或最长时间。因为器件的工作速度也是有限的,一般都跟不上主控芯片的速度,所以它们直接之间要有时序配合。下面是时序参数表
上一篇:51单片机无线音乐门铃设计
下一篇:出租车计价器的项目设计
推荐阅读最新更新时间:2024-11-12 14:42
推荐帖子
- 用vs 2005 vc++ 开发基于智能设备的程序时,用ado访问数据库,和odbc访问数据库都有错误
- 我用ADO访问access数据库,可是创建_ConnectionPtr的指针对象时就出现问题了,也就是指针对象没有创建成功。如果用ODBC访问access数据库,在添加记录集的时候就出现打不开can\'topenincludesqltypes文件用vs2005vc++开发基于智能设备的程序时,用ado访问数据库,和odbc访问数据库都有错误
- wangbaogang001 嵌入式系统
- 中国已成世界第一光伏生产国
- 高交会开展以来,以光伏太阳能为代表的新能源参展项目受到不少追捧。记者在国家高新技术成果展区看到,力诺太阳、天威保变等新能源公司展台十分热闹,昨日举行的中国太阳能光伏产学研合作联盟启动大会暨发展论坛也人满为患。 记者在现场看到,江西赛维LDK太阳能高科技有限公司的光伏展品吸引了很多客商及游客的注目。其中,200MW太阳能多晶硅硅片、晶能光电的Virgo系列蓝光LED芯片产品等颇受欢迎。据江西赛维工作人员介绍,200MW太阳能多晶硅硅片等产品已吸引多家企业洽谈合作事宜。记者走遍各大展区,太阳能
- 黑衣人 电源技术
- [转] 了解麦克风灵敏度
- 灵敏度,即模拟输出电压或数字输出值与输入压力之比,对任何麦克风来说都是一项关键指标。在输入已知的情况下,从声域单元到电域单元的映射决定麦克风输出信号的幅度。本文将探讨模拟麦克风与数字麦克风在灵敏度规格方面的差异,如何根据具体应用选择灵敏度最佳的麦克风,同时还会讨论为什么增加一位(或更多)数字增益可以增强麦克风信号。模拟与数字麦克风灵敏度一般在94dB的声压级(SPL)(或者1帕(Pa)压力)下,用1kHz正弦波进行测量。麦克风在该输入激励下的模拟或数字输出信号幅度即是衡
- dontium ADI参考电路
- 1 Linux 网络编程 网络协议基础
- 1.计算机网络1.1协议概述这里默认你已经知道了什么是ISO/OSI七层模型,如果你一点网络基础也没有,这个系列博客对你来说应该是有相当的难度的。另一方面,希望你知道“协议”是什么意思。如果换成C语言来描述,协议就是某个struct结构体,有很多函数可以对结构体(协议)进行解读。底层的协议,可以为其上层协议服务,是指底层的结构体中的数据域,就是上层的某个结构体的对象。图1从网络数据中抓取的很多数据包图1中,是使用软件OmniPeek抓取的
- 兰博 嵌入式系统
- LSD-PRGS430-IIIA编程器用JTAG烧写一片5438需要6分钟,正常吗?
- LSD-PRGS430-IIIA编程器是前几天买的,刚开先时候是连接不上MSP430F5438,后来问了武汉的技术支持,帮升级了编程器,升级后能连接MCU了,并能下载程序了,现在问题是我烧写一片5438大概6分钟的样子,感觉太慢了,这种情况正常吗?LSD-PRGS430-IIIA编程器用JTAG烧写一片5438需要6分钟,正常吗?肯定不正常多大的程序?什么烧写方式?多大的程序?什么烧写方式? 引用: 多大的程序?什么烧写方式?
- Frenchkiss 微控制器 MCU
- TI 电源培训系列电子书---开关电源基础知识
- TI电源培训系列电子书---开关电源基础知识有心人整理成册,感觉挺好,我们不妨拿来,阅读学习。先把前言,目录给大家贴一下,希望大家喜欢,需要的拿走,不需要还是那样,,飘过,,,,,Timson,如果您要查看本帖隐藏内容请回复TI电源培训系列电子书---开关电源基础知识还真需要啊!还真需要啊!好东西~顶一个:carnation:好东西坚决拿下好东东,收下了Thanks!谢谢分享!THANKYOU回复楼主qwqwqw2088的帖子谢谢分享!
- qwqwqw2088 模拟与混合信号
设计资源 培训 开发板 精华推荐
- 使用 NXP Semiconductors 的 TL431AI 的参考设计
- 仪器模拟放大
- AD9238BCP-20EBZ,用于 AD9238、2 通道、10 位、20 MSPS 模数转换器的评估板
- LTC3621IMS8E-2 1.2Vout、同步至 600kHz、强制连续模式同步降压型稳压器的典型应用
- 鬼灭之刃_炭治郎_NFC名片/饭卡DIY
- LT3692AHFE、具有启动电流限制的 12V 至 3.3V 和 2.5V 降压转换器的典型应用电路
- LT1021DIN8-5 具有全调整范围的精密电压基准的典型应用
- wyh111
- 腹式呼吸训练教练仪
- AM2G-0507DZ ±7.2V 2 瓦 DC-DC 转换器的典型应用,用于开/关控制应用