多功能时间控制器.docx

上传人:夺命阿水 文档编号:845876 上传时间:2023-12-24 格式:DOCX 页数:18 大小:90.09KB
返回 下载 相关 举报
多功能时间控制器.docx_第1页
第1页 / 共18页
多功能时间控制器.docx_第2页
第2页 / 共18页
多功能时间控制器.docx_第3页
第3页 / 共18页
多功能时间控制器.docx_第4页
第4页 / 共18页
多功能时间控制器.docx_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《多功能时间控制器.docx》由会员分享,可在线阅读,更多相关《多功能时间控制器.docx(18页珍藏版)》请在课桌文档上搜索。

1、1. 1多功能智能钟的功能与设计要求目前大多数时间控制器往往只能单机工作,不能满足集体控制的要求;而在很多应用场合,要求时间控制器除了要具有比拟灵活的时间控制作用外,还能通过上位机连成一个网络体系,以便对分布在各处的时间控制器进行集中控制(群控)。本章设计的时间控制器的功能与特点如下: 既能单机工作,又能通过上位机进行多机集中控制; 每个单机可以按设定的时间表进行相应的控制动作; 每个单机上的定时时间表,可通过一台PC机分别设定,设定的信息存放在串行的EE-PROM中,可以保存10年以上; 6位LED显示屏,用作时钟显示; 采用RS一485通信接口,可以满足远距离控制的需要; 双休日可以自动停

2、止报警。该时间控制器十分适应于需要控制的对象(如电铃)较为分散而且个数较多的场合,有效克服了手工控制或单独控制导致的对象间的时间误差,防止了工作上的混乱。只需1台普通PC机,通过通信电缆与各控制器联成RS-485拓扑网络。由此PC机作为上位机,借助通信软件将设定时间一一传送到各个控制器,就可以实现群控。当然,上位PC机必须外接RS-232/RS-485转接器。建议采用市售成品,将它直接插在串口上即可。1. 2系统总体设计方案总体方案确实定按照功能要求,确定系统方案如图7-1所示。从图中可以看出,系统由微处理器模块、串行通信模块、时钟模块、数据存储模块及显示等人机界面模块组成。在方案设计中,遵循

3、简洁至上的原那么:因此,所有的外围模块采用串行方式与微处理器模块接口。这里,微处理器采用ATMEIJ公司的89C2051,所有串行接口时序均通过软件模拟实现。.1硬件设计我的电子钟设计包括以下几局部:时钟模块,键盘输入模块,八位LED显示模块,电网频率测量模块、电网电压、电流、功率因数测量模块,环境温度测量模块,遥控关闹钟模块等。为了方便使用,把数据采集单独使用一个单片机系统,而把时钟闹钟系统由DS12C887与单片机设计完成。然后把温度,电网频率,电压,电流,功率,功率因数等数据通过串行通信传输给主单片机进行显示。.2键盘显示电路显示电路采用八片74HC164驱动8位LED的静态显示。一片并

4、入串出芯片74HC165完成键盘扫描。由于74HCl64与74HCl65都是串行数据传输,大大节省了I/O,而且键显的速度要求并不高,这种设计可以很好地实现功能。.2系统中关键器件的选用.1串行数码管显示接口芯片MAX72191 .功能和性能说明MAx7219是美国MAXIM公司生产的串行输入/输出共阴极显示驱动器。该芯片可直接驱动最多8位7段数字数码管显示器,或64个LED和条形图显示器。自与微处理器的接口非常简单,仅用3个引脚与微处理器相应端连接,即可实现最高IOMHz的串行通信接日。MAX7219的位选方式很有特色,允许用户选择多种译码方式译码选位,而且每个显示位都能个别寻址和刷新,而不

5、需要重写其他的显示位,这使得软件编程十分简单一、灵活。另外,它具有数字和模拟亮度控制以及与MOTOROLASPI,QSPI及NATIONALMICROWIRE串行口相兼容等特点。对于MAX7219,串行数据以16位数据包的形式从Din脚串行输人,在CLK的每一个上升沿一位一位地送人芯片内部16位移位存放器,而不管LOAD脚的状态如何。LOAD脚必须在第16个CLK上升沿出现的同时或之后,但在下一个CLK上升沿之前变为高电平,否那么移人的数据将丧失。因此,只须编程发送16位数据包,就能简雅地操作数码管的位选以及段选,设置和改变MAX7219的工作模式。16位数据包的数据格式如下:其中:D7D()

