计算机硬件基础56h 07 常用数字接口电路_第1页
计算机硬件基础56h 07 常用数字接口电路_第2页
计算机硬件基础56h 07 常用数字接口电路_第3页
计算机硬件基础56h 07 常用数字接口电路_第4页
计算机硬件基础56h 07 常用数字接口电路_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机硬件基础第7章常用数字接口电路主讲:肖洁Tel:33013521

7.2定时器/计数器8253定时、计数概述8253的结构和引脚8253的六种工作方式8253的初始化8253的应用2一、定时、计数概述定时控制:在微机系统中极为重要.如:日历时钟的计时,喇叭声源,动态存储器的定时刷新计数:过程控制领域常用 构成:计数电路定时器:记录高精度晶振脉冲信号的个数,输出准确的时间间隔计数器:记录外设提供的具有一定随机性的脉冲信号,反映脉冲的个数,获知外设的某种状态.3定时功能的实现方法1、软件延时特点:利用CPU执行一个延时程序段实现缺点:占用CPU时间,定时精度不高,随系统时钟频率改变2、不可编程的硬件定时实现:采用分频器、单稳电路,简易定时电路特点:定时电路简单、定时时间可以在一定范围改变3、可编程的硬件定时实现:软件硬件相结合、用可编程定时器芯片构成特点:方便灵活,具有多种工作方式,能输出多种控制信号48253/8254定时计数器3个独立的16位计数器通道每个计数器有6种工作方式按二进制或十进制〔BCD码〕计数8254是8253的改进型52.引脚地址线计数器2计数器1数据线计数器0写信号读信号片选信号68253/8254内部结构和引脚8位,双向作用:装入初始值写入工作方式命令读出计数值接收总线信息控制芯片工作781.计数器〔16位〕预置寄存器GATECLKOUT减1计数器输出锁存器计数初值〔不变〕计数时,不断递减用于写入锁存命令,锁定当前计数值时钟输入信号在计数过程中,每输入一个时钟信号〔下降沿〕,计数器的计数值减1门控输入信号:控制计数器工作两种类型:电平控制,上升沿控制计数器输出信号当一次计数过程结束〔计数值减为0〕,产生一个输出信号98253计数启动方法软件启动:程序启动,第一个clk信号将计数初值送给计数器,第二个clk信号下降沿计数,实际脉冲个数比计数值多一个。硬件启动Gate由低电平变为高电平,clk上升沿采样,下降沿计数,实际个数与计数值有误差。不自动重复计数方式:自动重复计数方式:103、8253/8254的工作方式6种工作方式,由方式控制字确定每种工作方式的过程类似设定工作方式设定计数初值硬件启动计数初值进入减1计数器每输入一个时钟计数器减1的计数过程计数过程结束熟悉每种工作方式的特点才能根据实际应用问题,选择正确的工作方式11方式0:计数结束中断方式计数期间:GATE=0,禁止计数,GATE=1,继续计数特点:计数器只计数一遍。当计数单元为零,OUT=1,作为中断请求信号①②④③⑤①设定工作方式②设定计数初值③计数值送入计数器④计数过程⑤计数结束12方式0:计数结束中断方式CLKOUT43210N=4WRCW=10GATE=1N=5WRCW=10N=3OUT54321GATE=1计数中改变计数值32OUTGATE43210N=4WRCW=10启动计数后GATE=03计数过程中GATE=0,暂停计数,GATE=1连续计数计数过程中改变计数值,立刻按新的计数值计数一次写入计数值只有一次有效计数,计数值为N,计数N+1次13方式1:〔硬件〕可重复触发的单稳态触发器①②⑤④⑥①设定工作方式②设定计数初值③③硬件启动④计数值送入计数器⑤计数过程⑥计数结束⑦⑦再次触发⑧⑧再次计数负脉冲的宽度=计数器初值N×时钟CLK的周期

一次写入计数值屡次计数,计数值为N,计数N次14方式1:〔硬件〕可重复触发的单稳态触发器CLKGATE计数中重复触发OUTGATE321321

GATE=1启动计数,重复启动重复计数

