:串行方式,并行方式。 3.1.1 串行方式 在接口设计中条码扫描器的输出接口选用键盘口搭配PS/2
,采用串行方式来进行数据传输时,连线较为简单,主要将Clock线和Data线与单片机相连,读取数据时可采用中断触发方式,将Clock线。为保证在每一个时钟信号的下降沿单片机能准确读取Data线的状态(一位数据),触发形式有两种方案:中断方式和查询方式。 图3.1.1-1 中断串行接收方式 在中断方式中,在主程序中将中断口初始化为下降沿触发方式,并将PS/2接口的Data线和Clock线都初始化为空闲状态,即高电平状态,使程序在每个时钟下降沿时自动进入到中断服务程序读取数据。当中断进行11次后说明一帧数据接收完毕,设置一个标志位为后续程序查询所用,转向扫描码的判断和ASCII码的转换程序。 如果设计中其他应用程序占用了中断口,就一定要采用查询方式来接收条码数据。设计中要保持CPU一直检测Clock线上的电平,如果出现拉低,开始检测Data线的电平状态,得到一位数据,同时记录Clock线位的字符数据。这两种方式各有优缺点:中断触发减轻了CPU负担,处理速度更快,查询方式为系统模块设计节省中断口,供应用程序使用,在实际应用中,可根据设计 需要采用不一样的采集方式。 3.1.2 并行方式 设计的核心是采用串入并出芯片如74HC164,条码输入设备输出的串行数据脉冲和时钟脉冲分别接到74HC164的数据端A,B端及时钟输入CLK端,由Clock脉冲的下降沿经非门后控制74HC164的移位操作,条码输入设备每输出一个字符的扫描码,由CLK控制在74HC164的输出脚Q0-Q7上分别输出扫描码的D7-D0位,这部分转换完成后接口通 P0口相知单片机将转换完毕的扫描码读入。由于Q0-Q7不能直接和连,因此,为了能够更好的保证单片机准确读取74HC164的Q0-Q7脚上的扫描码,设计一片74HC245将他们隔开,74HC245是八位双向3态缓冲电路,在ENABLE与DIR同时为低电平的时候,74HC245将B1-B8上的数据传送至A1-A8上,为使单片机准确地发出读数命令,接口电路要完成74HC164转换完一个扫描码之后通知单片机接收74HC164的Q0-Q7数据。设计中采用对Clock脉冲的下降沿记数来实现,输入至74HC164 的CLK脉冲同时又输入至单片机的T1脚,见图3.1.2-1。利用T1对CLK脉冲记数,因为条码扫描器输出数据中每9个负脉冲对应一帧扫描码,因此T1每记数9次向CPU发出中断请求,来保证CPU准确地读取数据。 图3.1.2-1 并行接收数据原理图 3.2 数据处理模块设计 条码扫描器内部数据处理类似于键盘。对于大多数键码而言,只要一个键被按下,就一定会产生一个通码;只要一个键被释放,就一定会产生一个断码。于是,对于一个键值而言,它的组成就是通码+断码。在第二套通码中,对于绝大多数键而言,通码为单字节,断码为双字节的。其规则为:断码的第一个字节是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]。 根据以上数据传输格式,本设计采用的数据处理方法为去除断码,保留通码。并将通码顺序保存到内存RAM单元,以备数据处理模块程序调用处理。 3.3 多个方面数据显示模块设计 目前常用的显示器是LED显示器和LCD液晶平面显示器二种,LED显示屏是由发光二极管排列组成的显示器件。它采用低电压扫描驱动,具有:常规使用的寿命长、成本低、亮度高、故障少、视角大、可视距离远等特点。LCD液晶平面显示器其工作原理是利用液晶的物理特性:通电时排列变得有序,使光线容易通过;不通电时排列混乱,阻止光线通过,说简单点就是让液晶如闸门般地阻隔或让光线穿透。其优点最重要的包含零辐射、低功耗、散热小、体积小、图像还原精确、字符显示锐利等。 由于LCD显示屏具有功耗低、控制方便、设计灵活等诸多优点,因此本课
设计采用LCD1602作为条码扫描器的显示器。以下将简要介绍LCD1602工作原理。 3.3.1 LCD1602 概述[9] 在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子科技类产品的通过器件,如在计算器、万用表、电子表及很多家用电子科技类产品中都能够正常的看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。 图 3.3.1-1 LCD1602 液晶显示器 1. LCD1602的基本信息参数及引脚功能 LCD1602分为带背光和不带背光两种,基控制器大部分为HD44780, 带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸 差别如下图所示 图3.3.1-2 LCD1602尺寸图 LCD1602主要技术参数: 显示容量:16×2个字符 芯片工作电压:4.5—5.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.95×4.35(W×H)mm 引脚功能说明 LCD1602采用
的14脚(无背光)或16脚(带背光)接口,各引 脚接口说明如表所示: 表3.3.1-1:引脚接口说明表 编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据/命令选择 12 D5 数据 5 R/W 读/写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数据 16 BLK 背光源负极 2. LCD1602的指令说明及时序 1602液晶模块内部的控制器共有11条控制指令 表3.3.1-2:控制命令表 序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清显示 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 0 1 * 3 置输入模式 0 0 0 0 0 0 0 1 I/D S 4 显示开/关控制 0 0 0 0 0 0 1 D C B 5 光标或字符移位 0 0 0 0 0 1 S/C R/L * * 6 置功能 0 0 0 0 1 DL N F * * 7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地址 0 0 1 显示数据存贮器地址 9 读忙标志或地址 0 1 BF 计数器地址 10 写数到CGRAM或DDRAM) 1 0 要写的数据
11 从CGRAM或DDRAM读数 1 1 读出的数据内容 1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平) 指令1:清显示,指令码01H,光标复位到地址00H位置。 指令2:光标复位,光标返回到地址00H。 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。 指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。 指令6:功能设置命令 DL:高电平时为4位总线位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。 指令7:字符发生器RAM地址设置。 指令8:DDRAM地址设置。 指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据。 指令11:读数据。 读写操作时序如图3.3.1-3和3.3.1-4所示: 图3.3.1-3 读操作时序 图3.3.1-4 写操作时序 3.3.2 LCD1602工作过程[10] 条码扫描器读取数据后经过RXD接收给51单片机,51单片机进行数据处理后通过LCD1062显示出来,其中LCD的RS端、R/W端和E端分别与51单片机的P1.0、P1.1和P1.2 口相连接。 RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。 E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 表3.3.2-1 LCD1602基本操作时序表 读状态 输入 RS=L,R/W=H,E=H 输出 D0—D7=状态字 写指令 输入 RS=L,R/W=L,D0—D7=指令码,E=高脉冲 输出 无 读数据 输入 RS=H,R/W=H,E=H 输出 D0—D7=数据 写数据 输入 RS=H,R/W=L,D0—D7=数据,E=高脉冲 输出 无 3.4 系统整体方案定型 在接口设计中条码扫描器的输出接口选用PS/2协议,采用51单片机串行口直接接收条码数据,选用方式3,11位数据帧格式,与条码扫描器数据帧格式一致,将Data线与单片机的RXD线相连,并且使用上拉电阻将电位拉高,闲置时保持数据线单片机串行口专用寄存器结构如图所示。SBUF为串行口的收发缓冲器,其中包含了接收器和发射器寄存器,能轻松实现全双工通信。但这两个寄存器具有同一地址(99H),由指令控制选择SBUF。MCS-51的串行数据传输十分方便,只要向缓冲器写入数据就可发送数据。而从接收缓冲器读出数据既可接收数据。 A:串行通信寄存器 SCON控制寄存器是一个可位寻址的专用寄存器,用于串行数据通信的控制,物理地址是98H,其结构格式如下: 表3.4.1-1 SCON寄存器结构 SCON D7 D6 D5 D4 D3 D2 D1 D0 SM0 SM1 SM2 REN TB8 RB8 TI RI 位地址 9FH 9EH 8DH 9CH 9BH 9AH 99H 98H 下面对控制位功能介绍如下: (1)SM0、SM1:串行口工作方式控制位 SM0 SM1 工作方式 功能说明 0 0 方式0 移位寄存器方式(用于I/O扩展) 0 1 方式1 8位UART,波特率可变(T1溢出率/ n) 1 0 方式2 9 位UART,波特率为fosc/64或fosc/32 1 1 方式3 9位UART,波特率可变(T1溢出率/ n) 由于激光条码扫描器输出一帧代码为11位,并且波特率为9600b/s,因此,本设计采用方式3来接收条码扫描器发送的数据。REN设置为“1”(允许接收),综上所述本文设SCON的初始值为D0H,如下表所示: 表3.4.1-2 串行口控制寄存器 SM0 SM1 SM2 REN TB8 TB8 TI RI 1 1 0 1 0 0 0 0 3.4.2 定时器T1设置 串行口方式3的波特率由定时器T1的溢出率和SMOD所确定的。T1 工作方式设置为方式2,自动重装模式,可最大限度的减小误差。 当定时器T1作为串行口的波特率发生器时,串行口方式3 波特率由 下式确定: 在定时器T1为方式2时,方式字为: 表3.4.2-1定时计数器的初始化 CATE C/ M1 M0 0 0 1 0 GATE:表示 不参与控制; C/ :选择为定时方式; M1M0:选定定时器T1工作在方式2; 所以定时器TMOD控制字为20H。 根据条码扫描器串形通信波特率为9600b/s,选用的是方式3,晶体振荡器频率为11.0592MHz,SMOD设置为0,定时器T1中C/ =0,方式为2,预装初值为FDH。 晶震为11.0592MHz,波特率为9600b/s,单片机工作方式为串行方式3,T1是方式2,所以 X=256-[11.0592*106*(0+1)]/(384*9600)=253 把十进制253转换成十六进制数为FDH,所以定时器预装初始值为FDH。 3.4.3 控制过程[12] PS/2协议通信中串行口设置为方式3,它是一个11位帧格式的异步串行通信接口,TXD为数据发送端,RXD为数据接收端,方式3的波特率由定时器T1的溢出率所确定的。方式3中,一帧信息为11位,1位起始位,8位数据位,1位奇校验位以及1位停止位。 图3.4.3-1 PS/2口数据时序 本文采用的方式是串行口采集方式,在主程序将PS/2接口的Data线和Clock线初始化为空闲状态,即高电平状态时。使程序在PS/2接口的Data线为低电平时读取数据,当进行11次后说明一帧数据接收完毕,安排一个标志BF为后续程序表明,然后转向扫描码的判断和ASCII码的转换程序。扫描码和ASCII码完全不相同,所以接口设计 的一个重要任务是在扫描码和ASCII之间建立一种映射关系,将读取的扫描码转换为ASCII码。对于大多数扫描码而言,只要一个键被按下,就一定会产生一个通码;只要一个键被释放,就一定会产生一个断码。于是,对于一个键值而言,它的组成就是通码+断码。在第二套通码中,对于绝大多数键而言,通码为单字节,断码为双字节的。其规则为:断码的第一个字节是F0h,第二个字节是这个键的通码。由于扫描码无规律可循,因此由扫描码获得相应扫描值(字符键为其ASCII值)能够最终靠查表的方式获得,也可以直接对扫描的数据直接赋值。 基于上面单个字符的接收程序,解读原始数据,识别所收到的条码数据,判断是否为回车符(DCH),回车符作为一串条码接收完成标志,如果为回车符,则立即置位条码扫描结束标志位,中断返回后将转入对这一串条码数据的处理,将处理的数据输入到显示缓冲区,然后调用显示子程序,最终完成条码数据的扫描显示。在数据处理及调用显示子程序过程中,单片机串行口中断开放,时时等待下一条码数据接收。 接收数据是不是正确判断:单片机在接收每帧数据时,自动检验测试最后一位停止位数据是不是为1,只有停止位为1时才认为当前接收的一帧数据有效,否则丢弃该数据,单片机接收到一帧有效数据后,对奇偶校验位进行校验。由于条码扫描器数据帧为奇校验形式,如果当前8位数据位中“1”的个数为奇数时,那么RB8中的奇偶校验为一定为0,否则为1。因此可在软件设计中对此比较,如果不符合这个原则,那么将在显示器上显示ERROR,表示数据传输出现错误,可重新扫描数据传输,直到到数据传输正确为止,由于单片机抗干扰能力很强,这种错误出现的概率极低,稳定性很高。详细程序及电路原理图见附件。 第四章 系统软硬件设计及实验验证 4.1 硬件设计部分 通常条码阅读器的输出接口选用键盘口搭配PS,2协议或者串口搭配串行传输的SPI协议。其中串口相比键盘口,速度是可调整的。在对数据传输速度有要求的情况下,一般都使用串口。因为单片机本身集成了串口通信的IP核,串口的控制相当成熟并且相对简单点同时这样又能节约成本,所以本方案采用串口通信[13]。 4.1.1 电路各元件选型 根据设计内容以及要求,在Protel99SE上画出原理图。 从实训项目库中选取元件 ? AT89S51:单片机; ? U8:上拉电阻; ? LCD:LCD1602显示器; ? U2:振荡器; ? PS/2:串形接口; ? U3:单片机复位电路; ? POWER2.1、POWER2.2; 单片机AT89S51作为微控制器,RXD端接PS/2的DATA端,用来接收扫描器读取的信息;XTAL1、XTAL2分别为反相放大器输入和输出端,外接晶振和电容组成的振荡器,振荡器产生的时钟频率主要由晶振的频率决定,电容C1、C2的作用有两个:其一是使振荡器起振,其二是对振荡的频率f起微调作用(C1、C2变大,f变小);AT89S51的RST复位键接单片机复位电路,当振荡器运行时,在此引脚上出现两个机器周期的高电平将使单片机复位;P0口是数据总线脚,传输数据给LCD显示,地址总线接另一个上拉电阻;LCD的RS、R/W、E脚接AT89S51的P1.0、P1.1、P1.2脚,控制显示过程中写指令、写数据、读数据的过程;POWER2.1、POWER2.2在此过程中是提供电源。 4.1.2 电路焊接及需要注意的几点 根据设计好的硬件电路原理图,购买元器件,导线等,按照原理图合理布置元器件、布线、地线以及电源线。布好电路板后,检查各管脚是否完好,检查完毕、纠正错误并确认无误后小心仔细地将管脚焊接在电路板上。再次检查电路板,检测各条线路、管脚是否通路,检查完毕、纠正错误并确认无误后,将AT89S51单片机安装在电路板上。 通电后,对照原理图进行调试。如有错误,对照原理图使用万用表不断检查是不是有误,纠正错误,直至调试成功达到设计目标。 在硬件安装过程中,出现了很多问题,先是布局布线,这点很重要,因为这会影响到后面添加元件以及布线,还有就是影响美观。安装好后要对照原理图检查是不是完整,有没有漏接的,还有要注意原理图与元件的封装是有区别的,有些隐藏脚要接地和电源的,不能忘记。在这点上我便犯了错误,导致了LCD数码管显示一直不正常,且不稳定,在老师的帮助下,发现了这个错误并且纠正后显示便正常了。在焊接过程中也要注意不可以虚焊,也不能把不相干的焊盘焊在一起,那样会通电后会引起短路。还有一些小问题也不可以忽视,在认真仔细检查后调试终于无误,硬件工作状态正常良好。但是本次设计还是存在一些问题,比如扫描器扫描时LCD会显示乱码这样的一种情况,由于能力及时间有限,所以在这块还有待改进。 4.2 软件设计 软件的设计是本次毕业设计的另一个重要方面。它的好坏必然的联系毕业设计的成功与否。软件是用汇编完成的,需要能熟练的掌握汇编语 言,还要熟悉AT89S51单片机,下面作详细的介绍[14]: 程序流程图 图4.2-1 主程序 图4.2-2 中断处理子程序 4.2.1 主程序部分 主程序主要完成显示程序初始化,中断程序初始化,完成各功能模块程序的调度,使其协调工作。主程序如下: START :MOV SP,#35H MOV TMOD,#20H MOV TH1,#0FDH MOV TL1,#0FDH MOV SCON,#11010000B MOV PCON,#00H SETB EA SETB ES SETB TR1 SETB RS0 MOV R0,#40H ;存放扫描接收数据,首地址40H MOV R2,#00H CLR RS0 MOV R1,#60H ;存放转换后的扫描数据, MOV DAT_1602,#01H LCALL ENABLE LCALL CLR_DISBUFF DISP :LCALL LCD1602_INIT LCALL JISUAN MOV R1,#60H DISP0 :MOV DAT_1602,@R1 LCALL WR_DAT INC R1 CJNE R1,#70H,DISP1 MOV DAT_1602,#0C0H LCALL ENABLE AJMP DISP0 DISP1:CJNE R1,#80H,DISP0 MOV R1,#60H MOV DAT_1602,#80H LCALL ENABLE AJMP DISP 4.2.2 数据采集程序部分 数据采集部分是在中断服务子程序中完成的,首先对采集的数据来进行 判断,如果为结束帧DCH,则置中断标志位,否则保存通码,丢弃断 码。程序详见附录。 4.2.3 数据处理程序部分 在数据处理子程序中,首先检测标志位状态,如果一个条码数据扫描结束,则清除标志位,转入数据转换。由于扫描码源码无规律可循,并且绝大部分条形码为阿拉伯数字0-9,因此本文采用先判断后赋值的方式转换数据,并将转换后的数据依次保存到显示缓冲区,以便被显示子程序调用。在数据转换结束后,调用一次显示子程序。在数据处理过程中,串口中断始终处于开放状态,以等待下一条码数据的到来。程序详见附录。 4.2.4 显示程序部分 显示部分主要是对LCD1602的控制,单片机的P1.0、P1.1、P1.2与1602的RS、R/W、E的连接,显示子程序主要负责将转换的多个方面数据显示到显示屏。程序详见附录。 4.3 实验调试与结果验证 KeilC51既可以编辑、编译和调试汇编语言程序,也可以编辑、编译和调试C51程序,使一个基于Windows平台的集成开发环境。它不仅能模拟一般的程序运行,还能够仿真模拟I/O口、定时器/计数器、串行口及中断等单片机特有的功能部件。 调试过程中遇到很多问题,首先是硬件上的器件,在焊接过程中有的拐角焊接不牢,使的LCD1602显示器显示不了,然后用万用表测量,不停的测试使得硬件得以完成;最重要的是软件部分,首先程序中有一些错误,使得显示器显示不了数据或者是现实乱码,通过不断调试修改程序,使得硬件软件工作协调一致,最终完成了实物制作,经过条码扫描实验验证,该设计满足毕业设计的基本要求。部分验证图如下: 附录A:程序清单 RS EQU P1.0 RW EQU P1.1 E EQU P1.2 DAT_1602 EQU P0 SCAN_MARK EQU 50H ORG 0000H AJMP START ORG 0023H LJMP RXD_0 ORG 0030H START :MOV SP,#35H MOV TMOD,#20H MOV TH1,#0FDH MOV TL1,#0FDH MOV SCON,#11010000B MOV PCON,#00H SETB EA SETB ES SETB TR1 SETB RS0 MOV R0,#40H ;存放扫描接收数据,首地址40H MOV R2,#00H CLR RS0 MOV R1,#60H ;存放转换后的扫描数据, MOV DAT_1602,#01H LCALL ENABLE LCALL CLR_DISBUFF DISP :LCALL LCD1602_INIT LCALL JISUAN MOV R1,#60H DISP0 :MOV DAT_1602,@R1 LCALL WR_DAT INC R1 CJNE R1,#70H,DISP1 MOV DAT_1602,#0C0H LCALL ENABLE AJMP DISP0 DISP1:CJNE R1,#80H,DISP0 MOV R1,#60H MOV DAT_1602,#80H LCALL ENABLE AJMP DISP CLR_DISBUFF: MOV R1,#40H MOV A,# CLR_1: MOV @R1,A INC R1 CJNE R1,#80H,CLR_1 MOV R1,#60H RET JISUAN: MOV R0,#40H MOV R1,#60H JS0:MOV A,@R0 CJNE A,#93H,JS1 MOV A,#0 LJMP JS_OUT JS1:CJNE A,#8AH,JS2 MOV A,#1 LJMP JS_OUT JS2:CJNE A,#0CEH,JS3 MOV A,#2 LJMP JS_OUT JS3:CJNE A,#82H,JS4 MOV A,#3 LJMP JS_OUT JS4:CJNE A,#0C3H,JS5 MOV A,#4 LJMP JS_OUT JS5:CJNE A,#0C6H,JS6 MOV A,#5 LJMP JS_OUT JS6:CJNE A,#0CAH,JS7 MOV A,#6 LJMP JS_OUT JS7:CJNE A,#08FH,JS8 MOV A,#7 LJMP JS_OUT JS8:CJNE A,#8EH,JS9 MOV A,#8 LJMP JS_OUT JS9:CJNE A,#92H,JS_OUT MOV A,#9 JS_OUT:MOV @R1,A INC R1 INC R0 CJNE R0,#60H,JS0 MOV R1,#60H MOV R0,#40H RET RXD_0:PUSH PSW PUSH ACC CLR RI SETB RS0 MOV A,SBUF CJNE R2,#00H,RXD_2 CJNE A,#0DCH,RXD_3 MOV R0,#40H AJMP RXD_2 RXD_3:MOV @R0,A INC R0 RXD_2:INC R2 CJNE R2,#03H,RXD_1 MOV R2,#00H RXD_1:CLR RS0 POP ACC POP PSW RETI WR_DAT: SETB RS CLR RW CLR E ACALL BUSY SETB E RET LCD1602_INIT:MOV DAT_1602,#38H LCALL ENABLE ;MOV DAT_1602,#38H ;LCALL ENABLE MOV DAT_1602,#0CH LCALL ENABLE MOV DAT_1602,#06H LCALL ENABLE MOV DAT_1602,#80H LCALL ENABLE RET ENABLE:CLR RS ;送命令 CLR RW CLR E ACALL BUSY SETB E RET DELAY500MS:MOV R7,#5 D2:MOV R6,#40 D1:MOV R5,#20 D0:DJNZ R5,D0 DJNZ R6,D1 DJNZ R7,D2 RET BUSY:MOV P0,#0FFH CLR RS SETB RW CLR E NOP SETB E JB P0.7,BUSY ;判断忙标志 RET END
本文档为【[教材]单片机控制激光条码扫描器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关联的内容(国旗、国徽、党徽..)目的是配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
最新GB/T-15089-2001《机动车辆及挂车分类》PPT版剖析(共21张PPT)精品课件
最新GB/T-15089-2001《机动车辆及挂车分类》PPT版剖析(共21张PPT)精品课件
【完整版】2019-2025年中国轨交机务运用安全行业面临的挑战与机遇研究报告
2020版高考政治(鲁京津琼)一轮复习第八单元当代国际社会单元提升练八
2020版高考政治(鲁京津琼)一轮复习第八单元当代国际社会单元提升练八
INTERMEC - 乐鱼官方是赞助了大巴黎-乐鱼电竞游戏官网APP下载 - Honeywell
友情链接: - Symbol - 百度 - DATAMAX - 上海条码 - Bartender - 心理测评系统 - 乐鱼游戏官网