实验五    串并转换实验
一、实验目的
1、掌握串并行转换的原理及采用74LS164扩展端口的方法。
2、掌握数码管显示的原理及方法。
3学习用任意两根I/O口线进行数据传输的方法。
二、实验要求
利用实验箱的显示电路,在数码管上循环显示0-9这10个数,每个数显示1秒。完成后修改程序,仅在一个数码管上显示0-F这16个数(其它三个数码管不显示)。
三、实验原理                                           
实验设备中数码管为共阴接法,接线确定了各段从左至右的排列顺序为:abcdefgh。如果要显示数字1,应该是b c段发光,所以b c段对应的位写1,其它不发光的位写0。因此1的显示码为60H。其它显示码可按此规律得出。
实验原理图见图二,串并转换芯片74LS164AB端为串行数据输入端,将其接到数据线P1.0上,CLK为时钟端接到时钟线P1.1上,Q0~Q7为并行输出端接数码管。在P1.1产生的时钟脉冲的作用下,数据的显示码从74LS164输入端一位一位的输入,经164转换后,串行数据变为8位并行数据经其输出端Q0~Q7加到数码管上,数码管就能显示相应的数字。
下面是数据60H的传输及显示过程:
1、 A中数据的最低位送到串口的数据线P1.0上。
2、 在时钟线P1.1上产生一个脉冲。
3、 在这个脉冲的作用下,P1.0上的数据被打入164Q0输出端,原来Q0上的数据移到Q1  Q1的数移到Q2…,完成一位数的传输。
4、 1步到第3步重复8次,这样一个字节的数据就输出完毕,同时74LS164将接收到的串行数据转换成并行数据在数码管上显示出来。
四、实验框图
实验框图见图一。
五、实验连线及步骤
1DINP1.0CLKP1.1,打开实验箱电源,打开串并转换数码管显示模块上的开关。
2、启动KEIL软件界面,根据框图编程。
在初始化框中有两个内容,它们分别是:
* 送表指针初值---寄存器
MOV R1#0
* 送表首地址---DPTR16进制字符串转16进制数组                                          图一  串并转换程序框图
  MOV  DPTR,#TAB
显示子程序如下,其中R4中的初值为8
S164: RRC     A
        MOV        P1.0,C
        CLR        P1.1
        SETB    P1.1
        DJNZ    R4,S164
        RET
3、调试运行程序。
4、如出现问题,出原因,修改程序,直至运行成功。
六、实验作业
    1、将片外RAM7000中的数据用串并转换的方式在数码管上显示出来。
    2、将自己学号的后4位在数码管上显示出来。
七、实验原理图
    实验原理图见图二。其中,P1.0DINP1.1CLK的两根连线需要自己接。其它连线均已接好,开关应在接通状态才能工作。
                      图二  串并转换实验原理图
实验六    键盘显示实验
一、实验目的
1、了解键盘和显示器的接口方法和编程方法。
2、了解键盘扫描和LED八段数码管动态显示器的工作原理。
3、掌握8155芯片的使用方法。
二、实验要求
利用实验箱提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来,并有删除功能。
三、实验说明
从原理图中可以看出,键盘显示电路主要由8155并口芯片与164串并转换芯片构成,其中81
55PA口控制数码管的位线及键盘的列线,PB口低两位与164为数码管提供字形码输出,8155PC口与键盘行线相连。它们的地址如下:
8155命令口地址:  0E100H
8155PA口地址:      0E101H
8155PB口地址:      0E102H
8155PC口地址:      0E103H
键盘显示程序可用多种方式编写,也比较复杂,本次实验的参考程序采用基本的键盘扫描方式编写,程序主要分成三个部分:
1、读键部分:扫描键盘、判断是否有键按下,包括按键的防抖处理。
2、确定键值部分:计算键值存入显示缓冲单元。
3、显示部分:将显示单元的内容在数码管上显示出来。
实验的程序流程见下图,但是由于键盘显示程序比较长,其编程思想的细节不能全部在流程图上表现出来(例如键盘防抖部分、判断按键抬起部分等),流程图中只给出了程序的主要部分。
四、程序流程图
        图一 主程序流程图                      图二  键盘扫描程序流程图