2100321N=2WRCW=12OUTGATEN=3计数中改变计数值计数过程中改变计数值,下次启动按新的计数值计数15方式0:GATE=1计数器只计数一遍。计数单元为零,OUT=1,作为中断请求信号,计数过程中GATE=0,暂停计数,GATE=1连续计数;计数过程中改变计数值,立刻按新的计数值计数方式1:GATE=1启动计数,重复启动重复计数;计数过程中改变计数值,下次启动按新的计数值计数,计数结束,输出OUT=116方式2:频率发生器〔分频器〕①②⑤④⑥①OUT变为高电平③②设定初值③开始计数⑤计数到1⑥一个时钟周期后,重新计数写入计数值开始计数。周期性计数17方式2CLKOUT32132N=3WRCW=14GATE=113OUTGATEN=3WRCW=14启动计数后GATE=0323213N=4WRCW=14N=3OUTGATE=1计数中改变计数值4313212计数过程中GATE=0,暂停计数,GATE=1重新计数改变计数值,下一周期用按新的计数值计数18方式3:方波发生器当N为偶数时,OUT输出对称方波当N为奇数时,OUT输出不对称方波前〔N+1〕/2个计数期间,高电平后〔N-1〕/2个计数期间,低电平19方式3:方波发生器(特例)计数过程中GATE=0,终止计数,GATE=1重新计数计数过程中改变计数值,当前半周结束后按新的计数值计数假设计数初值变化,且获得硬件启动,那么立即按新的计数开始。N=4WRCW=16N=3OUTGATE=1计数中改变计数值4313212CLKN=5WRCW=16GATE=1奇计数值OUT543254120方式4:软件触发选通信号1〕一次写入计数值只有一次有效计数。2〕计数过程中GATE=0,禁止计数,GATE=1连续计数。3〕计数过程中改变计数值,立刻按新的计数值计数CLKOUT32100N=3WRCW=16GATE=1启动计数200GATE=0启动计数OUT3332001GATEN=4WRCW=16N=2OUTGATE=1计数中改变计数值432120021方式4方式4和方式0相似CLKOUT32100N=3WRCW=16GATE=1启动计数200CLKOUT43210N=4WRCW=10GATE=1方式0方式422方式2重复计数,方式4不重复计数方式2输出负脉冲周期=N*Tclk,方式4输出负脉冲周期=〔N+1〕*TclkCLKOUT32100N=3WRCW=16GATE=1启动计数200CLKOUT32132N=3WRCW=14GATE=113方式2方式423方式5:硬件触发选通信号1〕一次写入计数值,不重复计数。2〕GATE上升沿启动计数,重复启动重新计数。3〕计数过程中改变计数值,下次启动按新的计数值开始计数CLKOUT33321N=3WRCW=16GATE启动计数00GATEGATE重复启动计数OUT323210GATEN=4WRCW=16N=2OUT计数中改变计数值431021GATE224方式5和方式1相似CLKOUT33321N=3WRCW=16GATE启动计数00GATECLKGATE计数中重复触发OUTGATE321321

方式1方式525各种工作方式的输出波形方式0方式1方式2方式3方式4方式50N0N0N0/N110NN/2N/20/N0N01N01N01计数结束中断

硬件可重复触发

分频器

方波发生器

软件触发选通信号

硬件触发选通信号

26

工作方式启动计数中止计数自动重复更新初值输出波形0软件G=0否立即有效延时时间可变的上跳沿1硬件/否下一轮有效宽度为N*T的单一负脉冲2软硬件G=0是下一轮有效周期为N*T,宽度为T的连续负脉冲3软硬件G=0是下半轮有效周期为N*T的连续方波4软件G=0否立即有效宽度为T的单一负脉冲5硬件/否下一轮有效宽度为T的单一负脉冲各种工作方式小结27时钟脉冲的上升沿采样门控信号GATE总结:门控信号GATE28计数开始的时刻注意:1〕CPU写入8253的计数初值只是写入了预置存放器2〕之后到来的第一个CLK输入脉冲才将预置存放器的初值送到减1计数器3〕从第二个CLK信号的下降沿,计数器才开始减1计数CLKOUT32100N=3WRCW=16GATE=1启动计数200298253/8254的编程初始化编程的必要:8253加电后的工作方式不确定8253必须初始化编程,才能正常工作初始化编程的步骤:写入控制字;写入计数初值。初始化编程的方法:控制字写入控制存放器初始化编程的原那么:必须先写控制字初始值设置必须遵守控制字规定〔高位,低位〕300二进制1十进制00计数器锁存命令

