




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多功能时间控制器设计11设计要求目前大多数时间控制器往往只能单机工作,不能满足集体控制的要求;而在很多应用场合,要求时间控制器除了要具有比较灵活的时间控制作用外,还能通过上位机连成一个网络体系,以便对分布在各处的时间控制器进行集中控制(群控)。本章设计的时间控制器的功能与特点如下: 既能单机工作,又能通过上位机进行多机集中控制; 每个单机可以按设定的时间表进行相应的控制动作; 每个单机上的定时时间表,可通过一台 PC 机分别设定,设定的信息存放在串行的 EE - PROM 中,可以保存 10 年以上; 6 位 LED 显示屏,用作时钟显示; 采用 RS 一 485 通信接口,可以满足远距离控制的需要; 双休日可以自动停止报警。该时间控制器十分适应于需要控制的对象(如电铃)较为分散而且个数较多的场合,有效克服了手工控制或单独控制导致的对象间的时间误差,避免了工作上的混乱。只需1台普通PC机,通过通信电缆与各控制器联成RS-485拓扑网络。由此PC机作为上位机,借助通信软件将设定时间一一传送到各个控制器,就可以实现群控。当然,上位PC机必须外接RS-232/RS-485转接器。建议采用市售成品,将它直接插在串口上即可。12 系统总体设计方案1.2.1 总体方案的确定按照功能要求,确定系统方案如图 7 一 1 所示。从图中可以看出,系统由微处理器模块、串行通信模块、时钟模块、数据存储模块及显示等人机界面模块组成。在方案设计中,遵循简洁至上的原则;因此,所有的外围模块采用串行方式与微处理器模块接口。这里,微处理器采用 ATMEIJ 公司的 89C2051 ,所有串行接口时序均通过软件模拟实现。 1.2.1.1 硬件设计 我的电子钟设计包括以下几部分:时钟模块,键盘输入模块,八位LED显示模块,电网频率测量模块、电网电压、电流、功率因数测量模块,环境温度测量模块,遥控关闹钟模块等。为了方便使用,把数据采集单独使用一个单片机系统,而把时钟闹钟系统由DS12C887与单片机设计完成。然后把温度,电网频率,电压,电流,功率,功率因数等数据通过串行通信传输给主单片机进行显示。1.2.1.2 键盘显示电路 显示电路采用八片74HC164驱动8位LED的静态显示。一片并入串出芯片74HC165完成键盘扫描。由于74HC164与74HC165都是串行数据传输,大大节省了I/O,而且键显的速度要求并不高,这种设计可以很好地实现功能。1.1.2.2 系统中关键器件的选用 1.1.2.1 串行数码管显示接口芯片 MAX7219 1. 功能和性能说明 MAx7219 是美国 MAxIM 公司生产的串行输入输出共阴极显示驱动器。该芯片可直接驱动最多 8 位 7 段数字数码管显示器,或 64 个 LED 和条形图显示器。自与微处理器的接口非常简单,仅用 3 个引脚与微处理器相应端连接,即可实现最高 10 MHz 的串行通信接日。 MAX7219 的位选方式很有特色,允许用户选择多种译码方式译码选位,而且每个显示位都能个别寻址和刷新,而不需要重写其他的显示位,这使得软件编程十分简单、灵活。另外,它具有数字和模拟亮度控制以及与 MOTOROLA SPI , QSPI 及 NATIONAL MICROWIRE 串行口相兼容等特点。对于 MAX7219 ,串行数据以 16 位数据包的形式从 Din 脚串行输人,在 CLK的每一个上升沿一位一位地送人芯片内部 16 位移位寄存器,而不管LOAD 脚的状态如何。LOAD 脚必须在第16个CLK上升沿出现的同时或之后,但在下一个 CLK 上升沿之前变为高电平,否则移人的数据将丢失。因此,只须编程发送 16 位数据包,就能简单地操作数码管的位选以及段选,设置和改变 MAX7219 的工作模式。 16位数据包的数据格式如下:其中:D7D0为8位数据位,D7为最高位,D0为最低位; D11D8为4位地址位; D15D12为无关位,通常全取1。MAX7219通过D11D8中4位地址位译码,可寻址14个内部寄存器,分别是8个数码管显示位寄存器、5个控制寄存器及1个空操作寄存器。数码管显示寄存器由内部88静态RAM构成,操作者可直接对位寄存器进行个别寻址,以刷新和保持数据,只需V+超过2V(一般为+5V)。控制寄存器包括译码模式、亮度调节、扫描限制(选择扫描位数)、关断模式及显示测试寄存器。 寄存器地址见表7-1。MAX7219 的驱动程序首先必须对5个控制寄存器初始设置,即初始化。各控制寄存器设置含义如下: 译码模式选择寄存器(地址=F9H )。共有4种译码模式供选择。当数据位全0时,选择“非译码方式”。在此方式下,8 个数据位分别一一对应 7 个段和小数点。通常选择此方式。 扫描限制寄存器(地址=FBH )。用于设置显示的数码管个数(18 ),当 D2 D1 D0 =1 1 1 ( D7 D6 DS D4 D3 无关)时,可接 8 个数码管。 亮度调节寄存器(地址=FAH )。共有16级选择,用于数码管显示亮度的强弱设置。 关断模式寄存器(地址=FCH )。有2种模式选择:1 种是关断状态模式(D0=0);1 种是正常操作状态(D0=1)。通常选择正常操作状态。 显示测试寄存器(地址=FFH )。有2 种选择用于设置数码管是测试状态还是正常操作状态:在测试状态时(D0=1 ),各位全亮;一般选择正常操作状态(D00)。2.引脚说明 MAX7219 的引脚排列如图7 -2所示。MAX7219 的引脚说明如下:1 : Din串行数据输人端。在 CLK的上升沿,数据被锁人芯片内部16位移位寄存器。2 , 3 , 5 ?8 , 10 , 11 : DIG0 DIG78数码管位选线。从共阴数码管的公共端吸人电流。12 : LOAD数据锁人控制。在此引脚的上升沿将最后的16位数据锁入16位移位寄存器。 13 : CLK串行时钟输人,最高时钟频率为10 MHz 。在 CLK 的上升沿,数据被锁人内部移位寄存器;在下降沿,数据从Dout被输出。 14 17 , 20 23 : SEGA SEGDP -7 段驱动和小数点驱动。 18 :ISET设置段电流峰值。通过一个电阻与 V +相连,调节电阻值即可调节段电流峰值。 19 : V +电源。一般为+5V。4 , 9 : GND地线。此 2 引脚必须同时接电源地。 24 : Dout串行数据输出。输人到Din的数据在16 . 5个时钟周期后从此脚输出。该引脚用于级联。 7 . 2 . 2 . 2 x25045 串行 EEPROM 信息存储芯片 1.功能简介 看门狗X25045的看门狗定时器对单片机提供独立的保护系统。该定时器共有200ms600ms、1.4s 三种定时时间,可由用户编程选择。在设定的时间内,若单片机没有访问X25045(即表示系统出现故障),看门狗将输出RESET信号,将其RESET输出端置为高电平。延时约200ms后,RESET端由高电平变为低电平,将单片机复位。电压监控上电时,电源电压高于4.5V后,经过约200ms的稳定时间,RESET信号由高电平变为低电平;掉电时,电源电压低于4.5V时,RESET信号立即变为高电平直至电源电压恢复稳定为止。这样就保证了单片机可靠复位以及电源电压不稳定时,单片机不会出现死机和误动作。 串行E2PROMX25045片内带512个字节串行E2PROM,每个字节可擦写10万次以上,数据可保存100年以上,具有可编程块锁定功能。用三总线串行I/O接口便可进行读写操作。2. X25045 特性 具有可编程的看门狗定时器; 低 Vcc 检测; 直至 VcC 一 IV 复位信号有效; IMHz 时钟频率; 5128位串行 EEPROM ; 为低功耗CMOS,等待电流 10 A ,工作电流 3 mA ; 宽电源电压范围; 具有块锁定功能:可以保护 1 / 4 , 1 / 2 或所有 EEPROM 阵列; 具有片内偶然性写保护:上电和掉电保护电路、写锁存、写保护引脚; 高可靠性:可写人100 000 次每字节,数据保存期为 100 年,ESD 保护所有引脚均为 2000V ; . 8 引脚小型 DIP 封装8引脚 SOIC 封装,或14引脚TSSOP封装; 是高电平有效复位。 2 .引脚定义 X25045 的引脚排列如图 7 一 3 所示。1 : CS 芯片选择输人端。当 CS 为高电平时,X25045不被选择,SO输出引脚处于高阻状态,除非内部写操作正在进行,否则X25045将处于等待电源方式( standby power mode ) ; CS 为低电平,则使X25045工作,把它置于工作电源方式(active power 而 ode )。应当注意。上电之后,在任何操作开始之前,需要 CS 从高电平至低电平的跳变。 2 : SO串行输出端。 SO是推挽串行数据输出引脚。在读周期内,数据在此引脚上移出,数据由串行时钟的下降沿同步输出。 3 : WP 写保护输人端。当 WP 为低电平时,向 X25045 的非易失性存储器写操作被禁止,但是器件的其他功能仍正常;当 WP 保持高电平时,所有的功能包括非易失性写操作都正常。在 CS 仍为低电平时, WP 变为低电平将中断对 X25045 的写操作。如果内部写周期已经开始, WP 变为低电平将不影响写操作。 4 : Vss 接地端。 5 : SI 串行输人端。 SI 是串行数据输入引脚。所有操作码、字节地址以及写人存储器的数据在此引脚上输人。数据由串行时钟的上升沿锁存。 6 : SCK 串行时钟输人端。串行时钟控制用于数据输人和输出的串行总线定时。操作码、地址或出现在 SI 引脚上的数据在时钟输人的上升沿锁存;而SO引脚上的数据在时钟输入的下降沿之后发生改变。 7 : RESET 复位输出端。 X25045 的 RESET 是高电平有效、漏极开路的输出端。只要 VcC 下降至低于最小 VcC 检测电平, RESET 便变为高电平。它将保持高电平直至 VcC 上升到最小 VcC 检测电平 200 ms 为止。如果允许看门狗定时器工作,且 CS 保持高电平或低电平的时间长于看门狗超时周期,那么 RESET 便变为高电平。 CS 的下降沿将引起复位。也即, X25045 监视总线,如果在看门狗定时器预置的时间周期内没有总线的活动,它将提供复位信号输出。 8 : Vcc 电源电压输人端。 3.指令集 X25045 指令集见表 7 一 2 。表中所有的指令、地址及数据都以 MSB (最高有效位)在前的方式传送。读和写指令的位3 包含了高地址位A8。表 7 一 2 X25045 的指令集4 寄存器及其分析 ( 1 )写使能锁存器 X25045 包含 1 个写使能锁存器。在内部进行写操作时,写使能锁存器必须被设置 ( SET )。 WREN 指令可以设置锁存器,而 WRDI 指令起复位锁存器的作用。上电情况、字节、页及状态寄存器写周期完成以后,该锁存器被自动复位。如果 WP 变为低电平,锁存器也被复位。 ( 2 )状态寄存器 RDSR 指令提供对状态寄存器的访问。在任何时候都可以读状态寄存器,即使在写周期也如此。状态寄存器格式如下: D7 D6 D5 D4 D3 D2 Dl DO / / WDI WDO BL1 BL0 WEL WIP 当发出 WREN , WRDI 及 RDSR 命令时,不必发送字节地址或数据。“正在写” WIP ( write in process )位表示 X25045 是否忙于写操作。当为“ 1 ”时,写操作正在进行;当为“ O ”时,没有写操作。在写期间,所有其他位全置为“ 1 ”。 WIP 位是只读的。“写使能锁存” WEL ( write enable latch )位表示“写使能”锁存器的状态。当设置为“ 1 ”时,表示锁存器置位;当设置为“ o ”时,表示锁存器复位。 WEP位是只读的,它由 WREN 指令置位,由 WRDI 指令或成功地完成了写周期后复位。“块保护” BL0 或 BL1 ( block protect )位表示所使用的保护范围。这些非易失性的位由发出 WRSR 指令来设置,允许用户选择 4 种保护级别之一。 X25045 分为 4 个 1 024 位的段,可以锁定 1 个、2 个或全部 4 个段,即在选定的段内可以读这些段,但是不能改变(写)数据。用 BIL1和 BL0的状态可以控制范围的划分,如表 7 一 3 所列。表 7 一 3 块保护地址范围“看门狗定时器” WDo 和 WDI ( watchdog timer , )位允许如表 7 一 4 所列那样设置看门狗的超时功能。这些非易失性的位由发出 WRSR 指令来设置。表 7 一 4 看门狗超时周期5 读写操作及其时序 ( l)读时序从 EEPROM 中读取数据的操作,分以下几个步骤: 把 CS 拉低,以选择芯片; 发送 8 位的读( READ )指令到 X25045,读指令的位3包含地址,用于选择器件; 送 8 位的字节地址; 在发出读操作和字地址之后,将选定地址的存储器中的数据移到SO线上。继续提供时钟脉冲,可连续读出接下的地址空间中的数据。每移出1B数据之后,字节地址自动增加到下一个较高地址。达到最高地址时,地址计数器翻转至00H,无限循环下去,直到把 CS 置为高电平,可以终止操作。图7-4(a)所示为从 EEPROM 阵列中读数据的操作时序。读状态寄存器操作的时序见图7-4 (b)。( b )读状态寄存器的时序图7-4 读EEPPROM的时序和读状态寄存器的时序( 2 )写时序在写时序之前,必须先发出存器的操作步骤为: CS 先被拉到低电平; 由时钟同步送入WREN指令; 将 CS 变为高电平。时序见图7- 5 (a)。写数据到 EEPROM 操作时序见图7-5(b),操作过程为: 拉低 CS 并保持在低电平; 发送写指令(WRITE) ; 写数据。可以诈纯写多达 4B 的数据,但这 4B 必须驻留在同一页上。(b)字节写操作时序图7 -5 置位写使能寄存器时序和字节写操作时序 7.2.2.3 串行时钟芯片 DS1302 传统的时钟芯片主要有 MC68HC68T , MC146818 及 LM8365 等。这些器件引脚数多、体积大、占用口线较多。美国 DALLAS 公司推出的低功耗实时时钟芯片 DS1302采用串行通信方式,只需3条线即可与单片机通信,而体积仅仅是上述时钟芯片的1/4且片内均含 RAM,可增加系统的 RAM。DS1302的时钟校准也较为容易,若采用专用晶振器,几乎无须调整即可达到国家要求的时钟误差标准。DSI 302 是 DSI 202 的升级产品,对于停电时只需对时钟电路单独供电的系统,该芯片正好具备电池充电和切换管理功能。最适用于长时间无人职守的监测控制系统或需经常记录某些具有特殊意义的数据及对应时间的场合。下面分别介绍 DS1302 的功能、工作原理及与 MCS-51单片机的接口问题。1 Ds1302 的主要功能 DS1302 慢速充电时钟芯片包括实时时钟日历和3lB的静态RAM ,经过一个简单的串行接口与单片机通信。实时时钟日历提供秒、分、时旧、月及年等信息,对小于 31 天的月末的日期进行调整,还包括闰年的校正功能。时钟的运行可采用24h或带AM(上午)和PM(下午)的 12h 格式。DS1302与单片机的通信仅需3根线,即RST(复位线)、I / O(数据线)及SCLK(串行时钟线)。数据可按每次1B或多达31B的形式传送到时钟RAM 或从中送出。DS1302还有另外的功能,即用于主电源和备用电源相连接的双电源引脚V1 和V2。DS1302由Vl或V2两者中较大者供电。当V2 Vl + 0 . 2 时,V2给DS1302 供电;当V22.5V 之前,RST必须为逻辑0。当把RST驱动至逻辑1状态时, SCLK必须为逻0。数据传送时序如图7-8所示。单字节数据输人跟随在写命令字节的8个SCLK周期之后,在随后的8个SCLK周期的上升沿输人数据字节,数据从位0开始输人。单字节数据输出跟随在输入读命令字节的8个SCI人周期之后,在随后的8个SCI术周期的下降沿输出数据字节。注意,被传送的第1个数据位发生在写命令字节的最后1位之后的第1个下降沿。只要RST保持为高电平,如果有额外SCLK周期,它们将重新发送数据字节。这一操作使DS1302具有连续的多字节方式的读能力。在SCLK为高电平期间,I/O引脚为高阻状态。数据从位。开始输出。DS1302的其他功能,在此不再赘述。图 7-8 数据传翰时序1.2.2.4 RS -485 通信接口芯片 SN75LBC184 1 . RS 一 485 总线 RS-232是目前串行通信中最常用的总线,其标准RS-232C是美国电子工业协会 EIA 制定的串行物理接口协议。RS-232接口的特征是负逻辑、单端驱动、共地接收,只适用于点对点通信。当信号线上的电平为-315V时,表示逻辑“ 1 ;当信号线上的电平为+3+15V时,表示逻辑“O”。通信双方使用一条公共信号地线作电平参考。RS-232C标准规定,驱动器负载电容不超过2 500 pF ,通信距离受此电容的限制。另外,RS-232属于单端信号传送,存在共地噪声和不能抑制的共模干扰;因此其通信距离限 15m 以下,通信速率限于20kbps以下。当要求通信距离为几十米至上千米时,目前广泛采用 RS- 485 总线。RS- 485 总线示意图如图7-9 所示。RS-485 收发器采用平衡驱动和差分接收,具有抑制共模干扰的能力。 RS -485 接收器灵敏度可达200 mV ,因而大大延长了通信距离。在高达100 kbPs速率下,电缆长度可达1 200m ;如果通信距离缩短,最大速率可达10 MbPs 。RS-485总线上允许带多个驱动器和接收器,可用于构建多点通信网络。图 7-9 RS -485 总线示意图RS -485组网具有设备简单、价格低廉、能进行长距离通信的特点,故在工程项目中得到了广泛的应用。 RS-485 为串行平衡电压数字接口总线标准,与 RS-422A 总线标准基本相同,同样适用于DTE与DCE之间串行二进制信号点对多点的互联通信。不同之处在于: 传输阻抗 RL=5 4 ,因此比 RS -422A 有更强的负载能力。 多点互联可多达 32 个。 接口芯片为DS3695(或SN75176, UA96176 ) , DS3696(或SN75175 , UA96177 )。 MAX481 , MAX483 , MAX485 , MAX487491及MAX1487都是用于RS 485通信的低功耗收发器,可实TTL与RS -485的电平转换。所有的器件都使用+5V的单一电源。 RS485为半双工通信。 2 .SN75LBC184 接口芯片 SN75LBC184 是美国 Tl 公司生产的一种 RS485 接口芯片。它使用单一电源,电压在3.05.5V 范围内均能正常工作,可以完成 TTL 与 RS -485之间的转换。其引脚图如图7-10所示。该芯片与普通的RS-485收发器相比,有一个显著的特点,那就是片内A,B引脚接有高能量瞬变干扰保护装置,可以承受峰值400w(典型值)的过压瞬变。由于引起过压瞬变的原因通常是雷电、静电放电及电源系统开关干扰等,因而它能显著提高器件的可靠性。在环境比较恶劣的场合,可直接与传输线相接,而不需要任何外加保护元件。该芯片还有一个独特的设计,即当输人端开路时,其输出为高电平。这样即使在接收器输人端电缆有开路故障时,也不影响系统的正常工作。另外,它的输入阻抗为 RS-485标准输人阻抗()24k) ,故可在总线上连接 64 个收发器。图 7 一 10 SN75LBC184 的引脚排列7.2.3 系统硬件设计 1 系统电原理图设计及其说明 ( 1 )系统电原理图设计系统电原理图如图7-11所示。 ( 2 )系统原理分析图 7 一 11 系统电原理图 显示界面本系统采用共阴数码管作为显示界面。由于时间显示的要求,一共用了6 个,这样必须采用 24h 制。时间的分割符号“:”由数码管中的小数点“.”代替。考虑到控制器室外使用的需要,设计中采用超高亮显示数码管。 系统复位由于系统采用 X25045 实现复位,因此无手动复位功能。系统在运行中出现死机及需要复位的情况下,如何实现复位?为了阐述这个问题,首先讨论单片机系统的几种复位形式。 冷复位即上电复位,可通过开关电源来实现。这种复位方式不适用于无人职守的场合。 软复位在系统尚能正常运行的情况下,可以通过上位机发送复位命令字节,由系统跳转到程序首实现软复位。当然,考虑到可靠性,复位命令宜采用2B以上。 看门狗滋出复位 在系统运行死机的情况下,系统的“喂狗”功能丧失,不可能产生正常的“喂狗”信号,从而引起系统自动溢出复位,以满足无人职守的需要。 光电隔离 由于RS-485节点的距离往往比较远,很难避免各种非共模干扰通过通信线路串人系统,引起系统故障。为了系统的可靠与安全,对RS-485与微处理器的接口电路实行光电隔离进行缓冲。另外,对象控制是通过P3.5和P3.7实现的。这2个口线也必须通过光电隔离后驱动继电器或固态继电器,实现对对象的隔离控制。 时钟备用电源DS1302时钟芯片具有自动切换电源的特性。为了在系统+5V主电源消失的情况下,确保系统时钟正常运行,设计了一个3 .6V的可充电锉电池,作为备用电源。正常情况下,由DS13O2对它进行涓流充电,以确保电池的长效性。 7.3 监控软件设计 7.3.1 监控软件结构 1 结构系统监控软件的重点和难点是按时间控制表的时间顺序进行控制和串行通信中断子程序2部分.为了减少中断程序占用CPU的时间,串行中断只将接收到的本机时间表等信息写人系统开辟的缓冲区。时间表信息中还包括时间表累加和信息、2路控制输出标志信息等,前者主要用于判断时间表的有效性与完整性,避免错误动作;后者主要用于指定控制对象。监控程序的程序流程如图 7 一 12 所示。图7-12 系统监控程序流程2 关键子程序设计 (1) MAX7219 的初始化及读写子程序初始MAX7219的程序流程如图7-13所示。按照图7-13,送完所有控制寄存器的地址和相应的控制命令之后,再按同样的方法送待显示的数据,每次先送某个数码管的地址字节,后送待显示的数据字节。由于控制寄存器和数据显示寄存器全部单独编址,所以在送控制字或送显示数据时,均没有规定其先后顺序。图7 -13 MAX721,的初始化流程如何用51单片机的普通I/O端口控制MAX7219呢?关键是要编写 51 单片机向 MAX7219 写1B的子程序。应用单片机位操作指令能寻址累加器A各位的指令编程。累加器A中D7 D0各位对应的地址分别为 E7 , E6 , E0 ,以此分别对D7 , D6 , D0位进行判断,判断某位为1还是为0,分别调写1和写0的子程序WMI和WM0。下面简要分析51单片机向MAX7219写1B的子程序,有关指令的分析说明见程序清单后的注释。程序清单如下:;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;写字节子程序 WMAX ;占用寄存器ACC;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *DIN EQU PI . 6 CLK EQU PI . 4 WMAX : JB E7 , W7 ;判是否为 lLCALL WM0 ;不是,则调用写“0”子程序LJMP N7W7: LCALL WMI ;是,则调用写“ 1 ”子程序N7: JBE6,W6 LCALL WM0 LJMP N6W6: LCALL WM1N6: JBE5,W5 LCALL WM0 LGMP N5W5: LCALL WM1N5: JBE4,W4 LCALL WM0 LJMP N4W4: LCALL WM1N4: JBE3,W3 LCALL WM0 LJMP N3W3: LCALL WM1N3: JBE2,W2 JCALL WM0 LJMP N2W2: LCALL WM1N2: JBE1,W1 LCALL WM0 LJMP N1W1: LCALL WM1N1: JBE0,W0 LCALL WM0 LJMP N0W0: LCALL WM1N0: CLR CLKCLR DINRET;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;写“1”子程序;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *WM1; CLR CLKSETB DIN ;送出“1”NOP SETB CLK ;产生CLK的下降沿RET;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *WM0; CLR CLKCLR DIN ;送出“0”NOPSETB CLK ;产生CLK的下降沿NOPNOPCLR CLK ;产生CLK的下降沿RET(2)X25045的初始化及读/写子程序对X25045的操作包括写状态寄存器、写数据、读状态寄存器及读数据等。这里仅介绍对X25045写数据程序及其相关程序的设计。;X25045引脚定义如下SCK EQU P2.3 ;串行时钟输入SI EQU P2.4 ;串行数据输入SO EQU P2.6 ;串行数据输出CS EQU P2.7 ;片选输入;其中写保护输入WP始终接高电平;状态寄存器及各命令字节定义STATUS_REG EQU #00000011BWR1TE_INST EQU #00000010BRDSR_INST EQU #00000101BWREN_INST EQU #00000110BWRSR_INST EQU #00000001BWRDI_INST EQU #00000100B;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;写1B数据X25045种的子程序WRONE;数据在A中,地址在DPTR种;占用寄存器;ACC,DPTR;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *WRONE: PUSH ACC ;待写数据保护 LCALL WREN ;WRITE ENABLE CLR SCK ;X25045的SCK置低 MOV A,WRITE_INST MOV B,DPH MOVC, B.0MOV ACC.3,C ;DPH的最低位(A8)送ACC.3LCALL OUTBYT ;送含地址高位的写命令MOV A,DPLLCALL OUTBYT ;送低8位地址POP ACCLCALL OUTBYT ;写1B数据CLR SCK ;X25045的SCK置低STEB CS ;片选CS置高,无效RET;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;设置写使能锁存器WREN 子程序(即允许写操作);* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *WREN: CLR CSCLR SCKMOV A,WREN_INSTLCALL OUTBYT ;送写使能命令WRENSETB CS CLR SCKRET;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;给X25045写入1B地址或数据子程序OUTBYT;欲写内容A中;占用寄存器:ACC,B ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *OUTBYT: MOV B,#081 ;置循环次数8OUTBYT1: CLR SCK RLC A ;ACC的最高位送Cy MOV SI,C ;Cy送X25045的SI SETB SCK DJNZ B,OUTBYT1 ;循环8次,8 bits CLR SI ;X25045DE SI置低 RET;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;功能:读X25045状态寄存器,等待内部写;入口条件:R6的数据事等待延时时间;出口信息:WIP=1, 正在写;WIP=0,写完成;占用资源:R6,A,B,PSW;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *RDS045: MOV R6,0FFH ;循环次数送入R6RDS01: CLR SCK NOP CLR CS ;选中X25045 NOP MOV A,RDSR_INST ;05H,读X25045状态寄存器命令送A LCALL OUTBYT ;调用X25045写入1B子程序 LCALL INBYT ;调用X25045读出1B子程序 SETB CS ;不选中X25045 JNB ACC.0.DS02 ;WIP=1正在写;WIP=0,写完成 DJNZ R6,DS01RDS02: RET;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;功 能:向X25045写入一批数据子程序W045;入口条件:R0的内容伟CPU内存的地址; R1的内容事X25045的待写地址,R3事待写数据的长度R4的内容事02H或0AH,表示写命令的执行区域;出口信息:R3的内容为0;占用资源:A,B,PSW,R0,R1,R2,R3,R4;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *W045: CLR SCK NOP CLR CS NOP MOV A,WREN_INST ;#06H,写允许命令送入A LCALL OUTBYT ;调用向X25045写入1B 子程序 SETB CS NOP CLR CS MOV A,R4 ;命令送入A LCALL OUTBYT ;调用X25045写入1B子程序 MOV A,R1 ;X25045的首地址送入A LCALL OUTBYT ;调用X25045写入1B子程序W0450 MOV A,R0 ;待写数据送入A LCALL OUTBYT ;调用X25045写入1B子程序 INC R0 ;调整CPU内数据存储区的位置 DJNZ R3,W0450 ;判断这批数据事否完整 SETB CS ;批量数据写完,不选中X25045 RET;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;功 能:向X25045读出一批数据子程序;入口条件:R0的内容伟CPU内存的地址 R1的内容是X25045的待写地址,R3是待写数据的长度 R4的内容是03H或0BH,表示写命令的执行区域;出口信息:R3的内容为0;占用资源:A,S,PSW,R0,R1,R2,R3,R4;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *R045: CLR SCKNOPCLR CSNOPMOV A,R4 ;命令送入ALCALL OUTBYT ;X25045写入8B子程序MOV A,R1 ;对X25045的操作首地址送入ALCALL OUTBYT ;X25045写入8B子程序R0451: LCALL INBYT ;调用读出8位数据子程序 MOV R0,A ;读出的数据送入CPU内存INC R0 ;调整CPU内部存放数据的位置DJNZ R3,R0451 ;数据未读完,跳转SFTB CS ;数据读完,不选中X25045RET;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;功能: 从X25045中读出8位数据子程序;出口信息:A的内容为读出的8位数据;占用资源:B,PSW;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *INBYT: MOV B,#08HINBYT: CLR SCK NOP MOV MOV C,SO NOP SETB SCK RLC A NOP DJNZ B,INBYT CLR SCK RET(3)DS1302的初始化及读/写子程序 实时时钟芯片DS1302的初始化及其读/写程序设计的关键是要遵循其时序要求。这里讨论有关子程序模块的设计。设计中的有关要点参见程序清单的注释。;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *T_CLK EQU P3.3 ;实时时钟时钟线引脚T_IO EQU P3.4 ;实时时钟数据线引脚T_RST EQU P3.2 ;实时时钟复位线引脚;* * * * * * * * * * * * * * * * * * * * * * * * * * *
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全培训教师岗位证书课件
- 2025年榆林华源电力有限责任公司招聘(5人)模拟试卷及完整答案详解1套
- 2025春季中国电信实习生招聘模拟试卷含答案详解
- 2025年安徽皖信人力资源管理铜陵分公司招聘20人模拟试卷含答案详解
- 2025内蒙古鄂尔多斯市康巴什区青年就业见习计划招募模拟试卷及答案详解(名师系列)
- 2025国家农业农村部食物与营养发展研究所综合办公室助理招聘4人模拟试卷及答案详解(必刷)
- 小学劳动安全培训制度课件
- 2025河北邯郸冀南新区选聘农村党务(村务)工作者111人考前自测高频考点模拟试题及完整答案详解
- 2025年PCB制板项目合作计划书
- 2025年上海市金融稳定发展研究中心公开招聘工作人员考前自测高频考点模拟试题及1套完整答案详解
- 餐饮财务问题的研究报告
- 慢性疾病运动干预中心服务要求(征求意见稿)
- 人教版数学-五年级上册-第一单元计算、解决问题(同步练习)
- 林同炎与美洲银行大厦
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- 人教版八年级历史上册 第一、二单元 单元测试卷( 2024年秋)
- 二次抵押贷款合同
- DZ/T 0462.5-2023 矿产资源“三率”指标要求 第5部分:金、银、铌、钽、锂、锆、锶、稀土、锗(正式版)
- 糖尿病合并尿路感染
- 芯片封装行业分析
- 健康指南绝经与乳腺癌的关联性
评论
0/150
提交评论