基于uC/OS-II的验光仪打印接口的实现

时间:2022-10-01 03:36:43

【摘要】本文简要的讲述了验光仪开发过程中的打印接口的设计及在uC/OS-II系统下的接口程序的实现。首先对打印接口进行分析设计,之后分析系统中的打印流程,并实现了相应的接口程序。

【关键词】验光仪;打印;接口

引言

验光仪也称为屈光度仪,本文所讲述的验光仪为基于S3C44B0X为核心的自动屈光度仪。采用源代码公开的实时多任务操作系统uC/OS-II为操作系统内核,打印作为其主要的输出功能,因此需要进行相应的硬件和软件设计。

1 原理分析

打印机使用单片机控制,与主板的中核心处理器S3C44B0X通信,实现字符和图像的打印。由于打印由专门的单片机负责,本设计采用单片机监听方式,处理器触发的形式。

图1中,通信开始,单片机的P2.1口保持低电平,ARM的PC0口保持高电平。当打印键触发,PC0口送一个低电平,使其产生一个从低到高的跳变。此时,单片机一直处于低电平,并保持监听,当收到了ARM发送的上升脉冲后,开始接收数据线上的8位数据。之后保持P2.1口低电平。等待下一次上升脉冲的到来,继续更多数据的传输。

单片机在接收到字符之后,按一行24个字符分段,满一行之后驱动打印马达,不同的打印机有不同的打印机马达驱动指令,使其开始下一行字符打印。打印每行的过程是将每行分了特定的像素行,根据不同的字符编码确定,本系统中采用了16*8点阵全高ASCII码,因此每个字符分了两列,8行进行打印。

2 硬件设计

图2 给出了打印接口的原理图,接口采用74LS574作为字符数据输出的锁存, 74HC245接收打印机控制的单片机P2. 1回复的BUSY信号。/PRINTER_W_CS和/PRINTER_R_CS分别作为两个芯片的工作时钟和使能信号。PC0平时拉高保持到电平,因此可以直接连接到打印接口,在传输阶段由ARM处理器发出由低到高的跳变信号。

3 软件设计

ARM中的安排打印任务,优先级为9,OSTaskCreate(TaskPrint, (void *)0, &TaskStartPrint[0],9); TaskPrint(void *data) 函数根据任务的需要,调用PrintLine(char* pdata,U8 e)函数,在打印键触发时打印输出。函数中首先检测打印机是否处于忙状态,之后产生一个由低到高的跳变。之后实现8位数据的传输。

void PrintLine(char* pdata,U8 e)

{

while(*pdata){

while(rPDATC & 0x80);//PC7 == 0,

rPDATC &= 0xFE;//PC0 = 0

Delay(10);

rPDATC |= 0x01;//PC0 = 1

Delay(10);

*((U8*)_Print) = *pdata++;

} ...

}

单片机中,读取打印字符ASCII码数据的函数由void Read_One_ASCII(void)函数实现,函数首先置P2.1为0之后等待产生一个由低到高的跳变,之后置P2.1为1,实现8位数据的读取。

void Read_One_ASCII(void)

{

P21 = 0;

while(P2^2==0);//底电位

while(P2^2==1);//高电位

P21 = 1;

Print_ASCLL=P0;

}

void Send_Print(int Send_Line)函数实现将一行字符的一个像素行的图形码送给打印机。并根据ASCLL点阵的数组计算出图形码的相关码,将该码通过串口送到微型热敏打印机输出。同时在完成每个像素行后MoveMotor(1),实现马达的步进,相关代码略。

4结语

通过单片机单独控制,可以使打印控制任务更简洁高效,同时采用uC/OS-II满足系统的诸多测量、控制任务需要,也安排了一个打印任务,使其开发、管理更简单,响应也更快。进一步需要对其两部分功能进行积成,充分利用ARM芯片的强大接口,以降低系统的成本。

【参考文献】

[1]王士元. C 高级实用程序设计[M]. 北京:清华大学出版社,1996.

[2]戴梅萼,史嘉权.微型计算机技术及应用[M]. 北京:清华大学出版社,1996.

上一篇:施工阶段工程项目造价的有效控制 下一篇:水稻抛秧盘育苗及抛秧栽培技术