如何使用打印机接口设计语音型抢答器

网友投稿 275 2022-11-20

如何使用打印机接口设计语音型抢答器

很多单位在开展文娱活动时有抢答一项,需要用到抢答器,普通抢答器使用通用集成电路制成,价格高、显示方式简单,性价比较差。而一般单位都有计算机,如果利用计算机就可以很方便地构成一台功能强大而价格十分低廉的抢答器。下面介绍的是笔者实际制作使用的电路。

一、打印口工作原理简介

参照图1,PC机上的打印接口共有25根连线,其中18-25都是地线,因此实际

二、硬件电路图

使用一片廉价的八缓冲器74LS244。

74LS244介绍:参考图2,74LS244是三态输出的八缓冲器,由2组、每组四路输入、输出构成。每组有一个控制端,由控制端的高或低电平决定该组数据被接通还是断开,功能表如下表所示。

三、程序的编制

这个制作的核心程序编写是非常简单的,只要使打印口的控制端口的低两位分时为低电平,然后分别读入状态端口的数据,就可以判断是否有人抢答了。这部份的程序如下:

#define CTRL_H 0x03 /*第一组切入,此时第16脚为0,17脚为1*/

#define CTRL_L 0x0f /*第二组切入,此时第17脚为0,16脚为1*/

for(;;)

{ outportb(port_ctrl,CTRL_H); /*port_ctrl为控制端口地址,见下说明*/

inp_data_h=inportb(port_inp); /*读输入口数据*/

outportb(port_ctrl,CTRL_L); /*切入第二组*/

inp_data_l=inportb(port_inp); /*读输入口数据*/

inp_data=((inp_data_h&&0xf0)||(inp_data_l》》4); /*两次读到的数据合并*/

if(inp_data!=0x77) /*高4位输入端无任何脚接地时,应读到7,请参考图1及电路图3*/

break; /*每组仅用高4位,两组合并后0x77为两次均无任何脚接地*/

delay(10); /*延时10毫秒,实际可在此作一些界面变化的处理,增加美观*/

}

四、注意事项

如果读者实际制作这个电路,还要注意以下几个问题:

1.打印口地址的确定,并非每一台计算机的打印口地址都是以上所列的地址,最常见的还有278H,279H,27AH。因此针对不同的计算机自动寻找打印口很重要,在计算机的内存中存放有打印口地址,自动查找打印口可用如下程序:

unsigned int far *fpb=(unsigned far * )0x00400008; /*在内存40:08H处单元中有打印地址*/

port_data=*fpb; /*取打印机数据口的地址*/

port_inp=*fpb+1; /*状态端口为数据口地址加1*/

port_ctrl=*fpb+2; /*控制端口为数据端口加2*/

void wave(char *file) /*发声函数,参数为文件名*/

{ char ch=‘ ’;

FILE *fp;

if((fp=fopen(file,“rb”))==NULL) /*打不开文件的常规处理*/

{ printf(“File%s not found!”,*file);

exit(1);

}

while(!feof(fp)) /*如果未到文件尾*/

{ outportb(port_data,(int)ch); /*取出数据并送往打印口数据端口*/

delay(3); /*延时3毫秒(取决于录音时的采样速率)*/

ch=fgetc(fp);

}

fclose(fp);

}

最后给出本程序的流程图。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:大数据组件-Hive部署基于MySQL作为元数据存储
下一篇:大数据组件-Hive部署基于derby作为元数据存储
相关文章

 发表评论

暂时没有评论,来抢沙发吧~