6、为8位数据位,D7为最高位,DO为最低位;D11D8为4位地址位;D15D12为无关位,通常全取1。MAX7219通过D11D8中4位地址位译码,可寻址14个内部存放器,分别是8个数码管显示位存放器、5个控制存放器及1个空操作存放器。数码管显示存放器由内部8X8静态RAM构成,操作者可直接对位存放器进行个别寻址,以刷新和保持数据,只需V+超过2V(一般为+5V)。控制存放器包括译码模式、亮度调节、扫描限制(选择扫描位数)、关断模式及显示测试存放器.存放器地址见表7-1。MAX7219的驱动程序首先必须对5个控制存放器初始设置,即初始化。各控制存放器设置含义如下:译码模式选择存放器(地址=F9H

7、)。共有4种译码模式供选择。当数据位全0时,选择“非译码方式。在此方式下,8个数据位分别一一对应7个段和小数点。通常选择此方式。扫描限制存放器(地址=FBH)。用于设置显示的数码管个数(18),当D2D1DO=111(D7D6DSD4D3无关)时,可接8个数码管。亮度调节存放器(地址=FAH)。共有16级选择,用于数码管显示亮度的强弱设置。关断模式存放器(地址=FCH)。有2种模式选择:1种是关断状态模式(DO=O);1种是正常操作状态(DO=1)。通常选择正常操作状态。显示测试存放器(地址=FFH)。有2种选择用于设置数码管是测试状态还是正常操作状态:在测试状态时(DO=I),各位全亮:一般

8、选择正常操作状态(DO=0)。2 .引脚说明MAX7219的引脚排列如图7-2所示。MAX7219的引脚说明如下:12: 1:Din一串行数据输人端。在CLK的上升沿,数据被锁人芯片内部16位移位存放器。2,3,5?8,10,11:DlGO-DIG7-8数码管位选线。从共阴数码管的公共端吸人电流。13: 1.oAD一数据锁人控制。在此引脚的上升沿将最后的16位数据锁入16位移位存放器。13:CLK-串行时钟输人,最高时钟频率为10MHz。在CLK的上升沿,数据被锁人内部移位存放器;在下降沿,数据从DOUt被输出。1417,2023:SEGA-SEGDP-7段驱动和小数点驱动。18:Isel设置

9、段电流峰值。通过一个电阻与V+相连,调节电阻值即可调节段电流峰值。19:v+-电源。一般为+5VVl+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周期,它

10、们将重新发送数据字节。这一操作使DS1302具有连续的多字节方式的读能力。在SCLK为高电平期间,I/O引脚为高阻状态。数据从位。开始输出。DS1302的其他功能,在此不再赘述。图7-8数据传翰时序1.2.2.4RS-485通信接口芯片SN75LBC1841 .RS485总线RS-232是目前串行通信中最常用的总线,其标准RS-232C是美国电子工业协会EIA制定的串行物理接口协议。RS-232接口的特征是负逻辑、单端驱动、共地接收,只适用于点对点通信。当信号线上的电平为-315V时,表示逻辑1;当信号线上的电平为+3+15V时,表示逻辑“0。通信双方使用一条公共信号地线作电平参考。RS-23

11、2C标准规定,驱动器负载电容不超过2500PF,通信距离受此电容的限制。另外,RS-232属于单端信号传送,存在共地噪声和不能抑制的共模干扰;因此其通信距离限15m以下,通信速率限于20kbps以下。当要求通信距离为几十米至上千米时,目前广泛采用RS-485总线。RS-485总线示意图如图7-9所示。RS-485收/发器采用平衡驱动和差分接收,具有抑制共模干扰的能力。RS-485接收器灵敏度可达200mV,因而大大延长了通信距离。在高达100kbPs速率下,电缆长度可达1200m;如果通信距离缩短,最大速率可达10MbPs。RSY85总线上允许带多个驱动器和接收器,可用于构建多点通信网络。图7