01只读写低字节10只读写高字节11先读写低字节后读写高字节000方式0001方式1010方式2X11方式3100方式4101方式57.2.38253控制字P291SC1SC0RW1RW0M2M1M0BCDD7D6D5D4D3D2D1D0读写格式工作方式数制00计数器001计数器110计数器211非法控制字写入控制字I/O地址〔A1A0=11〕将选中计数器当前计数值锁到相应锁存器中31例如:某个8253的计数器0的端口地址是40H设置计数器0为方式0,采用二进制计数,先低后高写入计数值方式控制字:00110000B=30Hmoval,30hout43h,al;写入控制端口:43H7.2.38253控制字SC1SC0RW1RW0M2M1M0BCDD7D6D5D4D3D2D1D0000011

00322.写入计数值1〕计数值范围〔1〕选择二进制时:0000H~FFFFH最大值:0000H,代表65536〔2〕选择十进制〔BCD码〕:0000~9999最大值:0000,代表100002〕写入方法:计数值写入计数器各自的I/O地址3〕举例:333.读取计数值对8位数据线,读取16位计数值需分两次计数在不断进行,应将当前计数值先行锁存,再读取:写控制字地址:写入锁存命令读计数器I/O地址:读取锁存的计数值读取计数值,要注意读写格式和计数数制342.写入计数值例:某个8253的计数器0、1、2端口、控制端口地址为40H~43H。设置计数器0采用二进制计数,写入计数初值:1024〔=400H〕movax,1024;计数初值:1024〔=400H〕out40h,al;写入计数器0地址:40H;写入低字节计数初值moval,ahout40h,al;写入高字节计数初值计数长度为11时,必须先写入低字节再写入高字节35五、8253应用举例例:用8253设计一定时器,每5s输出一个负脉冲。设外部时钟频率为2.5MHz。分析计数初值:采用两级计数器:计数器0输出OUT0接计数器1的输入CLK1计数器0的计数值为50000〔0C350h〕计数器1的计数值为250(0FAH)36电路连接——工作方式计数器0:方式3-方波控制字为0011

0110B计数器1:方式2-分频器控制字为0101

