EPROM是一种具有可擦除功能,擦除后即可进行再编程的ROM内存,写入前必须先把里面的内容用紫外线照射它的IC卡上的透明视窗的方式来清除掉。EPROM芯片可重复擦除和写入,解决了PROM芯片只能写入一次的弊端。EPROM是一种常用的存储器,在单片机开发应用中一般用它作为程序存储器。实际上它也是一种可编程逻辑器件(PLD),除了可以用它实现逻辑函数外,还可以用它实现一些复杂的测量和控制。下面为两个应用实例。
一、高精度数字直流电压表
通常的数字式电压表采用液晶显示,显示亮度不高,显示的数字也不大。在此介绍采用A/D转换器和EPROM为核心构成的大型显示LED数字式直流电压表。适合于教学实验演示及测控设备的仪表台柜等的应用场合。
电路组成电路如上图所示。IC1是MAX174,IC2是EPROM27512,IC3~IC6是BCD码七段显示译码驱动器,IC7是双时基集成电路556,IC8是斯密特触发器CD4584。四个LED数字显示器可以用集成的LED器件,也可以用LED,即用多个LED串联组成一个数字笔段,七个笔段按数字显示器的形状安装可以作成大型数字显示器。满足特殊的要求。MAX174将模拟输入电压信号转换为12位的数字信号,此数字信号以并行方式输出成为EPROM的地址信号。IC7是556双时基芯片,其中一组用于产生A/D转换的启动脉冲(R/C),此时,双时基芯片的输出①经微分电路处理后再经施密特触发器(4584)整形成尖脉冲。此脉冲的频率设置为2Hz左右即可。
EPROM中存储A/D转换得到的数字量所对应的显示数据。每个A/D转换得到的数字量均变换成四位的十进制数,高两位数据存储于0×××H的地址中,低两位数据存储于1×××H的地址中(参见上表)。IC7产生频率高于100Hz的近似方波脉冲输出②,在脉冲②的高电平阶段,EPROM的地址端A12、IC3、IC4的LE端均为低电平,此时,地址0×××H中的数据在高两位LED中显示;在脉冲②的低电平阶段,EPROM的地址端A12为高电平,IC5、IC6的LE端为低电平,此时,地址1×××H中的数据在低两位LED中显示。这样一来,四位数据分成两组分别在IC7输出脉冲②的一个周期内分时显示在LED上。当高两位LED显示(其LE=0)时,低两位LED则没有显示(暗),因为其LE=1;反之,当低两位LED显示时,高两位LED则没有显示(暗)。为了不使这种间断的显示产生闪烁的效果,应使IC7的输出脉冲②的频率最低不低于人眼的视觉反应频率(约12Hz)。事实上此频率完全可以设置为比12Hz更高,比如100~1000Hz均可。
存储器编程 上图中MAX174的输入始终是0~+20V,由于采用12位输出,则满量程输出的数字量是FFFH(=4095)。分辨率=20V/4096=4.88mV/lLSB。但由于显示只取两位小数,即显示允许的分辨率是0.01V,所以EPROM中的数据只需精确到小数点后两位。EPROM的数据如上表所列。
需要说明的是,由于数据量很大,编制数据并写入EPROM时,最好另外编写程序以完成此任务。
功能扩展以上设计是0~+20V单量程电压表。如果要扩大量程,方法很简单,只需在+20V模拟量输入口加入一个转换开关(一个双联双掷开关,一组用作模拟量输入切换,另一组用作第二位LED和第三位LED的小数点(DP)的切换),即可增加另一路0~+200VDC的模拟量输入。但要注意,+20Vin输入端只允许不超过+20V的输入,+200V输入要加一个衰减,使其衰减为十分之一(即不超过+20V)。
当模拟输入为0~+20V时,点亮LED第三位小数点DP3,当模拟输入为0~+200V时,点亮LED第二位小数点DP2。这样EPROM地址中存储的数据均是0~+20V模拟量所对应的数字量。无需设两套数据。如果设置0~+10V量程测量(采用+l0Vin输入端),可以提高精度。分辨率将达到0.001V。但需另外编写一段EPROM中的数据。如果要设计成更多的输入量程,可以利用EPROM的高位地址端,如A13、A14来切换量程。将不同量程的数据储存在不同的EPROM地址段内。限于篇幅此处就不再详述了。
二、彩灯控制器
为了能增添节日的喜庆气氛,需要较大规模的彩灯。下面介绍一种用EPROM存储器来控制彩灯的电路。
八路彩灯控制电路电路如上图所示,时钟发生器为脉动计数器提供时钟信号CP。时钟发生器可用555时基电路。脉动计数器可用12级脉动计数器电路4040,如CD4040B。计数器的输出Ql~Q8接入EPROM存储器的地址信号端A0~A7,EPROM可采用27系列,如27512。EPROM其余的地址端(A8~A15)接DIP开关,用此DIP开关可以设置多种点亮彩灯方式。EPROM的片选端CS和数据输出选通端OE均接地。
EPROM的8路输出分别经放大后连接8路彩灯。每路彩灯可以不只一个,通过串并联可组合成多个的集合。如果是220VAC的彩灯,EPROM的输出需作进一步处理,如放大后再连接继电器或可控硅器件。
脉动计数器的输出是按0000H→0001H→0002H的自然二进制数顺序变化的。变化的快慢由时钟CP的频率控制,一般说,此频率应为一个较低值,具体要根据实际要求用"频率调节"钮调整。
EPROM中存储的数据对应着彩灯的工作情况,可以约定,如位值=0时表示其对应的那路彩灯灭,位值=1时表示其对应的那路彩灯亮。图2电路中,地址××00H中的数据若设定为OOH,则当按下复位开关时(产生的地址为××00H),对应的输出为00H,所有的彩灯灭。
如上图所示的连接,EPROM采用27512时,总共64KB的存储器空间被分为256个区间,每个区间有2的8次方=256B的容量。每个区间存放一个彩灯程序,总共可存放256个程序,即可以预设256种不同的彩灯点亮方式。假定脉冲频率是1Hz,则每个程序可播放2的8次方=256秒,约4分钟。一个彩灯程序播完又会从头开始播放(因为脉动计数器在脉冲的激励下按自然二迸制数加计数,计数满××FFH后又回到××OOH继续)。要改换彩灯点亮方式只需更改DIP开关的设置即可。
如果不需要256个这么多的彩灯点亮方式,只需将EPROM高位的地址端接地即可。比如说只需16个彩灯点亮方式,可将27512EPROM的A8~All接DIP开关,并将A12~A15接地。
多路扩展如果需要多于8路的彩灯控制,可以采用如图3所示的控制方法。这是一个64路输出的彩灯控制电路。当然,多于或少于64路的彩灯控制电路也可参照该方法处理。
上图中,EPROM的输出接八片8D数据锁存器芯片74HC373。它们的数据锁存允许端G(共八个)分别由3/8线译码器芯片74HC138的八路输出(并经反相器74HC04芯片反相后)进行控制。74HC138的地址输入端A0~A2分别接分频器4040芯片的输出Ql~Q3。EPROM中存储的数据在时钟CP的作用下,依次输出到数据锁存器373的输入端D0~D7,并被锁存在对应选通的74HC373芯片中。
当按下复位按钮时,EPROM的输入地址是OOH,所有的74HC373芯片的OC端为低电平,全部64路输出均为0,无彩灯亮。
在复位后的第1个时钟周期,4040输出00000000,即Q3Q2Ql=000,也即74HC138的地址输入为000,此时YO的反被选通。即IC7被选通。EPROM中地址××00H的数据被锁存到IC7。在第2个时钟周期,4040输出00000001,即Q3Q2Ql=001,也即74HC138的地址输入为001,此时可被选通。即IC8被选通。EPROM中地址××01H的数据被锁存到IC8。在笫8个时钟周期,4040输出00000111,即Q3Q2Q1=111,也即74HC138的地址输入为111,此时Y7的反被选通。即IC14被选通。EPROM中地址××07H的数据被锁存到IC14。在第9个时钟周期,4040输出00001000,即Q3Q2Ql=000,也即74HC138的地址输入为000,此时YO的反被选通。即IC7被逸通。EPROM中地址XX08H的数据被锁存到IC7。
可以看出,每8个时钟周期就可以将EPROM中连续8个地址单元的数据以位(BIT)的方式送至64个彩灯控制端。(注:这8个连续地址单元应是×××0~×××7H或×××8~×××FH,并且在这8个时钟周期内,未被选中的彩灯控制端的数据是保持的。)
如果在EPROM中存储如下数据就可以实现"逐次点亮1N64#彩灯":(假定此点亮方式的控制DIP开关均接地,即高位地址输入均为0)地址OOOOH中存储01H,0001~0007H中均存储00H;地址0008H中存储02H,0009~000FH中均存储OOH;地址0010H中存储04H,0011~0017H中均存储00H;……;地址OIF8H中存储80H,01F9~1FFH中均存储OOH。上列地址单元共有512个,用手工方式写入将十分繁琐。如果以编程方式产生各地址单元待存储的数据,并写入E-PROM将使其轻松许多。
三、控制器的工作原理工作时,地址发生电路以t为周期产生变化的地址信号、EPROM将地址所对应的存储单元中的状态输出到D0~D7上。这里采用OC门7406作驱动器(7406可驱动直流30V以下,工作电流为40mA的负载)。通过继电器实现对各执行机构的控制。
D触发器74LS74用以协调控制器的工作。接通电源,R1、C1,构成的复位电路向74LS74提供一个复位脉冲。触发器的输出Q=0,Q非 =1。Q非 =1使计数器CD4040的输出复位(为0);Q=0使"555"停振。控制器处于待命状态。按下起动键K2,触发器被置位(Q=1,Q非=0)。计数器的复位信号解除,振荡器起振。控制器开始工作后,先进入初始状态,然后依次给出各个阶段的控制状态。当最后一个工作阶段结束后,控制器进人结束状态。EPROM的D7由0变为1,使计数器输出复位。此时振荡器仍在工作,控制器将重新开始下一个工作周期。
如果工作过程中需暂停,可按下停止键K1触发器被强行复位,控制器进人待命状态。若要继续工作,只要按下起动键K2即可。
有些场合,不希望连续工作。即起动一次只完成一个工作周期。可在EPROM的D7与触发器的触发端(CP)之间加一连线。一个工作周期完成后,D7由0变为1、在CP端给出一个上升沿、使触发器输出翻转,即Q=D=0。控制器进人待命状态。按下K2就可起动下一个工作周期。