12、TRS-485总线示意图RS-485组网具有设备简单、价格低廉、能进行长距离通信的特点,故在工程工程中得到了广泛的应用。RS-485为串行平衡电压数字接口总线标准,与RS-422A总线标准根本相同,同样适用于DTE与DCE之间串行二进制信号点对多点的互联通信。不同之处在于: 传输阻抗RL=54,因此比RS-422A有更强的负载能力。 多点互联可多达32个。 接口芯片为DS3695(或SN75176,UA96176),DS3696(或SN75175,UA96177)。MAX481,MAX483,MAX485,MAX487491及MAX1487都是用于RS485通信的低功耗收/发器,可实TTL与R

13、S-485的电平转换。所有的器件都使用+5V的单一电源。 RS485为半双工通信. 2.SN75LBC184接口芯片 SN75LBC184是美国Tl公司生产的一种RS-485接口芯片。它使用单一电源,电压在3.05.5V范围内均能正常工作,可以完成TTL与RS-485之间的转换。其引脚图如图7-10所示。该芯片与普通的RS-485收/发器相比,有一个显著的特点,那就是片内A,B引脚接有高能量瞬变干扰保护装置,可以承受峰值400W典型值)的过压瞬变。由于引起过压瞬变的原因通常是雷电、静电放电及电源系统开关干扰等,因而它能显著提高器件的可靠性。在环境比拟恶劣的场合,可直接与传输线相接,而不需要任何

14、外加保护元件。该芯片还有一个独特的设计,即当输人端开路时,其输出为高电平。这样即使在接收器输人端电缆有开路故障时,也不影响系统的正常工作。另外,它的输入阻抗为RS-485标准输人阻抗(2)24k),故可在总线上连接64个收/发器。图7-10SN75LBC184的引脚排列7.2.3系统硬件设计1 .系统电原理图设计及其说明(1)系统电原理图设计系统电原理图如图7-11所示。(2)系统原理分析图7-11系统电原理图显示界面本系统采用共阴数码管作为显示界面。由于时间显示的要求,一共用了6个,这样必须采用24h制。时间的分割符号“:由数码管中的小数点“.代替。考虑到控制器室外使用的需要,设计中采用超高

15、亮显示数码管。系统复位由于系统采用X25045实现复位,因此无手动复位功能。系统在运行中出现死机及需要复位的情况下,如何实现复位?为了阐述这个问题,首先讨论单片机系统的几种复位形式。冷复位即上电复位,可通过开关电源来实现。这种复位方式不适用于无人职守的场合。 软复位在系统尚能正常运行的情况下,可以通过上位机发送复位命令字节,由系统跳转到程序首实现软复位。当然,考虑到可靠性,复位命令宜采用2B以上。 看门狗滋出复位在系统运行死机的情况下,系统的喂狗功能丧失,不可能产生正常的喂狗信号,从而引起系统自动溢出复位,以满足无人职守的需要。光电隔离 由于RS-485节点的距离往往比拟远,很难防止各种非共模

16、干扰通过通信线路串人系统,引起系统故障。为了系统的可靠与平安,对RS-485与微处理器的接口电路实行光电隔离进行缓冲。另外,对象控制是通过P3.5和P3.7实现的。这2个口线也必须通过光电隔离后驱动继电器或固态继电器,实现对对象的隔离控制。时钟备用电源DS1302时钟芯片具有自动切换电源的特性。为了在系统+5V主电源消失的情况下,确保系统时钟正常运行,设计了一个3.6V的可充电建电池,作为备用电源。正常情况下,由DS13O2对它进行涓流充电,以确保电池的长效性。1 .3监控软件设计7 .3.1监控软件结构1 .结构系统监控软件的重点和难点是按时间控制表的时间顺序进行控制和串行通信中断子程序2局

17、部.为了减少中断程序占用CPU的时间,串行中断只将接收到的本机时间表等信息写人系统开辟的缓冲区。时间表信息中还包括时间表累加和信息、2路控制输出标志信息等,前者主要用于判断时间表的有效性与完整性,防止错误动作;后者主要用于指定控制对象。监控程序的程序流程如图712所示。图7-12系统监控程序流程2 .关键子程序设计(1) MAX7219的初始化及读/写子程序初始MAX7219的程序流程如图7-13所示。按照图7-13,送完所有控制存放器的地址和相应的控制命令之后,再按同样的方法送待显示的数据,每次先送某个数码管的地址字节,后送待显示的数据字节。由于控制存放器和数据显示存放器全部单独编址,所以在