0100B37工作方式0号计数器地址:0FF04H 1号计数器地址:0FF05H2号计数器地址:0FF06H 控制口地址:0FF07H38程序MOVAL,36H;00110110BMOVDX,0FF07HOUTDX,AL;设置计数器0的工作方式MOVAL,50H;01010000MOVDX,0FF04HOUTDX,ALMOVAL,0C3HOUTDX,AL;送计数器0的初值MOVAL,54H;01010100BMOVDX,0FF07HOUTDX,AL;设置计数器1的工作方式MOVAL,250MOVDX,0FF05HOUTDX,AL;送计数器1的初值39一生产线,每通过50个工件,扬声器响5秒种,频率为2000Hz。设8253地址为40H~43H,8255的A口地址为80H例2:2.5Mz8255PA0+5VINTOUT0+5V光敏电阻OUT1驱动扬声器工件移动方向CLK0GATE0CLK1GATE1光源T0:方式2,计数工件,计数值50,BCD计数,控制字00010101B=15HT1:方式3,驱动扬声器输入2.5MHZ,产生2000HZ的频率,计数值为2500000/2000=1250,控制字:01110111B=77H40 MOV AL,15H ;#0方式字 OUT 43H,AL MOV AL,50 ;#0计数值 OUT 40H,AL MOV AL,77H ;#1方式字 OUT 43H,AL MOV AL,0E2H ;计数低位 OUT 41H,AL MOV AL,04H ;计数高位 OUT 41H,AL STI ;开中断 LOP: JMP LOP ;等待中断中断效劳程序: MOV AL,01H ;启动喇叭 OUT 80H,AL CALL DL5S ;延时 MOV AL,00 OUT 80H,AL ;关喇叭 IRET ;中断返回程序:8253地址为40H~43H8255A口地址为80HT0:方式2计数值50控制字00010101BT1:方式3计数值为1250控制字01110111B413.8253定时功能的应用设某应用系统中,系统提供一个频率为10KHz的时钟信号,要求每隔10ms完成一次扫描键盘的工作。为了提高CPU的工作效率,采用定时中断的方式进行键盘扫描。在系统中,采用8253定时器的通道0来实现这一要求。将8253芯片的CLK0接到系统的10KHz时钟上,OUT0输出接到CPU的中断请求线上,8253的端口地址为10H~13H423.8253定时功能的应用〔1〕选择工作方式。每隔10ms完成一次动作→动作频率为100Hz重复操作→工作方式2〔2〕确定计数初值。ƒCLK0=10KHz,那么TCLK0=0.1ms,所以,计数初值 N=TOUT0/TCLK0=10ms/0.1ms=100433.8253定时功能的应用3〕初始化编程。通道0的方式控制字为00010100B,初始化程序段如下:MOVAL,14H ;通道0,写入初值低8位,高8位置0,方式2,二进制计数OUT13H,AL ;写入方式字到控制字存放器MOVAL,64HOUT10H,AL ;写入计数初值低8位到通道0447.3可编程并行接口8255并行接口是在多根数据线上,以字节/字为单位与I/O设备交换数据457.3并行接口电路8255具有多种功能的可编程并行接口电路芯片1〕最根本的接口电路:三态缓冲器,锁存2〕与CPU间、与外设间的接口电路:状态存放器,控制存放器3〕端口的译码和控制电路、中断控制电路3个端口,共40个外设引脚三种输入输出工作方式46主要内容:内部结构和引脚8255A的工作方式8255A的控制字8255A的编程8255A的应用477.3.18255引脚结构数据总线缓冲器内部控制线内部数据线D0~D7A组控制A组端口AA组端口C上部B组控制B组端口BB组端口C下部读写控制逻辑PC0~PC3PB0~PB7PC4~PC7PA0~PA7RDWRA0A1CSRESET常作数据端口,功能最强大支持工作方式0、1、2数据端口支持工作方式0、1可作数据、状态和控制端口仅支持工作方式0分两个4位,每位可独立操作控制最灵活,最难掌握输出可锁存,输入无锁存接收CPU写入的控制字规定两组的工作方式8255A与CPU之间的数据接口传送控制,状态和数据信息接受CPU的控制命令,向片内各部件发出操作命令481.与处理器接口A1A0输入操作(CPU读)00010数据总线通道A01010数据总线通道B10010数据总线通道C00100数据总线通道A01100数据总线通道B10100数据总线通道C输出操作(CPU写)11100数据总线控制字寄存器1数据总线三态11010非法条件断开功能110数据总线三态492.8255A的外部引脚VCCGND...D7D0数据总线A1A0RESET控制线电源线CPU接口外设接口通道A...PA7PA0通道B...PB7PB0通道C...PC7PC0432140371825141516171312111034...27986535368255APPI507.3.28255A的工作方式方式0:根本输入输出方式 适用:无条件传送、查询方式方式1:选通输入输出方式 适用:查询、中断方式、方式2:双向选通传送方式适用:双向传送数据的外设适用:查询、中断方式A口可以工作于方式-,方式1,方式2;B口只能工作于方式0,方式1;C口只能工作于方式0511.方式01〕输入时序datadata输入端口D0~D7RDCS,A1,A08255A的数据缓冲作用521.方式02〕输出时序8255A锁存CPU输出给外设的数据WRdatadata输出端口D0~D7CS,A1,A0532.方式1-输入1〕A端口作输入数据选通信号表示外设已经准备好数据输入缓冲器满信号表示A口已经接收数据中断请求信号请求CPU接收数据PC4PC5PC3PA7~PA0INTEAIBFAINTRASTBA中断允许触发器PC4 置位=1中断允许复位=0中断禁止542〕A口方式1输入PORTA8位输入PC4IBFPC3INTRAPC6,7I/OPC5STBINTESTBIBFINTRARD外设数据1下降沿锁存数据到A口,IBF输出通知外设,数据未取走STB12STB2上升沿锁存INTR中断申请,INTE(PC4置位)33下降沿CPU读A口数据,INTR中断复位。RD44上升沿CPU读结束,IBF复位。可进行新一轮数据输入。RD552.方式13〕B端口,输入引脚PC2PC1PC0PB7~PB0INTEBIBFBINTRBSTBB数据选通信号表示外设已经准备好数据输入缓冲器满信号表示B口已经接收数据中断请求信号请求CPU接收数据中断允许触发器PC2 置位=1中断允许复位=0中断禁止564〕方式1B口输入操作当外设将数据送到8255的接口上时〔1〕#STB=0将数据锁存于口的数据锁存器中。〔2〕#STB使IBF=1,产生中断请求信号INTR。〔3〕CPU响应中断,读8255,将数据读入〔4〕CPU读走数据后,IBF=0,表示输入缓冲器已空,可以再次接收外设提供的下一个数据。PORTB8位输入PC2IBFPC0INTRBPC6,7I/OPC1STBINTESTBIBFINTRARD外设数据1下降沿锁存数据到B口,IBF输出通知外设数据未取走STB12STB2上升沿锁存INTR中断申请,INTE(PC2置位)33下降沿CPU读B口数据,INTR中断复位。RD44上升沿CPU读结束,IBF复位。可进行新一轮数据输入。RD575〕方式1中断控制中断控制:INTEINTE=1,允许中断INTE=0,禁止中断选通输入方式下

