




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7章 单片机扩展与接口技术,7.1 单片机I/O扩展7.2 单片机的存储器扩展7.3 单片机键盘接口技术7.4 单片机显示器接口技术7.5 单片机与A/D、D/A转换器的接口7.6 单片机与PC机的接口本章小结练习与思考题,7.1 单片机I/O扩展MCS-51系列单片机在引脚安排上考虑了对外总线扩展问题,在具有4个8位I/O口的封装中,以P0口的8位口线作为与外部接口的数据总线和地址总线的低8位,以P2口的8位口线作为地址总线的高8位,当外部扩展ROM、RAM或一些与数据、地址有关的芯片时这些I/O口将被占用。另外,由于P3口引脚大多兼有控制总线功能,完全用于I/O数据交换的引脚只剩下P1口
2、。针对上述口线不足的情况,MCS-51系列单片机在使用中可能需要进行I/O口线扩展,具体实施方法如下。,7.1.1 输入口线的扩展在第6章有关单片机串行通信的内容中曾提到,在串行口方式0条件下,MCS-51单片机与移位寄存器配合可以扩展一个或多个并行I/O口。考虑到串行口可能被占用的情况,也可以利用P1的3根口线模拟串行口实现与外部扩展芯片接口。这里给出了由单片机AT89S51与2片CMOS并入串出移位寄存器CD4014组成的并行输入口扩展电路,电路原理如图7-1所示。该电路还可以在数据传输速率允许的情况下进行级联扩展,用于扩展更多的并行数据输入口。,图7-1 输入口线扩展电路及CD4014芯
3、片引脚布置,图7-1输入口线扩展电路的工作原理是,通过单片机的P1.0口线向CD4014发出高电平,使CD4014的引脚置高,外部输入数据经由CD4014的P1P8引脚进入内部移位寄存器。再通过单片机的P1.0口线发出低电平,使CD4014的引脚为低,转成串行移位模式。利用单片机P1.1引脚发出先高后低的电平变化模拟脉冲波形,依次向CD4014的CLK引脚发出移位脉冲。,CD4014内部数据在脉冲上升沿出现后发生移位,数据由第Qn移向第Qn+1位(n表示CD4014内部数据对应位,n=17),经8个移位脉冲后第(1)片CD4014的所有输入数据全部由Q8端移出。在两片CD4014之间通过后级的
4、Q8端向前级的SI端传递数据。当第(1)片的数据逐位移至高位后,第(2)片的数据按位依次补入。单片机通过P1.2口线以位传送的方式取入CD4014 Q8引脚的数据。,使用图7-1输入口线扩展电路时,应当首先为输入口线准备输入数据存放寄存器,对应图中扩展规模可以选用片内数据存储器RAM中的2个寄存器单元与之逐位对应。例如选用RAM中的30H、31H单元的应用程序,则可编写口线输入程序如下:,I_DT1:MOVR0,#30H;建立内存区地址指针 CLRP1.0 ;清P1.0口 CLRP1.1 ;清P1.1口 CLRP1.2 ;清P1.2口 MOV R7,#08H ;每个扩展口为8位 MOV R6,
5、#02H ;扩展2个8位数入口 SETB P1.0 ;启动并转串输入 NOP ;延时 CLRP1.0 ;转串行移位传送I_DT2:MOV C,P1.2 ;输入1位数据 RLCA ;数据送累加器,SETBP1.1 ;产生一个CLK脉冲上升沿 NOP ;延时 CLRP1.1 ;产生一个CLK脉冲下降沿 DJNZ R7,I_DT2 ;传送完8位数据? MOV R0,A ;存放8位输入数据 INCR0 ;指向下一个存储地址 DJNZ R6,I_DT2 ;传送完2个8位数据?,7.1.2 输出口线的扩展利用P1口的3根口线模拟串行口也可以达到扩展并行输出口线的目的。以下是单片机AT89S51与2片CMO
6、S串入并出移位寄存器芯片CD4094组成的并行输出口扩展电路,电路原理如图7-2所示。该电路还可以在输出数据传输速率允许的情况下进行多级CD4094级联扩展,用于满足输出数据口线数量的需求。,图7-2 输出口线扩展电路图及CD4094芯片引脚布置,图7-2输出口线扩展电路的工作原理是,通过单片机P1.0口线输出低电平将CD4094的STB引脚清0,禁止串行数据转为并行输出。利用单片机P1.1引脚发出先高后低的电平变化产生模拟的移位脉冲波形,依次向CD4094的CLK引脚发出移位脉冲。在每个移位脉冲波形的上升沿,将需要传送的1位数据经单片机P1.2口线送至第(1)片CD4094的数据输入端DAT
7、A,数据进入CD4094的内部移位寄存器后在每个脉冲上升沿都有一次由Qn向 Qn+1的移位(n表示CD4094内部数据对应位,n=17)。,如果单片机逐次向P1.2口线送出数据,则经过8个移位脉冲后就会有1个字节的数据送入第(1)片CD4094。两片CD4094之间通过第(1)片的串行输出端QS和第(2)片的串行输入端DATA传递数据,进入第(1)片的数据超出1个字节后,将按位依次进入第(2)片CD4094。使用图7-2输出口线扩展电路时,单片机应事先准备输出数据存放寄存器。对应图中的扩展规模可以选用片内数据存储器RAM中的2个单元与之逐位对应,如选用30H、31H单元,则可编写口线输出程序如
8、下。,O_DT1:MOV R0,#30H ;建立内存区地址指针CLRP1.0 ;清P1.0口CLR P1.1;清P1.1口CLR P1.2;清P1.2口MOV R7,#08H;每个扩展口为8位MOV R6,#02H;扩展2个8位输入口CLR P1.0;禁止串行数据转为并行 输出O_DT2:MOV A,R0;取8位传送数据O_DT3:RLC A;1位数据送CMOV C,P1.2;数据送至P1.2,SETB P1.1;产生一个CLK脉冲上升沿 NOP;延时CLRP1.1;产生一个CLK脉冲下降沿DJNZ R7,O_DT3;传送完8位数据?INCR0 ;指向下一个存储地址DJNZ R6,O_DT2;
9、传送完2个8位?SETB P1.0;允许串行数据转为并行输出RET,重新分配不同的单片机口线,利用上述连接方法可以同时扩展输入、输出口线。如果适当选择串/并转换控制时机,输入、输出传送还可以共用1根移位时钟控制线,从而进一步提高口线的利用率。,7.1.3 双向口线的扩展利用单片机的对外数据总线与TTL或CMOS并行接口芯片接口,可以实现并行数据I/O双向口扩展。被扩展的接口芯片与片外RAM统一编址,每个扩展接口相当于1个片外RAM单元,利用访问外部RAM的MOVX指令进行寻址。在执行上述操作时,、信号和地址线信号经逻辑组合后作为片选信号和传输方向的控制信号,具体电路如图7-3所示。,图7-3
10、采用TTL芯片的双向口线的扩展电路,图中IC1采用74LS377作为数据输出芯片,IC2采用74LS244作为数据输入芯片,两芯片作为扩展I/O口和片外RAM统一编址,占用一个外部RAM单元地址。输入、输出扩展口地址同为7XXXH(X取任意值),即P2.7为低,其他位地址任意。单片机的P0口作为对外双向数据总线,既从74LS244输入数据,又向74LS377输出数据。,图7-3扩展电路的工作原理是,当单片机内程序执行MOVX指令输出时,P2.7原为低电平,由高电平转低电平,IC3输出则由低电平转高电平,产生的脉冲上升沿作为74LS377内部D触发器的时钟信号,将与单片机P0口连接的D0D7输入
11、端的数据打入Q0Q7输出端;同理,当单片机内程序执行MOVX指令输入时,P2.7为低电平,由高电平转低电平,IC4输出电平由高转低,进而使74LS244的1G、2G门控信号为低电平,74LS244的A端输入数据经Y端输出送往单片机的P0口。,执行MOVX输入、输出指令时不会产生和同时变低的情况,所以也不会同时选通74LS377和74LS244,因此输入、输出芯片可以使用同一地址。在实际应用中如果需要扩展多个I/O口也可以参照这种方法实施,但是要注意多个输入或多个输出芯片之间的地址分配及P0口的负载能力。,7.1.4 专用接口芯片的扩展专用接口芯片型号很多,其中可编程接口芯片8155是一种常用的
12、型号。8155与MCS-51单片机的接口比较简单,芯片中组合的资源比较丰富。其中包括:两个8位并行口、1个6位并行口,256 B SRAM(静态随机存储器),一个14位定时器/计数器。利用8155可以有效地扩展基本型号单片机内部资源的不足。8155内部结构及DIP封装形式的引脚分配如图7-4所示。,图7-4 8155的内部结构及引脚分配,18155的内部组成及引脚说明1) 内部组成说明(1) 并行I/O端口。内部设置2个可编程8位I/O口,即A口和B口,分别为PA7PA0和PB7PB0。另有1个可编程6位口,即C口,为PC5PC0。其中C口在不用于输入/输出数据传送时可以作为A口、B口的通信联
13、络控制线。(2) 数据存储器。内部数据存储器容量为256 B,采用SRAM形式。,(3) 定时器/计数器。内部配置的定时器/计数器为14位,采用二进制减法计数形式。(4) 命令、状态寄存器。为实现可编程控制功能,8155内部还设有1个只允许写入的命令寄存器和1个只允许读出的状态寄存器。,2) 引脚功能说明(1) AD7AD0。三态(有悬浮高阻)地址数据总线。(2) RESET。复位输入端(持续600 ns,复位后I/O口均为输入端)。(3) ALE。地址允许信号输入端(下降沿将AD7AD0地址、锁入)。(4) 。片选信号,低电平有效。(5) 。IO、SRAM选择信号,0选SRAM,1选SRAM
14、。 (6) 。写选通信号,0有效,AD7AD0数据写入SRAM( 0),AD7AD0数据写入某I/O口( 1)。,(7) 。读选通信号, 0有效,AD7AD0数据读出SRAM( 0),AD7AD0数据读出某I/O口( 1)。(8) PA7PA0、PB7PB0、PC5PC0。两个8位和一个6位可编程控制I/O口。(9) TIMER IN。定时器/计数器的时钟输入端。(10) TIMER OUT。定时器/计数器的时钟输出端(输出形式为单个或连续脉冲)。,28155的工作原理1) 可编程命令寄存器及状态寄存器的作用可编程命令寄存器及状态寄存器是8155内部2个相互独立的8位寄存器,但共用一个通道地址
15、,具体操作由8155内部控制逻辑决定。写入该地址时只允许对命令寄存器操作,读出该地址时只允许对状态寄存器操作。可编程命令寄存器是8155的控制核心,8155 的3组I/O端口的工作方式由其内容决定。当8155与单片机接口时,在执行端口操作之前,应首先通过单片机向命令寄存器写入设置内容,而8155内部状态寄存器的内容则反映其当前的工作状况。,2) 可编程命令寄存器及状态寄存器的内容(1) 命令寄存器的格式及定义。8155的命令寄存器由8位组成,分别对端口的工作方式、端口的操作形式及定时器/计数器的工作模式进行了定义。寄存器具体按位分配如下:,上述8位内容也称为命令字,其中:D0、D1位对应PA、
16、PB,定义了PA口、PB口的工作方式,“0”表示输入,“1”表示输出。,D2、D3位对应PC1、PC2,由这2位组合成4种情况分别定义了PC口的工作方式及PA 口、PB口的选通控制形式。4种情况表示如下:,D4、D5位对应IEA、IEB,定义了PA口、PB口的中断。“0”表示禁止,“1”表示允许。:,D6、D7位对应TM1、TM2,由这2位组合成4种情况分别定义了定时器/计数器的工作方式,4种情况表示如下:,(2) 状态寄存器的格式及定义。8155的状态寄存器同样由8位组成,其内容反映了中断的请求、允许,端口数据缓冲器的空、满以及定时器/计数器的计数状态,寄存器具体按位分配如下:,上述8位内容
17、也称为状态字,其中:D0、D3位对应INTRA、INTRB,分别代表PA 口、PB口的中断请求标志,“1”表示有中断请求,“0”表示无中断请求。D1、D4位对应BFA、BFB,分别代表PA 口、PB口的端口缓冲器空/满标志,“1”表示缓冲器满,“0”表示缓冲器空。D2、D5位对应INTEA、INTEB,分别代表PA 口、PB口的中断允许标志,“1”表示允许中断,“0”表示不允许中断。D6位对应TMER,是代表计数器计满的标志,其中“1”表示计数器已计满归零,“0”表示计数器尚未计满。注意:作为状态INTR、BF、INTE有效的先决条件是PA、PB口必须处于选通工作方式。,(3) PC口的引脚分
18、配。由命令寄存器中的PC1、PC2两位的组合可以获得4种PA、PB口工作方式。在此4种工作方式下PC口的6根口线PC0PC5可以用于输入/输出数据或PA、PB口的数据传送联络,具体安排见表7-1。,表7-1 PC口引脚分配表,(4) 8155定时器/计数器的工作原理。8155定时器/计数器的核心是一个14位减法计数器,使用时首先在定时器寄存器中设定计数长度初值。定时器/计数器工作时对减法计数器TIMER CLK端的输入脉冲进行减1计数操作,当设定计数值减至0时,在TIMER OUT端输出矩形波或脉冲信号,具体选用何种输出形式及设定计数初值可以通过写8155的定时器寄存器实现。定时器寄存器的位分
19、配格式如下:,由定时器寄存器的格式及位分配可以看出,计数初值最大为14位,即二进制数的3FFFH。而最小计数初值要考虑产生方波或脉冲高低电平所需的两个状态,即计数初值最小是2H才能实现高低电平划分。因此设定计数长度初值的范围为2H3FFFH。使用8155定时器/计数器定时共有4种工作方式可供选择,具体选择由定时器寄存器最高2位M2、M1组合决定。M2、M1的组合定义如下:,当计数初值为偶数时,8155定时器/计数器TIMER OUT端输出的连续方波数完全对称,而计数初值为奇数时,连续方波的前半周期要比后半周期多1个减1时间。需要指出的是,当对8155的RESET引脚加高电平实施硬件复位时,定时
20、器/计数器停止工作,而定时器/计数器的再次工作则需由命令寄存器启动。,(5) 8155的地址分配。8155内部的寄存器或端口具有固定的地址。单片机可以通过与8155连接的地址/数据线AD7AD0首先向8155发出地址,然后再对该寄存器或端口进行操作。8155内部共有6个分配地址,由地址/数据线AD7AD0的低3位组合而成,具体分配如下:,38155与单片机的接口MCS-51单片机与8155芯片的引脚能够简单地对应连接而不必附加其他电路。另外,两者还可以共用一套复位电路实现同步启动和确保初始化的正常进行。具体电路连接方法如图7-5所示。采用图7-5扩展后的单片机系统可以增加26位I/O口线、25
21、6 B的RAM以及1个14位定时器/计数器。,图7-5 单片机与8155芯片接口的连接电路,如果将8155的工作方式设置成PA口为基本输入、PB口为基本输出、PC口为输入、定时器/计数器为连续方波信号发生器,并对计数输入脉冲进行10分频,装入定时器/计数器工作方式和初值后立即启动,则可以在确定8155内部寄存器和端口的地址和对应的控制命令字后编制8155的初始化程序。针对图7-5的连接形式可以通过表7-2确定8155芯片的内部寄存器、端口及数据存储器对应地址。,表7-2 地址分配表,根据表7-2(任意值选为1)确定出定时器寄存器的低8位地址为7F04H,定时器寄存器的高8位地址为7F05H,命
22、令寄存器地址为7F00H。根据定时器寄存器最高2位M2、M1组合可知,定时器在连续方波输出方式下选01,考虑计数输入脉冲分频值为10,可以在定时器寄存器的位分配格式中填写如下内容:,即定时器寄存器的高8位内容为40H,定时器寄存器的低8位内容为0AH。,另外,根据8155的工作方式PA口设置成为基本输入、PB口设置成为基本输出、PC口设置成输入和装入定时器/计数器工作方式、长度后立即启动计数,可以得出8155的命令寄存器位分配格式填写内容,即PA选“0”、PB选“1”、PC1选“0”、PC2选“0”、IEA选“0”、IEB选“0”。TM2、TM1的组合为10,可以在命令寄存器的位分配格式中填写
23、如下内容:,即命令寄存器的内容为C2H。,8155与MCS-51单片机接口的初始化程序编写如下:MOV DPTR,#7F04H ;指向定时器寄存器低8位MOV A,#0AH ;设置计数器初值为10分频MOVX DPTR,A ;为定时器寄存器低8位赋值INC DPTR ;指向定时器寄存器高8位MOV A,#40H;设置定时器为连续方波,高6 位初值为0MOVX DPTR,A ;为定时器寄存器高8位赋值,MOV DPTR,#7F00H ;指向命令寄存器MOV A,#0C0H ;设置命令字MOVX DPTR,A ;传送命令字 在本例中,如果要扩展数据存储器,则需将单片机高8位地址总线中的P2.6清0
24、,地址范围可以取0000H00FFH。扩展的数据存储器可用于测控系统中临时存放外部数据采集信息或作为扩展键盘的数据缓冲区等。 由于单片机时钟频率一般较高,而8155的最高计数脉冲频率有限,所以定时器/计数器TIMER CLK端的输入脉冲不宜直接取至单片机时钟,中间需要加入分频环节或从单片机ALE端引入。,7.2 单片机的存储器扩展7.2.1 程序存储器的扩展新型MCS-51单片机或与之兼容的单片机一般内部已配置足够的ROM,可满足小型嵌入式测控系统存放程序的需求。提倡单片机选型时尽量以单芯片组成系统,但是在一些特殊应用场合考虑到存放大型表格或常数库时则需要扩展外部ROM。单片机与外部ROM通过
25、外部扩展的数据、地址、控制总线以及数据/地址锁存器进行连接。,1单片机外部总线的扩展由第2章2.1.2节有关MCS-51单片机引脚分布及功能部分讲述的内容可知,MCS-51单片机可以利用其P0、P2口的全部口线,P3口的部分口线及专用引脚在片外扩充类似一般计算机CPU中的三总线,即扩展地址总线AB、数据总线DB和控制总线CB。单片机口线与扩展外部总线的对应分配关系是:P0口复用,作为数据总线和地址总线的低8位,使用时先送地址锁存,再读或写数据。P2口仅作为地址总线的高8位。P3口的P3.6、P3.7、作为读写方向和选通控制总线(另有作为片内外ROM选择控制)。,2片外程序存储器的扩展扩展片外程
26、序存储器时,地址总线可以由P0、P2口的全部口线组成,共有16位,所以最大片外扩展容量为64 KB,地址空间范围为0000FFFFFH。如有大于64 KB的扩展需求(例如扩展标准汉字字库)时,则需动用其他I/O口线扩充地址。,图7-6给出了MCS-51单片机扩展8 KB程序存储器的硬件连接电路,单片机在片外扩展了1片EPROM 2764,其容量为8 KB。考虑到低8位数据、地址总线分时复用,电路中加入了74LS373锁存器, P0口的地址信息先送往74LS373锁存,然后腾出P0口用于指令、表格或常数库等信息传送。使用外部存储器时引脚接低电平。MCS-51单片机从外部ROM取指令或执行MOVC
27、指令时,外部总线引脚会自动产生电平变化以满足地址锁存和指令输入的时序安排,访问片外ROM的时序如图7-6所示。,图7-6 MCS-51单片机扩展8 KB程序存储器连接电路,由图7-7可以看出,在地址锁存信号ALE升为高电平后,ROM选通引脚升为高电平。在此状态下P2口输出的高8位地址A8A15(扩展2764仅用高5位A8A12)直接送往ROM地址高8位,同时在ALE信号的作用下使得8D锁存器74LS373的门控端G为高电平被选通,P0口输出的低8位地址经74LS373的D端进入,在Q端输出2764所需的低8位地址。由于 为高电平的作用,封锁了2764 的引脚,致使2764无输出信息。,当地址锁
28、存信号ALE降为低电平后,P2口的高8位地址不变,低8位地址仍然锁存在74LS373中,腾出地址/数据总线为P0口接收信息做准备。此后 电平由高到低,允许2764中的指令信息通过P0 口进入单片机。在1个机器周期内,MCS-51单片机允许有2次输入指令的机会。接收单字节指令时,后1次机会被自动放弃。,图7-7 片外ROM操作时序图,早期的片外存储器扩展芯片主要采用EPROM(紫外线擦除)形式,现在可以使用E2PROM(电可擦除)或其他形式。其中E2PROM兼有ROM和RAM的特点,既可以作为程序存储器也可以作为数据存储器。E2PROM为非易失性器件,每个单元可重复改写1万次,信息保留时间可达2
29、0年。EPROM 2764的代用品是E2PROM 2864,接口原理大致相同,但是E2PROM存储器芯片擦除时间较长,执行速度较慢,在替代EPROM存储器芯片时应予以注意,E2PROM的详细参数和用法请参考相关资料。,在使用EPROM或E2PROM与单片机配合扩展外部ROM时还应注意以下问题: (1) 参数匹配。应考虑电源容差、工作温度等问题。(2) 速度匹配。读取时间与MCS-51单片机时钟信号的关系。(3) 负载能力。尽量选用大容量芯片,可以减少总线负载的数量。(4) 硬件选取。选用芯片引脚、控制电平兼容的器件,以便简化控制逻辑关系。,7.2.2 数据存储器的扩展扩展片外数据存储器与扩展片
30、外程序存储器类似,地址总线仍以P0、P2口的16位口线组成,所以最大片外扩展容量仍为64 KB,地址空间范围为0000FFFFFH。两者不同之处在于,MCS-51单片机通过或读、写信号选通片外数据存储器芯片,控制数据的流向。,图7-8给出了MCS-51单片机扩展8 KB数据存储器的硬件连接电路,单片机在片外扩展了1片SRAM 6264,其容量为8 KB。同样,P0口作为地址/数据线分时使用,P0口的地址信息先送往74LS373锁存,然后腾出P0口用于数据的读、写传送。,图7-8 MCS-51单片机扩展8 KB数据存储器连接电路,当单片机执行片外数据传送指令MOVX时的读、写时序如图7-9和7-
31、10所示。,图7-9 执行MOVX指令时的读时序,图7-10 执行MOVX指令时的写时序,由图7-9、图7-10可以看出,P2口输出高8位A8A15(扩展6264仅用高5位A8A12)至片外数据存储器,P0口输出低8位地址A0A7至片外数据存储器,低8位地址在ALE信号为高电平时进入地址锁存器74LS373,并在ALE的下降沿得到。如果接下来是信号有效,则进行读操作,片外RAM选中存储单元的内容由P0口输入并送至单片机内的累加器A;如果在地址锁存后是信号有效,则进行写操作,单片机累加器的内容通过P0口送至片外RAM内被选中的存储单元。,典型的SRAM数据存储器芯片的型号有6264、62256(
32、或COMS工艺的62C54、62C256)等,使用时如果考虑功耗问题可以将数据存储器的片选端连接成选通形式。即仅在读写操作时接低电平选通,其余时间使芯片处于维持状态。例如,6264芯片在选通工作状态下的典型工作电流为40 mA,而在维持状态下仅为2 mA。,7.2.3 存储器扩展的应用设计使用MCS-51系列兼容单片机AT89S51和1片容量较大的数据存储器62256,可以设计一个用于单片机系统程序仿真调试和编程练习的装置。这种装置的工作原理是,首先将单片机的引脚接高电平,单片机执行内部ROM中的程序,在程序中完成与PC机的通信,将PC机中编写的程序下载并送到片外62256中。程序下载完成后,
33、在保持62256不掉电的情况下,将单片机的引脚转换为低电平,此时复位单片机,单片机则按照片外RAM 62256中下载的程序执行,从而实现仿真或调试功能。根据上述原理设计的仿真调试装置的电路连接参见图7-11。,图7-11 单片机系统仿真调试装置的电路连接图,图7-11利用 与 相“与”选通62256的读允许片选端,使得单片机既能够从62256中读出程序,又能够向62256读写入数据,从而使得62256具有程序和数据存储两种功能,即程序和数据共用一个地址空间。由于上述原因,在使用时应注意数据的存放位置,避免与下载的程序重叠。,7.3 单片机键盘接口技术单片机组成的控制系统通常需要配置键盘,用户可
34、以通过键盘向单片机输入数据或命令,以便实现控制系统的人机对话。键盘可以直接利用口线连接按键开关、开关型传感器或电子线路来实现,内部程序仅通过判断口线的电平就能够确定输入的键值。采用这种识别方式的键盘称为非编码键盘。非编码键盘设计简单,使用方便,且因为具有共用端,容易直接同开关电路或开关型传感器连接。但是这种方式的口线利用率较低,受单片机口线数量的限制,其键盘规模无法做大。,键盘的另一种形式是编码键盘,这种方式将口线与按键开关连接成矩阵电路,通过软件扫描、识别I/O口上的编码,按编码规则识别输入键值。编码键盘的最大优点就是口线利用率高,键盘规模可以做得较大。具体采用哪一种形式的键盘可以根据控制系
35、统的规模及用途决定。鉴于单片机嵌入式用途的特点一般不配规模较大的键盘,如有需要可采用专用键盘扩展芯片完成,例如典型的Intel公司键盘/显示扩展芯片8279以及ZLG7289键盘/显示串行扩展芯片。,7.3.1 简易键盘接口的实现简易键盘接口采用非编码形式,典型应用电路如图7-12所示。电路中的键盘由8只按键开关S0S7组成,按键的共用端接地。单片机P1的口线分别与按键连接,同时也与两组4输入“与”门CD4082的输入端连接。CD4082的两组输出线相“与”后,共同连接至单片机的P3.2引脚,即 外部中断输入端。为保证按键开关在未闭合状态下单片机口线上有确定的电位,对应每根口线上均接有上拉电阻
36、,即键未按下时口线保持为高点位。为保证单片机程序执行的效率对键盘的检测采用了中断方式。每当有键按下,“与”门CD4082的输出电位变低,程序响应中断,在中断服务程序中完成键值识别。,图7-12 简易键盘接口的典型应用电路,键盘在使用中还应考虑到人员操作或机械特性在接触时产生的抖动问题,即按键开关在接通或断开瞬间并非完全可靠接触,而是存在一个抖动期,在此期间的电平变化波形如图7-13所示。图中tH为开关断开时口线上高电平存在的时间,tL为开关闭合时口线上低电平稳定存在的时间,tW1、tW2为键按下和松开时的抖动期存在时间。抖动期一般不超过10 ms。在口线电平抖动期间,单片机无法准确检测出口线电
37、平的正确值,必须采取一定的措施进行鉴别。,图7-13 按键闭合时的电平变化波形,常用的鉴别方法是延时消抖法,例如遇到由高向低的电平转换后先不急于读取口线键值,而是在中断服务程序的开始执行一段1020 ms的延时程序。若延时程序后再次判断口线仍为低电平则进入口线的键值读取程序,否则放弃键值读取操作。 延时去抖动及读取键值的中断服务程序如下:,ORG0003HLJMPKRDKRD:MOVP1,0FFH ;P1口写“1”,置为输入口CALLDEL20 ;调20 ms延时子程序MOV A,P1 ;读P1口键值JNBACC.0,KPR0;判断P1.0P1.7是否有键按下JNBACC.1,KPR1JNBA
38、CC.2,KPR2JNBACC.3,KPR3,JNBACC.4,KPR4JNBACC.5,KPR5JNBACC.6,KPR6JNBACC.7,KPR7RETIKPR0: ;P1.0口线按键处理程序 MOVA,P1 ;读P1口键值KP01:JNBACC.0,$ ;判断P1.0口线电平是否变高CALLDELAY20 ;调20 ms延时子程序JNB ACC.0,KP01 ;证实P1.0口线一直保持高电平,CLRIE0;关中断 RETIKPR1: ;P1.1口线按键处理程序 KPR7: ;P1.7口线按键处理程序 DEL20: ;20 ms延时子程序 ,7.3.2 矩阵键盘接口的实现简易键盘电路中每一
39、个按键占用一根I/O口线,其口线利用率较低,如果将口线按照行、列排成矩阵形式则可在相同口线数量的条件下增大键盘的规模。例如,可以将P1口的8根I/O线排列成44矩阵形式,此时可以连接16只按键开关。采用这种设计方式的矩阵式键盘电路如图7-14所示。,图7-14 44矩阵式键盘电路,下面介绍图7-14键盘电路的工作原理。1电路结构及设计思路矩阵式键盘将P1口的8根I/O口线分成行、列线连接,图7-14中P1.0P1.3为行线,P1.4P1.7为列线。16只按键分别跨接在对应的行、列线节点上。如果单片机在行线对应的I/O口线上有数据输出,当有键按下时,行、列线短路,单片机在列线对应的I/O口线上的
40、输入数据将由行线上的电平决定。行线特定的4位数据输出和列线对应的4位数据输入可以组成一个8位的特征字,该特征字即为键值,代表了按下的键所在的位置。,2键值产生的原理1) 扫描法产生键值具体方法是,以行线作为扫描输出,以列线作为接收输入,依次将行线置为低电平,并在列线上逐次接收数据。扫描完成后,如果发现接收到的某一列线有低电平,则表示该列线与行线连接的按键已经闭合。在接收到低电平的那次扫描中,行线数据与列线数据的组合便是所期望的键值,由该键值可确定闭合键在矩阵连接中的连接位置。,2) 线反转识别法产生键值具体方法是,先将行线全部置为低电平,列线全部置为高电平,从列线对应的I/O口线接收数据,如果
41、发现有口线变低,则证明该列线与闭合的按键连接。反之,将列线全部置为低电平,行线全部置为高电平,从行线对应的I/O口线接收数据,如果发现有口线变低,则证明该行线与闭合的按键连接。对上述两次操作的结果所获得的两个8位数据进行综合分析,便可确定闭合的按键所在位置。,3键盘识别原理在进行键盘扫描产生键值之前,为避免无键按下的空扫描,浪费CPU执行时间,应该首先进行一次键盘识别,具体方法有两种。1) 硬件中断识别法将矩阵式键盘电路的所有列线连接至“与”门电路的输入端,“与”门电路的输出端与单片机外部中断连接(参见图7-14)。把全部行线置为低电平,全部列线置为高电平,当有键按下时列线上出现低电平,对应“
42、与”门的输出电平出现由高向低的跳变,经引脚进入单片机产生中断,在中断服务程序中开始扫描键盘。,2) 软件查询识别法将全部行线置为低电平,全部列线置为高电平,定时从列线对应的I/O口线输入数据,如果判定接收的数据中有低电平存在,则说明有按键按下,开始执行键盘扫描程序。这种方法无需在矩阵键盘中连接“与”门电路,硬件电路简洁。上述两种识别方法中,采用硬件中断识别方式可以随时响应键盘动作,具有较强的实时性,而采用软件查询方式则可以简化电路。具体实施应根据实际要求设计。,4按键操作的抖动处理与简易键盘电路相同,矩阵键盘同样要考虑按键触点闭合或断开时存在的抖动期,一般在取回键值后进行510 ms的延时,判
43、断原键值是否存在,以决定是否存在按键的误动作。,5矩阵键盘处理程序以下是可供CPU调用的键盘扫描程序,该程序可以读入44键盘状态,然后将键值送往内部数据存储器的RAM 20H23H单元。具体实施方法是,利用单片机P1口的P1.0P1.3口线轮流向行扫描线送低电平,将每次扫描中由P1.4P1.7返回的数据与当时行扫描送出的数据组合后作为键值送内部RAM的20H23H单元,键值内容为8位,低4位中的“0”对应行扫描输出线,高4位中的“0”对应与闭合按键连接的列线。矩阵键盘处理程序清单如下:,INPUT-SCAN:MOV R0,#20H;设置键值存储单元地址指针MOV A,#0FEH;设置行扫描初始
44、状态SCAN: MOV P1,A;输出至行扫描线MOV R1,A;保存行扫描线状态 MOV A,P1;读回列线数据 AND A,#0F0H;保留读回数据的高4位 ORL A,R1;组合键值 MOV R0,A;键值送存储单元,如果采用硬件中断的键盘识别方式,本示例程序可以直接利用图7-14电路。当键盘上有键闭合时产生中断请求,CPU响应中断,在中断服务程序中调用上述程序。当采用软件查询的键盘识别方式时,图7-14电路中的“与”门可以去掉,由CPU定时或在空闲时调用键盘识别程序。,7.4 单片机显示器接口技术7.4.1 LED数码管显示接口1显示元件概述为了实现人机交互,单片机应用系统通常配有显示
45、器接口,主要显示元件采用LED(发光二极管显示器)或LCD(液晶显示器),显示形式有笔画式和点阵式。笔画式显示元件大多为LED数码管,用于显示数字或简单字母信息,适合于规模较小的单片机系统。如果考虑到单片机系统功耗因数,也有笔画式LCD数码管可供选用,但在控制和连接上要稍微复杂一些。,对于大信息量或图形显示一般使用点阵式LCD显示器,这种显示器结构比较复杂,还需要考虑灰度调节、高压背光的配合,电路连接及程序操作都比较繁琐。使用点阵式LCD显示器最好采用内置控制器的模组形式,在这种形式下单片机与点阵式LCD的接口实际上变成了单片机与单片机之间的数据通信。本节内容主要介绍笔画式LED和点阵式LCD
46、的应用。,2七段码LED显示器LED数码管由8只LED发光二极管构成,8只LED发光二极管分别代表组成数码的笔画(称为段)和该位数码的小数点。由于显示的数字由7个显示段组合而成,所以也称为七段码,LED七段数码管显示器的结构参见图7-15。,图7-15 LED七段数码管显示器的结构,如图7-15中画出的电路结构所示,在七段数码管显示器中为简化电路引出线,通常将8只发光二极管的阴极或阳极连接在一起作为电路的公共端,由此便出现了共阴极或共阳极显示器的名称,实际使用时采用高电平或低电平驱动。对于七段数码管的驱动电流应注意加以限制,在保证不超过单片机或其他驱动芯片功耗的前提下维持正常的发光亮度,3七段
47、码LED显示器的显示方式及接口七段码LED显示器可以采用静态显示和动态显示两种形式。静态显示是指在显示时段内对组成字型的发光二极管保持恒定的导通或截止;动态显示是指在显示时段内对组成字形的发光二极管实行间断或轮流(多字符显示)点亮。其中前一种形式程序操作简单,CPU送出字形码后可以不再管理。而后一种显示形式则可最大限度地降低显示功耗,但是占用了CPU的执行程序时间。,1) 静态显示接口图7-16所示是由单片机串行口与移位寄存器芯片CD4094组成的共阴极七段码LED静态显示接口电路。单片机工作在串口方式“0”状态,要显示的字形以七段码形式由单片机的口线P3.0(RXD)输出至CD4094的数据
48、输入端D,每次输出1个字节,对应1位显示数字。多位显示时需要输出多个字节的显示数据,同时也需要多个CD4094级联,即前级CD4094的数据输出端QS与后级CD4094的数据输入端D连接。单片机的口线P3.1(TXD)与每个CD4094的时钟输入端CP连接,在串行数据输出过程中TXD发出移位脉冲,驱动数据依次逐位在CD4094芯片中移动。,当所有要显示的数据全部送出后,单片机可以将P1.0控制口线由低置高,通过CD4094的ST引脚控制,使所有送入CD4094的数据由串行转为并行输出,在LED数码管上显示出对应位的数字内容。静态显示的主要特点是占用CPU处理时间少,显示稳定、亮度高,使用口线少
49、。但在使用中应注意串口数据传送的格式及字符排位顺序。,串行静态显示的位数主要由TXD、P1.0口线的带负载能力决定。实际使用中也可不用P1.0控制口线,将CD4094的ST端引脚始终接高电平,进入CD4094的串行数据会自动转为并行输出。这样做的缺点是在单片机送出显示数据的过程中LED数码管会显示乱码。但是数据传送过程很短,在不频繁更换显示数据的场合还是可以接受的。应用实践证明,CD4094的输出与LED数码管之间可以不加限流电阻。当CD4094输出电流过大时会引起输出电压下降,从而自动限制了流过LED的电流。另外,如果单片机的串行口在系统中另有用途,则可以采用本章7.1节提出的用其他口线模拟
50、串行口的方式。,图7-16 LED静态显示接口电路,2) 动态显示接口采用多位LED数码管显示时,可以逐位点亮数码管,虽然在显示过程中有些数码管有熄灭时间,但是利用人眼的视觉暂留效应和LED发光二极管的余辉,只要点亮与熄灭时间分配适当,仍能够感觉到所有数码管始终处于显示状态。 动态显示形式时CPU需要经常执行相关程序进行显示刷新,这样可能占用较多的CPU执行时间,对需要快速运算或实时控制的用途会增加编程难度。但是,在实际编程中可以融入一些编程技巧减轻CPU刷新显示的负担。例如,将逐位显示程序编入经常调用的延时子程序中,就可以在执行正常程序的过程中满足动态显示的需求。,动态显示可以提高单片机显示
51、口线的利用率,简化硬件电路的接线。LED动态显示接口的具体电路如图7-17所示。在图示电路中设置了4 位共阳极LED数码显示管,单片机在P0口输出需要显示的字形码,通过74LS244与每一位数码管的段显示引脚连接,以低电平驱动数码管中的LED段发光。在P0口发出字形码的同时,P1.0P1.3则对应输出低电平,选通与显示位数码管公共端串接的PNP型三极管,使该位字形得到显示。上述过程依次执行则可以轮流扫描显示各位数码管。,图7-17 LED动态显示接口电路,对应图7-17电路,设需要显示的4位字形七段码存放在单片机内部RAM的7CH开始的4个单元中,可以编写动态扫描显示子程序如下:SDIS:MO
52、V R0,#7CH;设显示数据存储区指针MOV DPTR,#2000H;设置七段码表首地址MOV R7,#0FEH;设置显示位指针,指向最右边一位MOV A,R7;显示指针内容送累加器,LD0:MOV P1,A ;选通显示位RLA ;显示指向下一位MOV R7,A ;存显示指针内容MOV A, R0 ;取显示内容MOV C A,A+DPTR ;查显示内容的字形码MOV P0,A ;送出显示字形码CALLDEL1 ;调延时子程序INCR0 ;指向下一显示存储单元MOV A,R7 ;取显示指针内容JBACC.4,LD0 ;未扫描完4位循环,RET ORG2000HDSEG1:DB C0H,F9H,
53、A4H,B0H,99H,92H; 09,AF共阳极字形七段码DSEG2:DB 82H,F8H,80H,90H,88H,83HDSEG3:DB C6H,A1H,86H,8EH,7.4.2 LCD显示屏接口LCD显示器有笔画分段、分割显示,字符点阵显示和图形点阵LCD显示形式之分,对于比较丰富的显示内容通常采用图形点阵显示形式,但是这种显示形式的电路结构及控制方式比较复杂。为了便于使用,LCD图形点阵显示器通常以LCM(液晶显示模组)形式出现,模组中封装了显示器、驱动电路、控制电路及背光调节电路等。本节以MG12864 LCM为例介绍图形点阵LCD显示接口的应用。,1MG12864 LCM模块基本
54、参数(1) LCD类型:STN形式。(2) 模块尺寸:937012 mm。(3) 显示区域尺寸:70.738.8 mm。(4) 点阵间距:0.520.52 mm。(5) 点阵分布:12864点。(6) 每一点阵尺寸:0.480.48 mm。MG12864 LCM模块内部主要组成部分如图7-18所示。,图7-18 MG12864 LCM内部主要组成部分,2MG12864 LCM模组结构说明MG12864LCM由以下几部分组成:(1) 核心部件:12864 LCD点阵显示器。(2) 段驱动电路:两路64列扫描显示驱动电路。(3) 行驱动电路:64行扫描显示驱动电路。(4) 背光驱动电路:LED发光
55、管照明电路。除图7-18中标注部分之外,MG12864 LCM内部还配置了如下部分:(1) 显示控制器。(2) 显示存储器DDRAM。(3) 电源电路。,3MG12864引脚功能及说明1) 数据信号DB0DB7:指令、数据传送总线。2) 控制信号RS:指令、数据选择控制线,高电平选择数据传送,低电平选择指令传送。R/:读写方式控制线,高电平为读方式,低电平为写方式。E:信号选通控制线,高电平有效。RSTB:复位信号线,低电平有效。,3) 地址信号CS1:段驱动电路选择线,高电平有效,选通KS0108B(1)。CS2:段驱动电路选择线,高电平有效,选通KS0108B(2)。4) 供电电源VDD:
56、模块的电源正端。VSS:供电电源地。,5) 灰度调节VIN:LCD驱动电压输入端。VOUT:LCD背板负电压输出端。6) 背光电源SLA:背光源正极(LED5 V)。SLK:背光源负极(LED0 V)。,4MG12864的操作指令通过DB0DB7可以实现指令或数据的传送操作,指令或数据的选择由RS控制信号确定,传送方向由R/W控制信号确定。,1) 显示开关指令RS=0,格式如下:,功能:控制显示状态。S0,关显示;S1,开显示。,2) 列(Y)地址设置RS=0,格式如下:,列地址的设置范围为063。功能:将列地址写入列寄存器(YC)。,3) 页(X)地址设置RS=0,格式如下:,页地址的选择范
57、围为07。功能:将页地址置入页寄存器(PR)。,4) 首行设置RS=0,格式如下:,行地址的设置范围为063。功能:设置显示存储器(DDRAM)的首行地址。,5) 读取状态RS=0,格式如下:,其中:BUSY位为忙标志,低电平表示操作就绪,高电平表示正在操作中。ON/OFF位为显示状态,低电平表示开显示,高电平表示关显示。RESET位为复位标志,低电平表示正常运行,高电平表示复位。,6) 写数据RS=1,0,功能:将8位数据写入显示存储器(DDRAM)中,指令结束后列寄存器(YC)加1。7) 读数据RS=1, 0,功能:读取8位数据。MG12864 LCM模组的操作步骤包括:显示设置、读写数据
58、及查询状态。,5显示存储器DDRAM的结构(1) 整体地址结构如下所示:,(2) 以第一页和X地址B8H为例,分页内位与行之间的对应关系如下:,6MG12864与单片机的接口MCS-51系列单片机与MG12864的电路连接如图7-19所示。图中将P0口全用作为数据、指令传输线,P1口的部分口线作为段地址选通和控制信号。考虑到单片机的复位信号电平与MG12864的复位电平反相,同时使用一个上电复位电路时,两复位引脚之间加入了反相器。,图7-19 MG12864与单片机的接口电路,7显示程序显示程序主要完成对MG12864的控制、设定及显示内容的传送等工作。程序步骤包括:开关显示控制,选取段驱动器,设定起始行,设定起始列及传送显示内容等。在每次显示开始时,如果按顺序设置起始的行或列可以实现屏幕上、下滚动或左、右平移的效果。显示内容按页传送,每页对应8行,连续传送64次8位显示数据完成1页显示内容。如果考虑两个驱动器的显示输出,显示整屏则需16页内容。图7-20给出了整屏显示程序流程图。,图7-20 整屏显示程序流程图,8字符显示码的形成字符以点阵形式显示于LCD屏幕,字符点阵的形成可以参照标准字库手工描点编码。但是这种方法不仅编码效率低,而且字形也不规范。较好的编码方法是使用字模软件,常用的字模编程软件为 ZIMO 221。使用该软件的字模提取步骤如下 (1) 双击ZIMO 22
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建材库房拆除方案
- 消防材料库存管理方案
- 车间承包经营与品牌形象策划合同模板
- 玻璃幕墙工程劳务分包合同含材料供应
- 出租车公司驾驶员健康体检协议书
- 精密制造厂房租赁服务全面合作协议
- 肺炎的护理与治疗
- 车辆保险代理权转让及保险产品创新合作协议
- 普工应聘考试题及答案
- 天津工商面试题及答案
- 重庆两江新区人力资源公司招聘高素质专业化聘用人员管理单位遴选500模拟题附带答案详解
- 林地割草合同范例
- 大型企业办公家具集中采购方案
- 采购价格管理培训
- 人工智能应用学习通超星期末考试答案章节答案2024年
- DB43T 876.9-2015 高标准农田建设 第9部分:建后管护
- 2024-2025学年八年级上学期英语期中复习之Unit1~unit4语法复习及练习(译林版)
- 出国担保书范文分析
- 国家汉语主题词表
- eos5ds-5dsr-im6-zh-佳能相机说明书
- 酒吧管理-酒吧各级运营流程
评论
0/150
提交评论