数字钟基于51单片机汇编语言设计内容摘要:

WR(外部数据存储器写选通信号引脚) RD(外部数据存储器读选通信号引脚) 控制引脚 RST/VPP(9 脚 ):复位引脚,引脚上出现 2 个机器周期的高电平将使单片机复位。 LE/PROG(30 脚 ):地址锁存允许信号。 PSEN(29 角 ):外部存储器读选通信号。 EA/Vpp(31 角 ):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。 AT89C51 芯片 的 内存结构 MCS51 单片机包含中央处理器、程序存储器 (ROM)、数据存储器 (RAM)、定时 /计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: 中央处理器 中央处理器 (CPU)是整个单片机的核心部件,是 8 位数据宽度的处理器,能处理 8位二进制数据或代码, CPU 负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。 数据存储器 (RAM) AT89C51芯片 内部有 128个 8位用户数据存储单元和 128个专用寄存器 单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的 RAM只有 128个,可存放读写的数据,运算的中间结果或用户定义的字型表。 7 程序存储器 (ROM) 单片机内部的程序寄存器一般为 1K~64K 字节,通常是只读存储器,因为单片机应用系统大多数是专用系统,一旦研制成功,其软件也就定性,程序固化到只读存储器,用只读存储器作为程序存储器,掉电以后程序不会丢失从而提高系统的可靠性;另外,只读存储器集成度高、成本低。 根据单片机内部程序存储器 类型的不同有可分为下列产品: ( 1) ROM 行单片机:内部具有工厂掩膜变成的只读程序储存器 ROM。 这种单片机是定制的,用户是不能修改 ROM 中代码的。 ( 2) EPROM 型单片机:内部具有 EPROM 型程序存储器,对于有窗口的 EPROM型单片机,可以通过紫外线擦除器擦除 EPROM 中的程序,用编程工具把新的程序代码写入 EPROM,且可以反复擦除和写入。 000H 0FFFH 程序存储器 0FFFH 0000H 60KB 外部ROM 64KB 外部 RAM 4KB 内部 EA=1 4KB 外部 EA=0 专用寄存器 内部RAM FFFFH 1000H 0FFFH 0000H FFH 80H 7FH 00H 内部数据存储器 外部数据存储器 图 4 AT89C51 芯片 程序存储器结 构 8 ( 3) FLASH Memory 型单片机:内部含有 FLASH Memory 型程序存储器,用户可以用编程器对 FLASH Memory 存储器快速整体擦 除和逐个字节写入,这种单片机价格也低、使用方便,是目前最流行的单片机。 定时 /计数器 1)定时器方式寄存器: TMOD 2)定时器控制寄存器: TCON 3)计数寄存器: TH0、 TL0; TH TL1。 可用于设定计数初值。 并行输入输出 (I/O)口: 单片机有 32个 I/O 口, P0, P1, P2, P3口。 单片机是一种数字芯片,对于单 片机的操作,从某种意义上讲就是对单片机 I/O 口进行操作,使其按程序规定输出高低电平或者检测 I/O 口电平, 51 单片机采用的是 TTL 电平,规定高电平为 +5V, 低电平为 0V。 复位电路 单片机在启动时都需要复位,以使 CPU 及系统各部件处于确定的初始状态,并从初态开始工作。 89 系列单片机的复位信号是从 RST 引脚输入到芯片内的施密特触发器中的。 当系统处于正常工作状态时,且振荡器稳定后,如果 RST 引脚上有一个高电平并维持 2 个机器周期 (24 个振荡周期 )以上,则 CPU 就可以响应并将系统复位。 单片机系统的复位方式有:手动按钮复位和上电复位。 手动按钮复位 手动按钮复位需要人为在复位输入端 RST 上加入高电平。 一般采用的办法是 9 在 RST 端和正电源 Vcc 之间接一个按 钮。 当人为按下按钮时,则 Vcc 的 +5V 电平就会直接加到 RST 端。 手动按钮复位的电路如所示。 由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。 上电复位 AT89C51 芯片 的上电复位电路,只要在 RST 复位输入引脚上接一电容至 Vcc端,下接一个电阻到地即可。 对于 CMOS 型单片机,由于在 RST 端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至 22μ F。 上电复位的工作过程是在加电时,复位电路通过电 容加给 RST 端一个短暂的高电平信号,此高电平信号随着 Vcc 对电容的充电过 程而逐渐回落,即 RST 端的高电平持续时间取决于电容的充电时间。 为了保证系统能够可靠地复位, RST端的高电平信号必须维持足够长的时间。 上电时, Vcc 的上升时间约为 10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为 10MHz,起振时间为 1ms;晶振频率为 1MHz,起振时间则为 10ms。 在上图的复位电路中,当 Vcc 掉电时,必然会使 RST 端电压迅速下降到 0V 以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。 另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“ l”态。 如果系统在上 电时得不到有效的复位,则程序计数器 PC 将得不到一个合适的初值,因此, CPU 可能会从一个未被定义的位置开始执行程序。 时钟震荡电路 时钟电路 单片机要不断的从程序存储器中取出指令并执行 , 这些执行步骤是按节拍进行的 , 时钟电路就是提供 CPU 运行节拍的电路。 AT89C51 的时钟电路可以由内部或外部两种方式产生。 AT89C51 内部具有一个振荡电路 , 内部方式就是利用该电路在 和 两 10 引脚之间外接晶振和电容 C C2 构成并联谐振电路 , 使内部震荡产生自激振荡如图所示。 晶振频率可选择 , 电容可选则 15100PF, 以对时钟频率起微调作用。 CPU 时序的周期单位 通过之中振荡电路 , 单片机的每一步工作都按照一定的节拍进行 , 步调得到同意 .描述 MCS51 系列单片机的时序单位有 4 中 , 即时钟周期 .状态周期 , 机器周期和指令周期。 时钟周期 P:既振荡周期 , 是 MCS51系列单片机的最小时序单位 .例如 :若时钟频率 F=12MHZ, 则时钟周期 =1/F=。 状态周期 S:连续两个振荡周期为一个状态周期。 机器周期:单片机完成某种基本操作的时间称为机器周期。 一个机器周期由6个状态周期 ( 12 个振荡周期)构成。 指令周期:执行一条指令所需要的时间。 MCS51 的指令周期一般需要 1或 2个机器周期,乘,除法指令为 4 个机器周期。 若采用上例钟 12MHZ 的晶振,则执行一条指令相应地需要 1us, 2us 或 4us。 晶振频率越高,指令执行的速度越快。 七段数码管的引脚图 及使用 数码管使用条件: a、段及小数点上加限流电阻。 b、使用电压:段:根据发光颜色决定; 小数点:根据发光颜色决定。 c、使用电流:静态:总电流 80mA(每段 10mA);动态:平均电流 45mA 峰值电流 100mA。 上面这个只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一 11 样的。 LED 数码管根据 LED 的接法不同分为共阴和共阳两类,右图是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。 将多只 LED 的阴极连在一起即为共阴式,而将多只 LED的阳极连在一起即为共阳式。 以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。 当然, LED 的电流通常较小,一般均需在回路中接上限流电阻。 假如我们将 b和 c段接上 正电源,其它端接地或悬空,那么 b和 c段发光,此时,数码管显示将显示数字 “1”。 而将 a、 b、 d、 e和 g段都接上正电源,其它引脚悬空,此时数码管将显示 “2”。 其它字符的显示原理类同。 表 4: 数码管显示 0 1 2 3 4 5 6 7 8 9 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 驱动器 74LS245 芯片 74LS245 是我们常用的芯片,用来驱动led 或者其他的设备,它是 8路同相三态双向总线收发器,可双向传输数据。 74LS245 还具有双向三态功能,既可以输出,也可以输入数据。 当 8051单片机的 P0口总线负载达到或超过 P0 最大负载能力时,必须接入 74LS245 等总线驱动器。 当片选端 CE低电平有效时, DIR( AB/BA)=“0” ,信号由 B 向 A 传输(接收) ; DIR=“1” ,信号由 A 向 B 传输(发送);当 CE为高电平时, A、 B均为高阻态。 由于 P2 口始终输出地址的高 8 位,接口时 74LS245 的三态控制端 1G 和 2G接地, P2 口与驱动器输入线对应相连。 P0 口与 74LS245 输入端相连 ,E 端接地,保证数据线畅 通。 8051 的 /RD 和 /PSEN 相与后接 DIR,使得 RD 且 PSEN 有效时,74LS245 输入( ←D1 ),其它时间处于输出( →D1 )。 12 三、单片机数字时钟的程序设计 系统开发 环境 、汇编语言 系统 开发环境 单片机的应用首先要考虑的是它的开发平台,也即我们常说的开发环境。 由于 INTEL 公司的 MCS51 系列较早进入我国,事实上已形成了工业标准, MCS51的单片机应用场合随处可见,它的软件资源相当丰富,硬件的支持也很完善,价廉物美的开发器材随处可取。 现阶段,国内的大部分单片机开发工程技术人员还是普遍使用汇编语言编写程序。 汇编语言有其缺陷性,但它编写的代码最小,最直接,效率也最高,所以还深得用户接受。 但是,它有着固有的缺陷,必须十分了解所用单片机的硬件结构,程序编写困难,代码难以理解,不易于识读,难于移植,排错困 难,编写程序花的时间相当多,调试不便等等。 随着国内单片机开发环境的完善,开发技术水平不断提高,现在已有相当的开发器材支持高级语言的使用和调试,为单片机的开发应用提供了更好的物质条件。 高级语言(如 C语言)具有开发周期短,易于识读,容易移植,也便于初学着掌握。 诚然,高级语言也有它不足之处,就是高级语言产生的代码过长 , 对于早期单片机不大的ROM 来说,可是非常突出的矛盾,另外它的运行速度太慢,对于本来主频不高的单片机是致命的弱点。 但现在这方面的研制工作也取得了较大的进展,高级语言的弱点也已被较大的克服,象 MCS51 上的 C 语言的代码长度,如果未加上人工优化条件,也可做到最优汇编程序水平的 120%— 150%,这也相当可观了。 可以说相当于中等汇编程序员的水平。 汇编语言 汇编语言 (Assembly Language)是面向机器的程序设计语言。 汇编语言是一种功能很强的程序设计语言 ,也是利用计算机所有硬件特性并能直接控制硬件的语言。 “ 汇编语言 ” 作为一门语言,对应于高级语言的编译器,需要一个 “ 汇编器 ”、 来把汇编语言原文件汇编成机器可执行的代码 ,我们一般使用伟福 6000汇编器。 同样的 汇编器如 MASM, TASM 等等 , 为 我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。 在这样的环境中编写的汇编程序,有 13 很大一部分是面向汇编器的伪指令,已经类同于高级语言。 现在的汇编环境已经如此。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。