端口A的INTEA:对应PC4端口B的INTEB:对应PC2582.方式1——输出1〕A端口引脚外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据PC6PC7PC3PA7~PA0INTEAOBFAINTRAACKA中断允许触发器PC6

置位=1,中断允许复位=0,中断禁止59当CPU输出数据,并将数据锁存到输出缓冲器中时,(1)#OBF有效:通知外设接收数据。(2)外设将数据取走,#ACK=0,使#OBF无效同时产生中断请求〔INTR=1〕,请求CPU输出下一个数据2〕A端口输出时序数据送入A口,OBF=0通知外设取数,INTR准备中断。1WR1ACK2=0,置位OBF,取走数据。23ACK3上升沿,INTR=1,进行下轮数据输出。数据输出OBFINTRAWRACKdataINTR=1的条件:#ACK=#OBF=1,且允许中断602.方式1输出PC2PC1PC0PB7~PB0INTEBOBFBINTRBACKB外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据中断允许触发器3〕B端口引脚61当CPU输出数据,并将数据锁存到输出缓冲器中时,(1)#OBF有效:通知外设接收数据。(2)外设将数据取走,#ACK=0,使#OBF无效同时产生中断请求〔INTR=1〕,请求CPU输出下一个数据PORTB8位输出PC1PC0INTRAPC4,5I/OPC2OBFINTEACKOBFINTRB数据输出WRACK数据送入B口,OBF=0通知外设取数,INTR中断准备。1WR1ACK2下降沿置位OBF,数据取走。23ACK3上升沿INTR中断申请,进行下轮数据输出。4〕B端口时序628255方式1的特点1)选通输入/输出方式需设置专用的联络信号线或应答信号线----------联络数据的输入输出都有锁存能力。2)PA和PB为数据口,PC口的大局部引脚分配作专用的联络信号,用户不能再指定做其它用途。3)各联络信号之间有固定的时序关系4)单向传送一次初始化只能设置在一个方向上传送,不能同时作两个方向的传送。633.方式2双向方式1)特点方式1的选通输入功能+输出功能(1)可指定PA口既作输入口又作输出口;(2)只适合PA口(3)PC中有5根线配合PA口工作。〔PC3-PC7配合PA)(其他的可任意规定为输入或输出)642)方式2双向引脚PC6PC7PC3PA7~PA0INTE1OBFAINTRAACKAPC4PC5IBFASTBAINTE2用PC6设置INTE1〔输出〕用PC4设置INTE2〔输入〕输入和输出中断通过或门输出INTRA信号65D7D6D5D4D3D2D1D0方式1输入I/OI/OIBFAINTEAINTRAINTEBIBFBINTRB方式1输出OBFAINTEAI/OI/OINTRAINTEBOBFBINTRB方式2双向OBFAINTE1IBFAINTE2INTRA×××3)端口C的状态字A组B组664)输出过程(1)当OBFA=1〔输出缓冲区空〕,且INTE1=1时,8255向CPU发出中断请求〔PC3上INTRA〕。(2)CPU响应中断,向8255输出数据,也可查询OBFA状态当OBFA=1时,向8255发送数据。8255收到数据后,使OBFA=0,撤消中断请求INTRA,消除OBFA状态,OBFA信号通知外设来取数据。外设收到OBFA信号后,发出ACKA,8255送出数据677.3.38255A的控制字1、工作方式控制字B组