五、实验原理图
    实验原理图见图三。
六、实验作业
    修改参考程序,增加一个功能键,使之按下该键后,数码管全部熄灭。
                          图三      键盘显示实验原理图
七、实验参考程序:
;键盘显示程序, 显示区:10H15H  "RTACE":删除键
        ORG    0000H
        AJMP    MAIN
        ORG    0030H
MAIN:  MOV    SP,#60H
        MOV    10H,#18          ;显示区送初值
        MOV    11H,#18
        MOV    12H,#18
        MOV    13H,#18
        MOV    14H,#18
        MOV    15H,#16
        MOV    DPTR,#0E100H    ;8155方式(命令口)
        MOV    A,#03            ;AB口输出,C口输入
        MOVX    @DPTR,A
SDISP:  LCALL  DISP                ;调显示子程序
OFFDISP:MOV    A,#0H            ;关显示器
        MOV    DPTR,#0E101H        ;8155A口,数码管位选输出及键盘列线
        MOVX    @DPTR,A            ;PA口输出0,关显示器同时键盘列线输出0
        MOV    DPTR,#0E103H        ;判断8155C口是否有键输入?
        MOVX    A,@DPTR            ;读键盘行线
        ANL        A,#0FH
        CJNE    A,#0FH,HK        ;有键按下,转延时抗抖程序
        AJMP    SDISP            ;无键按下,转显示
HK:   
        LCALL  DELAY
        MOV    DPTR,#0E101H    ;再次判断是否有键按下?
        MOV    A,#0
        MOVX    @DPTR,A
        MOV    DPTR,#0E103H
        MOVX    A,@DPTR
        ANL        A,#0FH
        CJNE    A,#0FH,READK    ;确实有键,转读键程序
        AJMP    SDISP            ;是干扰,转显示程序
READK:
        MOV    R4,#0            ;键盘列数初值
        MOV    R5,#0FEH        ;扫描键盘第一列
SCAN:  MOV    A,R5
        MOV    DPTR,#0E101H    ;
        MOVX    @DPTR,A
        RL      A                ;准备扫下一列
        MOV    R5,A
        MOV    DPTR,#0E103H    ;读行线(8155C口)
        MOVX    A,@DPTR
        ANL        A,#0FH
        CJNE    A,#0FH,KEYOP0    ;是这一列, 再确定是哪一行
        INC    R4              ;不是这一列,列数+1
        CJNE    R4,#6,SCAN      ;没有扫描完列线,继续
        LJMP    SDISP
KEYOP0: JB      ACC.3,KEYOP1    ;不是第0行,再判断第1
        MOV    A,#0
        AJMP    KEYCAL
KEYOP1: JB      ACC.2,KEYOP2
        MOV    A,#06
        AJMP    KEYCAL
KEYOP2: JB      ACC.1,KEYOP3
        MOV    A,#12
        AJMP    KEYCAL
KEYOP3: JB      ACC.0,SDISP
        MOV    A,#18
KEYCAL: ADD    A,R4            ;A中的值为行数×6R4,的值为列数
                                      ;键值为(行数×6+列数)
        MOV    DPTR,#KEYC      ;查表确定键名
        MOVC    A,@A+DPTR
        MOV    1EH,A            ;暂存键名
        CJNE        A,#10H,PD          ;判断是否是功能键
        ACALL    CANCEL              ; =10H,删除功能
CK1:      MOV    DPTR,#0E103H        ;查键是否抬起
CKEYON: MOVX    A,@DPTR
        ANL        A,#0FH
        CJNE    A,#0FH,CKEYON1    ;没有抬起,调显示子程序
        AJMP    SDISP           
PD:    JC      KEYNAM                ;是数字键转显示前处理
BACK:    AJMP    SDISP
CKEYON1:LCALL    DISP
        AJMP        CK1
CANCEL:    MOV        R0,#10H
        MOV        R1,#11H
        MOV        16H,#17
CAN1:  MOV        A,@R1
        MOV        @R0,A
        INC        R0
        INC        R1
        CJNE        R1,#17H,CAN1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。