打印机工作时的程序如下:
3.2 基本系统
由于微型打印机的打印缓冲区一次可快速装入240个代码,如全部为汉字,则要占用RAM为240×32=7 650个字节,显然89C52内的256 B[3]RAM明显不够,所以要外挂1片数据存贮器(这里用的是6116)才能满足要求。基于这些,他的基本系统由89C52芯片,27C040(27C040并不是作为程序存贮器使用,而是用来存放字库、字符),数据存贮器(6116)构成,如图4所示。
由于27C040只有1片,所以其片选线与地址锁存器(74LS373)的片选线均直接接地。同时外接的27C040的地址线A0~A7由P0口通过地址锁存器提供,A8~A15由P2口提供,A16~A18由P1.5~P1.7提供。而数据存贮器(6116)片选端CE是由89C52的P2.7控制的,当P2.7=0时则选中6116,此时89C52的P2.0~P2.2输出6116所需的高位地址,P0口输出6116的低8位地址锁存在锁存器74LS373中。若是读6116,则P0口变为输入方式,在RD为低电平时,选通6116,此时6116中相应的数据出现在P0口,再由CPU读入累加器A中。若是写,则P0口为输出,当为低电平时,将累加器A中出现在P0口上的数据写入6116。
3.3 89C52对打印机联络信号的控制
3.3.1 打印机的联络信号
打印机的联络信号有,
,BUSY。
:数据选通触发脉冲,输入。此信号上升沿时数据线上8位数据被打印机读入机内锁存。
:回答脉冲,输出。当其为“低”电平时表示数据已被接收而且打印机准备好接收下一个数据。
BUSY:“忙”信号,为状态输出线,当打印机在打印字符、执行命令期间BUSY=1,表示打印机处于“忙”状态,这时打印机通知主机,他处于“忙”之中而不能接收数据,此时主机不能使用信号向打印机送入新的数据字节。当打印机打完一个字符后,BUSY=0,同时他产生
信号通知主机,准备接收下一个数据,当主机接收到BUSY=0时,主机向打印接口输出1 B到D0~D7,并发出
低电平信号,当打印机收到STB低电平信号后,单片机在其上升沿时读入数据。其时序图[4]如图5所示。
3.3.2 89C52对联络信号实施控制的电路电路图如图6所示。
上电复位时D触发器(U1)的Q输出端为1,无论P3.0为何值,经过“或”门(6)后,BUSY=1,不接收数据。
当89C52的P2.7=0时,即有6116(数据存贮器)的CE为低电平,表示选中了6116,由图3可知当P2.7=0时,经过反相器(3)再经过“或”门(8),此时无论P3.7为何值74ALS374的片选端CE总为高电平,即没有选中,这样就保证了外部的数据与数据存贮器的数据分别进行传输与接收而不至发生混乱。从上面的分析,当P2.7=0时,表示选中了6116,而没
有选中74ALS374,此时主机不应有数据送入打印机,即有BUSY=`,=1,下面来看是否满足这点:当P2.7=0时,经过反相器(3)一路经D触发器(U2)的Q输出为1即
=1,另一路经过“或”门(8),这时无论P3.7为何值,输出总为1,再经D触发器(U1)的Q输出也为1,经“或”门(6)后,BUSY=1,显然满足要求。
当P2.7=1时,通过“非”门(3)后变为0,若此时单片机准备读取数据(即P3.7=0),他们经过“或”门(8)后,一路到74ALS374的片选端(CE),一路到D触发器(U1)的清除端,使D触发器的Q输出端为0,即有74ALS374(CLK)为0,表示74ALS374的D0-D7端已有数据(同时
上一篇:利用51单片机实现IO口模拟串口