端口C(低4位)

1=输入,0=输出

端口B

1=输入,0=输出

方式选择

0=方式0,1=方式1A组

端口C(高4位)

1=输入,0=输出

端口A

1=输入,0=输出

方式选择

00=方式0,01=方式1,1=方式2方式设置标志

1=有效D7

D6D5D4D3

D2D1D068举例例1:MOVAL,10010101BOUTCWR,AL;CWR为控制字存放器地址那么PC0-PC3:输入B口:方式1输出A口:方式0输入PC4-PC7:输出D7

D6D5D4D3

D2D1D069方式选择控制字:10101010B=AAH设控制口地址为303HMOV DX,303H ;8255A的控制口地址MOV AL,0AAH ;控制字OUT DX,AL ;控制字写入控制端口假设A口:方式1,输出,B口:方式0,输入C口高4位:输入,C口低4位:输出例2:D7

D6D5D4D3

D2D1D070二.8255A的控制字2.端口C的置位/复位控制字

D7

D6D5D4D3D2D1

D0位的置位/复位

1=置位,0=复位位选择

D3D2D1通道C位按位置位/复位控制

标志0=有效000位0001位1010位2011位3100位4101位5110位6111位7不使用

设置为00071举例

置位PC3MOVAL,0

0000111BOUTCWR,AL

复位PC3MOVAL,0

0000110BOUTCWR,AL

D7

D6D5D4D3D2D1

D0728255的控制字编程举例:设A、B、C数据口地址分别位60H、61H、62H、控制口端口地址63H1:A口方式0,输出、B口方式0,输入,C口高4位输出,C口低4位入MOVAL,10000011BOUT63H,AL2:PC7置1,PC3置0MOVDX,63HMOVAL,0000,1111B;PC7置1OUTDX,ALMOVAL,0000,0110B;PC3置0OUTDX,AL73四、8255A的编程1、初始化编程2、通过数据端口对外设数据进行读写741.初始化编程例如:假设控制端口为FFFEHA端口:方式1输入C端口上半部:输出,C口下半部:输入B端口:方式0输出方式控制字:10110001B=B1H初始化的程序段:movdx,0fffeh ;

moval,0b1h ;方式控制字

outdx,al

;送到控制端口752.读写数据端口输入时,执行IN指令从输入设备得到外设数据输出时,执行OUT指令把CPU的数据送给输出设备8255A具有锁存输出数据的能力对输出方式的端口同样可以输入不是读取外设数据读取的是上次CPU给外设的数据利用8255A的输出锁存能力,可实现按位输出控制762.读写数据端口读写数据端口输入时,执行IN指令从输入设备得到外设数据输出时,执行OUT指令把CPU的数据送给输出设备8255A具有锁存输出数据的能力对输出方式的端口同样可以输入不是读取外设数据读取的是上次CPU给外设的数据利用8255A的输出锁存能力,可实现按位输出控制772.读写数据端口对输出端口B的PB7位置位,其他位保持不变movdx,0fffah ;B端口假设为FFFAHinal,dx ;读出B端口原输出内容oral,80h ;使PB7=1outdx,al ;输出新的内容78例1A口地址40H,A口工作在方式0输出,