18、送控制字或送显示数据时,均没有规定其先后顺序。图7-13MAX721,的初始化流程如何用51单片机的普通I/O端口控制MAX7219呢?关键是要编写51单片机向MAX7219写IB的子程序。应用单片机位操作指令能寻址累加器A各位的指令编程。累加器A中D7DO各位对应的地址分别为E7,E6,EO,以此分别对D7,D6,DO位进行判断,判断某位为1还是为0,分别调写1和写0的子程序WMI和WMO0下面简要分析51单片机向MAX7219写IB的子程序,有关指令的分析说明见程序清单后的注释。程序清单如下:*:写字节子程序WMAX;占用存放器ACC:;*DINEQUPL6CLKEQUPI4WMAX:JB

19、E7,W7;判是否为11.CALLWMO;不是,那么调用写0”子程序1.JMPN7W7:LCALLWMI;是,那么调用写1子程序N7:JBE6,W6LCALLWMOLJMPN6W6:LCALLWMlN6:JBE5,W5LCALLWMOLGMPN5W5:LCALLWMlN5:JBE4,W4LCALLWMOLJMPN4W4:LCALLWMlN4:JBE3,W3LCALLWMO1.JMPN3W3:LCALLWMlN3:JBE2,W2JCALLWMO1.JMPN2W2:LCALLWMlN2:JBEl,Wl1.CALLWMO1.JMPNlWl:LCALLWMlNl:JBEO,WO1.CALLWMO1.J

20、MPNOWO:LCALLWMlNO:CLRCLKCLRDINRET*孝*;写T子程序*WM1;CLRCLKSETBDIN;送出“1NOPSETBCLK;产生CLK的下降沿RET*WMO:CLRCLKCLRDIN;送出“0NOPSETBCLK;产生CLK的下降沿NOPNOPCLRCLK;产生CLK的下降沿RET(2)X25045的初始化及读/写子程序对X25045的操作包括写状态存放器、写数据、读状态存放器及读数据等。这里仅介绍对X25045写数据程序及其相关程序的设计。:X25045引脚定义如下SCKEQUP2.3;串行时钟输入SIEQUP2.4;串行数据输入SOEQUP2.6;串行数据输出C

21、SEQUP2.7;片选输入:其中写保护输入WP始终接高电平:状态存放器及各命令字节定义STATUS_REGEQU#0000001IBwritejnstequ#ooooooiobRDSRNSTEQUM)0000101BWRENNSTEQU#0000011OBwrsrjnstequ#oooooooibwrdijnstequ#00000100b;写IB数据X25O45种的子程序WRONE;数据在A中,地址在DPTR种;占用存放器;ACC,DPTR*WRONE:PUSHACC;待写数据保护1.callwren;writeenableCLRSCK;X25045的SCK置低MOVA,WRITE_INSTM

22、OVB,DPHMOVC,B.0MOVACC.3,C;DPH的最低位(A8)送ACC.31.calloutbyt;送含地址高位的写命令MOVA,DPL1.CALLOUTBYT;送低8位地址POPACC1.calloutbyt;写ib数据CLRSCK;X25045的SCK置低STEBCS;片选CS置高,无效RET*挛*;设置写使能锁存器WREN子程序(即允许写操作)*WREN:CLRCSCLRSCKMOVA,wrenjnst1.calloutbyt;送写使能命令WRENSETBCSCLRSCKRET*出*;给X25045写入IB地址或数据子程序OUTBYT;欲写内容A中;占用存放器:ACC,B*O

23、UTBYT:MOVB,#081;置循环次数8OUTBYT1:CLRSCKRLCA;ACC的最高位送CyMOVSI,C;Cy送X25045的SISETBSCKDJNZB,OUTBYT1;循环8次,8bits*CLRSI;X25045DESl置低RET.*功能:读X25045状态存放器,等待内部写;入口条件:;出口信息:;占用资源:RDS045:RDSO1:R6的数据事等待延时时间WIP=I,正在写;WIP=O,写完成R6,A,B,PSWMOVR6,OFFH;循环次数送入R6CLRSCKNOPCLRCS;选中X25045NOPMOVA1rdsrjnst;05H,读x25045状态存放器命令送A1.

