教学科研

教学科研

当前位置: 学院首页 >> 教学科研 >> 正文

单片机实验指导——6LED动态扫描显示实验..

发布日期:2012-09-05    作者:     来源:     点击:

6LED动态扫描显示实验

一、实验目的

1、掌握数字、字符转换成显示段码的软件译码方法

2、动态显示的原理和相关程序的编写

二、实验说明

动态显示,也称扫描显示。显示器由6个共阴极LED数码管构成。单片机的P0口输出显示段码,经由一片74LS245驱动输出给LED管,由PB口输出位码,经由74LS06输出给LED管。

三、实验内容及步骤

单片机P0输出段码,P1口输出位控码,输出6个字符。

1、单片机最小应用系统1的P0口接段码口a~h,P1口接位码口S1~S6。

2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。

3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加 扫描显示.ASM源程序,进行编译,直到编译无误。

4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。

5、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。

6LED显示“168168”。程序停止运行后,显示随之变化,说明运态扫描显示模块不具有数据锁存的功能。

四、流程图及源程序

1、源程序

      DBUF   EQU  30H                       ;置存储区首址

      TEMP   EQU  40H                       ;置缓冲区首址

      ORG    0000H

LJMP   START

ORG    0030H

START:                     

      MOV   30H,  #1                        ;存入数据

      MOV   31H,  #6

      MOV   32H,  #8

      MOV   33H,  #1

      MOV   34H,  #6

      MOV   35H,  #8

      MOV   R0,  #DBUF                  

      MOV   R1,  #TEMP

      MOV   R2,    #6                ;6位显示器

      MOV   DPTR,  #SEGTAB           ;置段码表首址

DP00: MOV   A,     @R0               ;将段码存入缓冲区

      MOVC  A,     @A+DPTR           ;查表取段码

      MOV   @R1,   A                 ;存入暂存器

      INC   R1

      INC   R0

      DJNZ  R2,    DP00

DISP0:MOV   R0,    #TEMP             ;显示子程序

      MOV   R1,    #6                ;扫描8次

      MOV   R2,    #01H              ;决定数据动态显示方向

DP01: MOV   A,@R0

      MOV   P0,A                     ;段码输出

      MOV   A,     R2                ;取位码

      CPL   A                        ;低电平驱动

      MOV   P1,A                     ;位码输出

      ACALL DELAY                    ;调用延时

      MOV   A, R2

      RL    A

      MOV   R2, A

      INC   R0

      DJNZ  R1,    DP01

      SJMP  DISP0

SEGTAB:DB 3FH,06H,5BH,4FH,66H,6DH       ;0,1,2,3,4,5

       DB 7DH,07H,7FH,6FH,77H,7CH       ;6,7,8,9,A,b

       DB 58H,5EH,7BH,71H,00H,40H       ;C,d,E,F, ,-

DELAY:                             ;延时子程序

      MOV   R4,  #03H                

AA1:  MOV   R5,  #0FFH

AA:   DJNZ  R5,  A

      DJNZ  R4,  AA1

      RET

END

五、思考题

1、如何修改程序,实现六位LED数码管只显示其中的两位?