欢迎来到天天文库
浏览记录
ID:14432516
大小:64.00 KB
页数:40页
时间:2018-07-28
《单片机控制激光条码扫描器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、单片机控制激光条码扫描器单片机控制激光条码扫描器系统设计毕业论文2010-07-0222:08:14阅读250评论7字号:大中小订阅时间过的真快,毕业设计那段忙碌的时光还历历在目,那时紧张的无法形容,为了便于学弟学妹们学习,我把我做的论文主要部分公布下:第三章系统单元模块设计3.1数据采集模块设计通常条码阅读设备都可以直接和PC机相连,而且接口是可以直接识别的,无需做额外的接口设计。但是对于单片机系统而言,由于没有现成的接口处理器。尤其是对PS/2口[7],8位单片机没有键盘口的IP核,鉴于条码扫描器为串行数据传输,因此本文直接采用单片机串行口接收数据,实现通信。条码扫描器
2、的插头为键盘圆形插针,如图3.1所示。其管脚定义如下:1:Data(数据脚)、2:NC3:Ground(电源地)。4:+5V(电源脚)和5:Clock(时钟脚)、6:NC当条码扫描器扫描到有效条码时,会自动产生时钟信号,同时通过数据线按位将扫描码送到单片机。因为单片机本身集成了串口通信的IP核,串口的控制相当成熟,主要做软件上的设计。图3.1PS/2结构图本文提出两种采集数据方案:串行方式,并行方式。3.1.1串行方式在接口设计中条码扫描器的输出接口选用键盘口搭配PS/2协议,采用串行方式进行数据传输时,连线较为简单,主要将Clock线和Data线与单片机相连,读取数据时可
3、采用中断触发方式,将Clock线接到单片机外部中断0请求入口端P3.2上,见图3.1.1-1。为保证在每一个时钟信号的下降沿单片机能准确读取Data线的状态(一位数据),触发形式有两种方案:中断方式和查询方式。图3.1.1-1中断串行接收方式 在中断方式中,在主程序中将中断口初始化为下降沿触发方式,并将PS/2接口的Data线和Clock线都初始化为空闲状态,即高电平状态,使程序在每个时钟下降沿时自动进入到中断服务程序读取数据。当中断进行11次后说明一帧数据接收完毕,设置一个标志位为后续程序查询所用,转向扫描码的判断和ASCII码的转换程序。 如果设计中其他应用程序占用
4、了中断口,就必须采用查询方式来接收条码数据。设计中要保持CPU一直检测Clock线上的电平,一旦出现拉低,开始检测Data线的电平状态,得到一位数据,同时记录Clock线跳变次数,满11次记录一个8位的字符数据。这两种方式各有优缺点:中断触发减轻了CPU负担,处理速度更快,查询方式为系统设计节省中断口,供应用程序使用,在实际应用中,可根据设计需要采用不同的采集方式。3.1.2并行方式设计的核心是采用串入并出芯片如74HC164,条码输入设备输出的串行数据脉冲和时钟脉冲分别接到74HC164的数据端A,B端及时钟输入CLK端,由Clock脉冲的下降沿经非门后控制74HC164
5、的移位操作,条码输入设备每输出一个字符的扫描码,由CLK控制在74HC164的输出脚Q0-Q7上分别输出扫描码的D7-D0位,这部分转换完成后接口通知单片机将转换完毕的扫描码读入。由于Q0-Q7不能直接和P0口相连,因此,为了保证单片机准确读取74HC164的Q0-Q7脚上的扫描码,设计一片74HC245将他们隔开,74HC245是八位双向3态缓冲电路,在ENABLE与DIR同时为低电平的时候,74HC245将B1-B8上的数据传送至A1-A8上,为使单片机准确地发出读数命令,接口电路要完成74HC164转换完一个扫描码之后通知单片机接收74HC164的Q0-Q7数据。设计
6、中采用对Clock脉冲的下降沿记数来实现,输入至74HC164的CLK脉冲同时又输入至单片机的T1脚,见图3.1.2-1。利用T1对CLK脉冲记数,因为条码扫描器输出数据中每9个负脉冲对应一帧扫描码,因此T1每记数9次向CPU发出中断请求,从而保证CPU准确地读取数据。图3.1.2-1并行接收数据原理图3.2数据处理模块设计条码扫描器内部数据处理类似于键盘。对于大多数键码而言,只要一个键被按下,就一定会产生一个通码;只要一个键被释放,就一定会产生一个断码。于是,对于一个键值而言,它的组成就是通码+断码。在第二套通码中,对于绝大多数键而言,通码为单字节,断码为双字节的。其规则
7、为:断码的第一个字节是F0h,第二个字节是这个键的通码。比如:按键“a”的通码为1CH,而其断码则为F0H,1CH,整个代码1CH,F0h,1CH就表示按键小写字母“a”的一个动作。若在PS/2键盘中整个击键的过程,先按下左SHIFT键,再按下a键,释放a键,释放左SHIFT键,这些时间段内分别产生了左SHIFT的通码(12H),A的通码(1CH),A的断码(F0H,1CH),SHIFT断码(F0H,12H),查表后可以得出产生了12H,1CH,F0H,1CH,F0H,12H这一连串表示大写字母“A”的扫描码[8]
此文档下载收益归作者所有