B口工作在方式1输入,PC5输出为1。方式字:10000110B复位置位字:00001011B初始化程序:MOVAL,10000110BOUT 43H,ALMOVAL,00001011BOUT 43H,AL79五、8255A的应用应用在IBMPC/XT微机上应用于打印机接口电路连接简易键盘驱动LED数码管……807.3.4键盘的工作原理最简单的键盘如下图,其中每个键对应I/O端口的一位。没有键闭合时,各位均处于高电平;当有一个键按下时,就使对应位接地而成为低电平。这样,CPU只要检测到某一位为“0〞,便可判别对应键已经按下。缺点:当键盘上的键较多时,占用的I/O端口太多81键盘的工作原理通常使用的键盘是矩阵结构的。如图这个矩阵分为3行3列,如果键4按下,那么第1行和第1列线接通而形成通路。矩阵式键盘工作时,就是按行线和列线的电平来识别闭合键的。82键的识别方法为了识别键盘上的闭合键,通常可以采用两种方式逐行扫描法和行列反转法。行扫描法:由程序对键盘进行逐行扫描,通过检测到的列输出状态来确定闭合键。线反转法:通过行列颠倒两次扫描来识别闭合键。83键的识别方法如图,一个8行×8列组成的键盘。行线与8255的B端口相连,列线与8255的A端口相连。CPU使8255的B端口某一位为0,相当于将该行线接地;某位为1,相当于将该行线接高电平。84按键识别行扫描法识别按键的原理如下:1〕使所有行线为低电平,然后读入列线值并进行检查。如果列线有一位为低,那么说明必有键被按下。2〕使第0行输出低电平,然后读入列线值并进行检查。如果有某列线变为低电平,那么表示第0行和此列线相交的位置上的键被按下。如果没有任何一条列线为低电平,那么说明第0行没有任何键被按下。3〕将第1行接低电平,然后读入列线值并进行检查。检测列线是否有变为低电位的线。……85工作步骤检查是否有键去抖动:延时20ms左右被按键识别从第0行第0列开始,顺序对所有按键编号通过逐行扫描确定被按键的编号产生键码根据键编号查找键盘编码表,获得与被按键功能对应的键码。86举例假定有一个3,4的矩阵键盘通过8255A与微机相连。8255A的A定义为输出口,与键盘行线相连;B口定义为输入口,与键盘列线相连。PA0PA1PA2PB3PB2PB1PB08255ACPU行0行1行20列3列+5v1111111011111101`11111011PAPB1111111087设8255的A口地址为40H,B口地址为41H,控制存放器地址为43HMOVAL,82H;8255A初始化OUT43H,AL;方式0,A口输出,B口输入;检查是否有键按下BEGIN:MOVAL,00h ;使各行扫描线为0OUT40H,ALWAIT:INAL,41H ;读列数据ANDAL,0FH ;屏蔽无关位CMPAL,0FH ;比较列线是否为0JZWAIT ;无0,等待按键编程:PA0PA1PA2PB3PB2PB1PB08255ACPU行0行1行20列3列+5v88第二步是判断哪一个键被按下了。首先,将计数值设置为行数,然后设置扫描初值。扫描初值11111110使第0行接低,其他行为高。输出扫描初值后,马上读取列线的值,看是否有列线处于低。假设无,那么将扫描初值循环左移一位,变为111111101,这样使第1行接低,其他行为高。同时,计数值减1,如此下去,一直查到计数值为0。如果在此过程中,查到有列线为低,那么组合此时的行值和列值,进行下一步查找键值代码的工作。程序段如下:89MOVCX,7FFH;延时去抖动L0:LOOPL0;识别被按下的键ST:MOVBL,03H;行数送BLMOVBH,04H;列数送BHMOVAL,0FEH;扫描码,0行为0MOVCL,0FH;列线屏蔽码送CLMOVCH,0FFH ;置键号初值为:-1L1:OUT40H,AL;扫描一行ROLALMOVAH,AL;修改扫描码并送AH保存INAL,41H90ANDAL,CLCMPAL,CL;读入列线值,检查是否有列填线为0JNZL2;有列线为0时转去找该列线ADDCH,0BH;否那么,指向该行末列键号MOVAL,AH;取回扫描码DECBLJNZL1;行数减1,未完成转下一行JMPBEGINL2:INCCH;该列非0,检查下一列RCRALJCL2;该列非0,检查下一列MOVAL,CH;该列为0,键号送ALJMPKEYTABLE;转查找键盘编码表子程序获取与键功能对应的键码912.行列反转法行列反转法也是识别按键的常用方法。它的原理为:1〕判断是否有键按下〔同行扫描法〕。2〕将行线工作在输出方式,将列线工作在输入方式,CPU通过8255的A端口往各行线上全部送低电平,然后从8255的B端口读入列线值。3〕程序再对两个端口进行行列反转,使接行线的A端口设为输入方式,将列线的B端口设为输出方式。然后将刚刚读得的列值从列线所接端口输出,再读取行线的输入值,那么,闭合键所在的行线值必定为0。这样,当一个键被按下时,必定可以读得一对唯一的行值和列值。92一、键盘接口1.接口功能1〕去抖动;2〕防串键3〕按键识别;4〕产生键码键盘分类编码键盘:有实现接口主要功能所必需的硬件电路非编码键盘:只简单地提供按键开关的行列矩阵931〕去抖动每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为5~20ms〔1〕抖动现象处在稳定接通或稳定断开状态,才能保证识别正确无误〔2〕去抖动软件延时必要性:方法:硬件电路软件延时根本思想:在检测到按键按下或释放时,记录按键的状态,延时10ms~20ms,再次检测按键的状态。假设与前一次的状态相同,那么按键的状态已稳定,可进行处理否那么,表示键的状态不稳定,可能是误动作,不应被处理942〕防串键解决的问题:多个键同时按下前一按键没有释放又有新按下方法:①双键锁定:当检测到有两个或两个以上的键被按下时,只把最后释放的键当作有效键,并产生相应键码

N键轮回:当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码95LED数码管及其接口发光二极管LED:最简单的显示设备组成:由7段LED应用:单板微型机、微型机控制系统数字化仪器可以显示:内存地址和数据等961.LED数码管的工作原理hgfedcba主要局部:7段发光管显示:0~9A~F个别特殊字符〔-、P等〕972.LED数码管的结构阳极+5Vabcdefgh阴极abcdefgh共阳极共阴极983.字形码1〕字形〔段码〕:从接口输出的数码点亮所需的段〔1〕共阴极:接高电平〔亮〕〔2〕共阳极:接低电平〔亮〕2〕对应:a~g对应D0~D6,p对应D73〕七段数码管:最高位可为0,可为1993.单个LED数码管的显示LEDTB DB3FH,06H,5BH,…… ;显示代码…… MOVAL,1;AL←要显示的数字 MOVBX,OFFSETLEDTB XLAT ;换码:AL←DS:[BX+AL] MOVDX,PORT OUTDX,AL ;输出显示

1004.多个LED数码管的显示8个数码管:用2个8位输出端口控制硬件:用公用的驱动电路来驱动各数码管软件:用扫描方法实现数码显示1011021〕位控制端口电路作用:控制哪个〔位〕数码管显示原理:当位控制端口的控制码某位为低电平时,经反相驱动,在相应数码管的阳极加上高电平,该数码管显示数据位控制:Di=0,相应位发光1032〕段控制端口电路作用:控制哪个段显示,决定具体显示什么数码原理:送出显示代码到数码管相应段〔8个数码管共用〕段控制:Di=0,相应段发光通过位、段控制端口的共同作用确定哪个数码管显示什么数码1043〕显示程序LEDDTDB8DUP(0) ;数码缓冲区;主程序MOVSI,OFFSETLEDDT CALLLEDDISP ;调用显示子程序,获取显示代码LEDDISP PROCPUSHAXPUSHBXPUSHDXMOVBX,OFFSETLEDTBMOVAH,0FEH ;指向最左边数码管LED1:LODSB ;取出要显示的数字 XLAT;得到显示代码:AL←CS:[BX+AL] MOVDX,SEGPORT;SEGPORT为段控制端口1053〕显示程序;数码显示 OUTDX,AL ;送出段码 MOVAL,AH ;取出位显示代码 MOVDX,BITPORT ;BITPORT为位控制端口 OUTDX,AL ;送出位码 CALLDELAY ;实现数码管延时显示;显示下位数码 ROLAH,1 ;指向下一个数码管 CMPAH,0FEH ;最右边的数码管? JNZLED1 ;显示下一个数字 POPDX POPBX POPAX RET ;8位数码管都显示LEDTB DB0C0H,0F9H,……LEDDISPENDP1063〕软件延时TIMER=10 ;延时常量DELAYPROC PUSHBX PUSHCX MOVBX,TIMER DELAY1: XORCX,CX;外循环:TIMER确定的次数DELAY2: LOOPDELAY2 ;内循环:21

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论