基于MCS-51的脱机扫描仪控制器张万鹏陈军宁童家榕唐璞山(集成电路CAD研究室,复旦大学电子工程系,上海,200433)摘要本文提出一种基于MCS51的能脱机使用并控制多种手持式扫描仪的控制器的设计方法。该电路适用于各种常见的100-400DPI的手持式扫描仪,可完成对扫描仪的各种扫描控制,如30秒关机、拖动速率的判断、分辨率及灰度判断等,并且用RS232C与PC机进行通讯,完成对扫描图象数据的进一步显示、分析和处理,便于携带,便于进行现场的图象文字扫描处理。关键词图象扫描仪脱机扫描仪CCD图象信号MCS-51BasedOff-the-ComputerScannerControllerZhangWanpengChenJunningTongJiarongTanPushanIntegratedCircuitCADLaboratory,DepartmentofElectronicsEngineering,FudanUniversity,Shanghai200433AbastractThispaperpresentsadesignmethodofMCS-51basedoff-the-computerscannercontrollerforvariousportablescanners.Itisapplicableforvariouscommonportablescannersof100to400DPIandcanimplementdifferentscanningcontrolssuchas30-second-overshut-down,determinationofpullingspeed,resolutionandgrayscales.ItcancommunicatewithPCthroughRS-232Candfulfillthefurtherdisplay,analysisandhandlingofscanningimage.Itiseasytocarryandcandealwiththeimageon-the-spot.KeyWordsImagescannerOff-the-ComputerscannerCCDimagesignal1引言我们在信息社会中所获得的信息有70-80%来源于视觉,计算机作为信息社会的主角,已经能看、能听、能说和能推理。计算机图象处理在许多领域起了关键的作用,但计算机处理图象信息,最初都是借助图象输入设备将自然图象翻译或变换成为能被计算机接受和使用的数字图象,图象扫描仪正是实现这一过程必不可少的工具。图象扫描仪(ImageScanner)自从1984年问世以来,至今已成了办公自动化中不可缺少的一项设备,它的功能特性在这数年之中,从只能扫描黑白图象到具有灰度识别能力,再发展到能扫描彩色图象,其间技术的更新,产品的发展,可以说是日新月异。扫描仪的应用范围已经从桌面排版、光学字符识别覆盖到计算机辅助设计,数据库管理等方面。扫描仪的输入技术在科研、工作、生活中必将扮演着越来越重要的角色。扫描仪是一项结合光学、电子、机械控制等尖端科技的产品,其中包含了光学原理、电荷耦合元件(CCD)、模拟/数字转换电路、数字信号处理(DSP)、图象压缩与传送等技术。扫描仪的主要内部结构:(1)光学原理。一般来讲扫描仪可分为反射式以及穿透式光源,所谓反射式即是光源投射在被扫描文件,经透镜反射聚集到CCD,从而产生一连串的电子信号;而穿透式光源即是所谓的幻灯片式扫描仪(SlideScanner),其光源是穿透过被扫描的文件,最重要的是如何精确对焦,使经由透镜反射的光能正确成象于CCD。(2)电荷耦合元件(CCD)。扫描仪的核心,在CCD上直线排列的光或元素可因入射光强弱,以电压的形式反应出来;它主要的功能在于将由透镜聚集的光转换成电子信号,使得扫描仪可以加以记录。(3)模拟/数字转换电路。由CCD产生的信号通常是非常微弱的,需要用信号放大器(Amplifier)加以放大,但由于这是模拟信号,所以必须用模拟/数字转换电路转换成数字信号,便传输给计算机进行处理。(4)图象传输处理器。为使扫描输入的图象可在各种计算机平台上处理,提供与计算机的接口功能,使用户可以在IBM-PC、Macintosh、SunWorkstation等主机上处理或使用扫描进来的图象资料。现有的扫描仪都是联机使用的产品,这使其在许多场合不能适应用户的要求。主要问题之一是不能携带至任何需要操作的现场进行工作。解决该问题的方法是研制一种可以脱机操作的便携式扫描仪。目前这种产品在国内外市场上均未见到。本文将对其作详细的分析,对其图象处理在硬件及软件方面的实现提出了自己的看法。2扫描仪信号的分析为便于对扫描仪的信号进行有效的判断和控制,对现有的手持式扫描仪产品的信号线进行了分析,以LOGITECH为例,其接口信号线排列如图1所示。表1取样信号电平与分辨率的对应关系图1扫描仪的接口信号线排列*前2个脉冲周期为1.3us,第3个为2.6us表2分辨率与脉冲周期的对应关系当按下扫描仪的启动按钮,并拖动扫描仪时,同步信号(褐线)方才出现,标志一个新的扫描行的开始,其脉冲间隔随拖动的快慢而变化,拖动过快则间隔变小,图象会变坏。状态控制信号(橙线)和图象控制信号(黄线)有两个作用:①状态控制信号(橙线)的脉冲周期变化决定了扫描仪的状态(字符或图象),同步控制信号(白线)脉冲对图象控制信号和状态控制信号进行取样,来判断扫描仪的分辨率,如表1、表2和图2;②图象控制信号(黄线)用于对CCD图象信号(蓝线)进行取样,读取图象信号,其第一个脉冲对应着CCD图象的第一个有效信号,但最后几个脉冲仅对应着CCD图象信号的结束标志脉冲。CCD的图象信号为负极性信号,即低电平为白色图象信号,高电平为黑色图象信号。扫描仪的亮度电位器可调节CCD图象信号(蓝线)中的一个标志脉冲(180us处)的宽度,如图3。亮度最大时标志脉冲消失;亮度最小时,标志脉冲变宽且由多个小脉冲组成。行同步信号出现后,图象控制信号(黄线)对CCD的图象信号取样。30秒到时,扫描仪需进行关机保护。橙线电平高高低低黄线电平高低高低分辨率(DPI)100200300400蓝褐黑白橙黄(粉)黑红黑线:地线红线:12V电源正极白线:同步控制信号橙、粉线:状态控制信号黄线:图象控制信号蓝线:CCD图象信号褐线:?行同步信号分辨率(DPI)100200300400脉冲周期(us)5.22.61.3-2.6*1.3200DPI2.6u2.40ms0.35ms50u共920个脉冲,?有效脉冲826个状态控制信号图象控制信号同步控制信号图2状态、图象和同步控制信号的时序关系350u180u有效CCD图象信号?标志脉冲2.15ms2.74ms40u50u图象控制信号CCD图象?信号行同步信号图3图象控制、CCD图象和行同步信号的时序关系3硬件设计在进行电路设计时,拟采用单片机进行图象信号控制和处理,并考虑到以下几点:(1)MCS-51单片机系列的时钟频率一般在0.5MHz--16MHz之间[1],典型值为11.0592MHz和12MHz。大多数指令的执行时间为一个机器周期,一个机器周期有12个时钟,晶振为12MHz,则一个机器周期为1us。考虑到对信号的处理速度、图象信号的存储以及压缩、图象信号的转储(即通讯),采用该系列是可行的.(2)考虑到未经压缩的图象信号所占内存的大小,采用64K的EPROM(27512)作为程序存贮器,4片128K的RAM(628128)共512K作为图象存贮器(其中128K为缓冲单元),对缓冲单元的图象信号进行压缩后转储至其余的384K中。(3)对扫描仪的五根信号线进行及时的取样、判断和处理,在硬件方面表现在对其中断优先级的电路设计上,并基于电路形式进入相应的中断服务程序。(4)扫描仪的30秒自动关闭信号由定时器T1产生。(5)MCS-51电路与PC机的RS-232C总线的通讯问题。由于RS-232C总线上传输的信号的逻辑电平与TTL的逻辑电平差异很大,所以必须进行电平转换,但因集成电路电平转换器MC1488、MC1489中MC1488的工作电压为+12V,故采用分立元件进行电平转换。(6)为避免总线冲突,程序存贮器、图象存贮器和信号取样单元不能同时选中。电路的基本结构如图4所示。扫描仪30秒开关电路与PC机的通讯电路单片机CPU扫描仪信号控制电路图象存储单元PC机的串行口(RS232C)Scanner信号线图4硬件结构框图4软件设计基于脱机扫描仪的硬件设计,软件设计主要包括:初始化,测试扫描仪的状态和分辨率,主控程序,扫描仪拖动速率的判断(INT0中断服务程序),读取图象信号(INT1中断服务程序),T0中断服务程序,30秒定时(T1中断服务程序),串口通讯服务程序[2][3]以及PC机的图象转换程序。4.1初始化对8031CPU的程序状态字PSW、定时器的控制寄存器TCON、定时器的方式寄存器TMOD、定时的初值、堆栈指针SP、中断优先级IP和中断使能寄存器IE进行初始化。设定INT0(行同步信号)优先级最高,T0(行象素计数器)、INT1(读取图象信号)、T1(30秒定时)次之,串行口中断最低,即设置IP为#01H。4.2测试扫描仪的状态和分辨率测试扫描仪的白色信号线,为0则保留黄线和橙线的电平信号,根据其电平的高低可判断分辨率。确定状态采用读T0的方式,首先对计数器74HC393清零,然后循环读取T0,直至T0为1后再次对74HC393清零,进入扫描仪状态判断程序。由于T0端接至74HC393的Q2端,需4个取样脉冲使其置1。所需时间为:5.2us(图象3)、6.5-7.8us(图象2)、10.4us(图象1)、20.8us(字符)。延时5us(主频12MHz则NOP五次)后读取T0,T0=1则为图象3;否则继续读取T0,T0=1则为图象2;否则延时后再读T0,TO=1则为图象1,T0=0为字符状态。4.3主控程序对扫描仪和CPU进行初始化,并开放INT0中断,准备读取图象信号。同时判断30秒到否,保护扫描仪的寿命。4.4扫描仪拖动速率判断(INT0中断服务程序)收到INT0信号后,飞读30秒定时器T1,将读取的时间值与上一次的时间值相比较,若两次INT0(行同步脉冲)的时间间隔小于2.5ms,则说明扫描仪拖动过快,给出报警信号后强制复位,本幅图象作废,重新开始扫描。若间隔大于2.5ms,则延时150us(包括程序执行时间),对图象移位寄存器和计数器清零。开INT1,同时置位ET0和TR0,启动T0(图象字节计数器)计数并允许中断。中断INT0返回。4.5读取图象信号(INT1中断服务程序)收到INT1信号时,读取图象信号,存入缓冲区(128K),并判断缓冲区是否满。4.6T0中断服务程序若T0(图象字节计数器)和INT1同时到来,说明本行预定象素数已经达到。由于T0的中断优先级高,响应后复位IE(中断允许寄存器),对TCON的IE1清零,禁止INT1,而后中断返回,等待INT0的到来。4.730秒定时(T1中断服务程序)为使T1定时30秒,采用循环方式。主频12MHz时,T1的最大溢出时间为65.536ms。取T1的定时时间为60ms,需循环500次,30秒到后,关闭扫描仪,清T1中断标志。4.8串口通讯服务程序(含MCS-51的发送程序和PC机的接收程序)首先对控制寄存器SCON,特殊功能寄存器PCON和T1,T1的工作方式进行初始化。然后由单片机向PC机发送图象数据,单片机与PC机通讯主要考虑到波特率的一致性。RS-232C通讯标准中,标称波特率有:50、110、150、300、600、1200、2400、4800、9600、19200等,其中以1200--9600最为常用。IBM-PC的串行通讯控制器采用Intel8250,其波特率是采用1.8432MHz专用时钟由16位的除法器产生,可以精确地定出各种标称波特率。而MCS-51的波特率是采用系统时钟由定时器T1产生的,系统时钟一般为6.