24、CALLOUTBYT;调用X25045写入IB子程序1.CALLINBYT;调用X25045读出IB子程序SETBCS;不选中X25O45JNBACC.0.DS02;WlP=T正在写;WIP=O,写完成DJNZR6,DSOlRDS02::功能:;入口条件:RET向X25O45写入一批数据子程序W045Ro的内容伟CPU内存的地址Rl的内容事X25045的待写地址,R3事待写数据的长度R4的内容事02H或OAH,表示写命令的执行区域;出口信息:;占用资源:W045:R3的内容为OA,B,PSW,RO,Rl,R2,R3.R4CLRSCKNOPCLRCSNOPMOVA,WRENINST;#06H,写

25、允许命令送入A1.calloutbyt;调用向X25045写入IB子程序SETBCSNOPCLRCSMOVA,R4;命令送入A1.calloutbyt:调用X25045写入IB子程序MOVA,Rl;X25045的首地址送入A1.calloutbyt;调用X25045写入IB子程序W0450MOVA,R0:待写数据送入A1.calloutbyt:调用X25045写入IB子程序INCRO;调整CPU内数据存储区的位置DJNZR3,W0450;判断这批数据事否完整SETBCS;批量数据写完,不选中X25045RET;功能:向X25045读出一批数据子程序;入口条件:RO的内容伟CPU内存的地址Rl的

26、内容是X25045的待写地址,R3是待写数据的长度R4的内容是03H或OBH,表示写命令的执行区域;出口信息:R3的内容为0;占用资源:AtS,PSWtRO,RLR2,R3,R4*R045:CLRSCKNOPCLRCSNOPMOVA,R41.CALLOUTBYTMOVA,Rl1.CALLOUTBYT:命令送入A;X25O45写入8B子程序;对X25045的操作首地址送入A;X25O45写入8B子程序R045I:LCALLINBYTMOVR0,A;INCRO;DJNZR3,RG451;SFTBCS;RET;调用读出8位数据子程序读出的数据送入CPU内存调整CPU内部存放数据的位置数据未读完,跳转

27、数据读完,不选中X25O45.*;功能:从X25045中读出8位数据子程序;出口信息:A的内容为读出的8位数据;占用资源:B,PSWINBYT:MOVB,M)8HINBYT:CLRSCKNOPMOVMOVC,SONOPSETBSCKRLCANOPDJNZB,INBYTCLRSCKRET3 3)DS1302的初始化及读写子程序实时时钟芯片DS1302的初始化及其读/写程序设计的关键是要遵循其时序要求。这里讨论有关子程序模块的设计。设计中的有关要点参见程序清单的注释。T_CLKEQUP3.3;实时时钟时钟线引脚TJOEQUP3.4;实时时钟数据线引脚T_RSTEQUP3.2;实时时钟复位线引脚;子

28、程序名:Set1302;功能:设置DS13O2初始时间,并启动计时!说明:;调用:RTlnputbyte;入口参数:初始时间在Second,Minute,Hour,Day,Month,Week,Year(地址连续);返回值:无!影响资源:A,B,RO,RLR4,R7;*Set1302:CLRT_RSTCLRT_CLKSETBT_RSTMOVB,#8EH;控制存放器LCALLRTInputByteMOVB,#00H:写操作前WP=OLCALLRTInputByteSETBT_CLKCLRT_RSTMOVRO,#Second;MOVR7,#7;秒、分、时、S、月、星期、年MOVRh#80H:秒写地

29、址Set13021:CLRT_RSTCLRT_CLKSETBT_RSTMoVB,Rl;写秒、分、时、日、月、星期、年地址LCALLRTInputByteMOVA,R0:写秒数据MoVB,ALCALLRTInputByteINCROINCRlINCRlSETBT_CLKCLRT_RSTDJNZR7,Set13021CLRT_RSTCLRT_CLKSETBT_RSTMOVB,#8EH;控制存放器LCALLRTInputByteMoVB,#80H;控制,WP=L写保护LCALLRTInputByteSETBT_CLKCLRT-RSTRET.*;子程序名:Get1302;功能:从DS1302读时间;说明:;调用:RTInputByte,RTOutputBte;入口参数:时间保存在SeCond,Minute,Hour.Day.Month,Week,Year;返回值:无;影响资源:A,B,RO,R4,R7.*Get1302:MO

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号