LED数码管的显示

任务一、1位LED数码管的显示

一、学习目标

1、了解七段LED数码管的结构、分类以及数码管的显示码。

2、学习1位LED数码管静态显示与动态显示的编程方法。

二、相关知识

1、七段LED数码管:

LED数码管是单片机控制系统中最常见的显示器件之一,一般用来显示处理结果以及输入输出信号的状态。

①LED数码管的结构:

LED数码管是由8个发光二极管中的7个长条形发光二极管(俗称7笔段)

按a、b、c、d、e、f、g顺序组成“8”字形,另一个点形的发光二极管dp放在右下方,用来显示小数点,如图3-1-1(a)所示。只要控制7笔段按一定的要求亮与灭,就能显示出十六进制0~F。

   

   (a)            (b)               (c)        

            图3-1-1 LED数码管的结构               3-1-2 LED引脚

LED数码管按内部连接方式又分为“共阳极数码管”和“共阴极数码管”两种。若8个发光二极管的阳极连在一起接电源正极为共阳极数码管,如图3-1-1(b)所示。若8个发光二极管的阴极连在一起接地则为共阴极数码管,如图3-1-1(c)图所示。下文如不特别说明,所用LED数码管都为共阴极数码管。

共阴极数码管的引脚如图3-1-2所示,共有10只引脚,其中3、8引脚连通,作为公共端接地。

②数码管显示码:

数码管显示码是表述二进制数与数码管所显示字符的对应关系的。如表

3-1-3所示。

表3-1-3数码管显示码

2、一位LED数码管静态显示“6”

①硬件电路如图3-1-4所示。               

图3-1-4 1位LED数码管显示电路图

为了保证LED数码管的正常运行,必须在连接P0口的基础上,各位串联一限流电阻R,阻值可取360。LED数码管的公共端通过限流电阻接P1.0,由P1.0的信号来选通LED数码管,当P1.0=0数码管选通,当P1.0=1数码管未选通。

②程序流程图如图3-1-5所示:

图3-1-5 程序流程图

③程序清单:“一位LED数码管静态显示6.a”

START  CLR    P1.0            ;  选通个位LED数码管

MOV   DPTR, #TABLE  ;  存入表的起始地址

MOV   A, #6           ;  将欲显示的数字6存入A

          MOVC  A, @A+DPTR   ;  按地址取代码并存入A

        MOV   P0, A           ;  将代码送P0转变数字显示

        SJMP    $             ;  程序运行在当前状态

TABLE  DB  3FH,  06H,  5BH,  4FH 

        DB  66H,  6DH,  7DH,  07H 

    DB  7FH,  6FH,  77H,  7CH  

DB  39H,  5EH,  79H,  71H  ;代码表

END                                        

3、一位LED数码管动态循环显示0~9。

①硬件电路如图3-1-4所示。

②程序流程图:

图3-1-6  程序流程图

③程序清单:“一位LED数码管动态循环显示0~9.a”

START CLR     P1.0             ;选通个位LED数码管

MOV    DPTR, #TABLE    ; 存表

   MOV    R0, #0            ; 设定初始值

LOOP MOV    A, R0             

        MOVC   A, @A+DPTR     ; 取表代码

      MOV     P0, A            ; P0输出      

         ACALL   DLY1S           ; 调延时程序                     存表取表 

       INC      R0               ; R0值加1      

         CJNE    R0, #10 , LOOP     ; 不是10,循环

        JMP     START            ; 重新开始                       判断循环

DLY1S MOV    R5, #50            ;

D1     MOV    R6, #100           ;

D2     MOV    R7, #100           ;

     DJNZ    R7, $              ;

      DJNZ    R6, D2             ;

       DJNZ    R5, D1             ;                              1秒延时

    RET                                                     子程序

TABLE DB  3FH,  06H,  5BH,  4FH 

       DB  66H,  6DH,  7DH,  07H 

   DB  7FH,  6FH,  77H,  7CH  

DB  39H,  5EH,  79H,  71H                               代码表

         END                                                     程序结束

三、实践操作:

用THDPJ-3型单片机开发综合实验箱完成单片机软硬件系统的调试。

(1)使用单片机最小应用系统。打开该模块电源,用扁平数据线连接单片机P0口与八位动态数码管段码模块,用扁平数据线连接单片机P1口与八位动态数码管位码模块。

(2)将THKL-C51仿真器的USB接口接入电脑,目的是给仿真器提供电源,

此时仿真器上的POWER灯点亮。用串行数据通信线连接计算机与仿真器。

(3)把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。

(4)打开KeiluVision2仿真软件,首先建立本项目的项目文件,接着分别添加“一位LED数码管静态显示6.a”以及“一位LED数码管动态循环显示0~9.a”源程序,进行编译,直到编译无误。

(5)右击“Target 1”点击Options for Target‘Target 1’进行软件设置,选择Debug选项。点击“Use Keil Monitor-51 Driver进行硬件仿真。点击Settings按扭,选择串行口,设置波特率为38400,点击OK按扭。

(6)打开模块电源和总电源,点击开始调试按扭,点击RUN按钮 运行程序,观察LED数码管静态显示6以及动态循环显示0~9的情况。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

任务二、2位LED数码管的显示

一、学习目标

1、学习2位LED数码管静态显示与动态显示的编程方法。

二、相关知识

1、两位LED数码管静态显示“34”。

①硬件电路如路3-2-1所示:

图3-2-1两位数码管显示电路

图中需注意上述两位LED数码管,他们的公共端通过限流电阻连接P2.0及P2.1。由P2.0与P2.1的信号来选通个位或十位LED数码管。

②程序流程如图3-2-2所示:

先选通个位LED

4的字形码

再选通十位LED

3的字形码

开 始

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


图3-2-2 程序流程图

③程序清单:“两位LED数码管静态显示3、4.a”

 START  MOV    DPTR, #TABLE ;存入查表启始地址                    

 DISPLAYMOV    R3, #50       ; 设导通频率50

 LOOP1  MOV    A,  #4       ; 个位数显示

           ACALL  CHANG      ; 调显示子程序                 

           CLR     P2.0         ;开个位显示

           ACALL  DLY10mS    ; 调延时10ms程序               

           SETB    P2.0         ; 关闭个位显示                               

           MOV    A, #3        ; 取十位数

           ACALL  CHANG      ; 调取表显示子程序              

           CLR     P2.1         ;  开十位显示

           ACALL  DLY10mS    ; 调延时10ms程序  十位

           SETB    P2.1         ;  关闭十位显示                           

           DJNZ    R3, LOOP1   ; 100次没完,继续循环         

           JMP     START       ;                             

 CHANG MOVC   A, @A+DPTR ;

           MOV    P0, A        ;                 

           RET                  ;                                                          取表子程序

 DLY10mSMOV    R6, #20       

 D1      MOV    R7, #248     ;

            DJNZ    R7, $        ;

            DJNZ    R6, D1       ;                             延时10 m.S                        

            RET                  ;                              子程序

TABLE  DB  3FH,  06H,  5BH,  4FH 

         DB  66H,  6DH,  7DH,  07H 

     DB  7FH,  6FH,  77H,  7CH  

DB  39H,  5EH,  79H,  71H;                       代码表                     

           END                         ;                       程序结束

P2.0=0时,与其相连的共阳极数码管显示器开始工作。P2.0=1时,与其相连的数码管显示器停止工作。同理,当P2.1=0时,与其相连的共阳极数码管显示器开始工作。P2.1=1时,与其相连的数码管显示器停止工作。

本程序采用了扫描方式,采描方式是指让两位数码管轮流工作,即个位显示时,十位关闭;十位显示时,个位关闭。这样做的目的一是省电,二是节省输出端口。在静态显示时,一个端口只能接一个数码管。而利用扫描方式一个端口可以接几个数码管,并由数码管公共阴极的P2.0与P2.1的信号来决定哪只数码管显示。

两位数码管是轮流工作的,可是人眼却感到同时在亮,这是由于人眼的视觉暂留,只要足够快,就能形成同时亮的感觉。

数码管显示的亮度及清晰度与每位点亮时间和每位显示的时间内轮换导通次数有关。

2、两位数码管动态循环显示00~99。

①硬件电路如路3-2-1所示:                      

②程序流程如图3-2-3所示:

图3-2-3 程序流程图

③程序清单:“两位数码管动态循环显示00~99.a”

 START  MOV    R0, #0         ;初始化计数器                       

           MOV    DPTR, #TABLE ;存入查表启始地址

 LOOP   ACALL  DISPLAY      ; 调显示子程序

           INC     R0            ; 计数器加1       

           CJNE    R0 ,#100, LOOP ; 没到100 循环    

           JMP     START        ; 到开始处                     

 DISPLAY:  MOV   A, R0         

           MOV    B, #10         ; 16进制换成10进制

           DIV     AB           ; A÷B商存A,余数存B

           MOV    R1, A         ; R1内存放十位数              

           MOV    R2, B         ; R2内存放个位数              

           MOV    R3, #50       ; 设导通频率50

 LOOP1  MOV    A,  R2       ; 个位数显示

           ACALL  CHANG      ; 调显示子程序                 

           CLR     P2.0         ;开个位显示

           ACALL  DLY10mS    ; 调延时10ms程序               

           SETB    P2.0         ; 关闭个位显示                               

           MOV    A, R1        ; 取十位数

           ACALL  CHANG      ; 调取表显示子程序             

           CLR     P2.1         ;  开十位显示

           ACALL  DLY10mS    ; 调延时10ms程序  十位

           SETB    P2.1         ;  关闭十位显示                           

           DJNZ    R3, LOOP1   ; 100次没完,继续循环         

           RET                  ;                             

 CHANG MOVC   A, @A+DPTR ;

           MOV    P0, A        ;                 

           RET                  ;                                                          取表子程序

 DLY10mSMOV    R6, #20       

 D1      MOV    R7, #248     ;

           DJNZ    R7, $        ;

           DJNZ    R6, D1       ;                             延时10 m.S                        

           RET                  ;                               子程序

TABLE  DB  3FH,  06H,  5BH,  4FH 

         DB  66H,  6DH,  7DH,  07H 

     DB  7FH,  6FH,  77H,  7CH  

DB  39H,  5EH,  79H,  71H   ;                       代码表                     

           END                         ;                       程序结束

三、实践操作:

用THDPJ-3型单片机开发综合实验箱完成单片机软硬件系统的调试。

(1)使用单片机最小应用系统。打开该模块电源,用扁平数据线连接单片机P0口与八位动态数码管段码模块,用扁平数据线连接单片机P1口与八位动态数码管位码模块。

(2)将THKL-C51仿真器的USB接口接入电脑,目的是给仿真器提供电源,

此时仿真器上的POWER灯点亮。用串行数据通信线连接计算机与仿真器。

(3)把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。

(4)打开KeiluVision2仿真软件,首先建立本项目的项目文件,接着分别添加“两位LED数码管静态显示“34”.a”以及“两位数码管动态循环显示00~99.a”源程序,进行编译,直到编译无误。

(5)右击“Target 1”点击Options for Target‘Target 1’进行软件设置,选择Debug选项。点击“Use Keil Monitor-51 Driver进行硬件仿真。点击Settings按扭,选择串行口,设置波特率为38400,点击OK按扭。

(6)打开模块电源和总电源,点击开始调试按扭,点击RUN按钮 运行程序,观察2位LED数码管静态显示34以及动态循环显示00~99的情况。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

任务三、6位LED数码管的显示

一、学习目标

1、学习6位LED数码管静态显示的编程方法。

二、相关知识

1、6位LED数码管恒定显示“123456”

①硬件电路如图6-3-1所示:

图6-3-1 6位LED数码管恒定显示电路

单片机的P0端口通过限流电阻接6位LED数码管,每个数码管的段线并联在一起,由P0口控制。每个LED数码管的公共端(位选端)由P1.0、P1.1、P1.2、P1.3、P1.4、P1.5控制。当P1.5=0时,选通个位LED数码管,当P1.4=0时,选通十位LED数码管,以此类推,一直到当P1.0=0时,选通十万位LED数码管。

②程序流程如图6-3-2所示:

选通个位LED

6的字形码

选通十位LED

5的字形码

选通百位LED

4的字形码

选通千位LED

3的字形码

选通万位LED

2的字形码

选通十万位LED

1的字形码

开 始

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


图6-3-2 程序流程图

③程序清单:“6位LED数码管恒定显示“1、2、3、4、5、6.a”

START  MOV    DPTR, #TABLE ;存入查表启始地址                    

 DISPLAYMOV    R3, #50       ; 设导通频率50

 LOOP1  MOV    A,  #6       ; 个位数显示

           ACALL  CHANG      ; 调显示子程序                 

           CLR     P1.5         ;开个位显示

           ACALL  DLY10mS    ; 调延时10ms程序              

           SETB    P1.5         ; 关闭个位显示                               

MOV    A, #5        ; 取十位数

           ACALL  CHANG      ; 调取表显示子程序             

           CLR     P1.4         ;  开十位显示

           ACALL  DLY10mS    ; 调延时10ms程序  十位

           SETB    P1.4         ;  关闭十位显示

MOV    A, #4        ; 取百位数

           ACALL  CHANG      ; 调取表显示子程序             

           CLR     P1.3         ;  开百位显示

           ACALL  DLY10mS    ; 调延时10ms程序  百位

           SETB    P1.3         ;  关闭百位显示

MOV    A, #3        ; 取千位数

           ACALL  CHANG      ; 调取表显示子程序             

           CLR     P1.2         ;  开千位显示

           ACALL  DLY10mS    ; 调延时10ms程序  千位

           SETB    P1.2         ;  关闭千位显示                           

MOV    A, #2        ; 取万位数

           ACALL  CHANG      ; 调取表显示子程序             

           CLR     P1.1         ;  开万位显示

           ACALL  DLY10mS    ; 调延时10ms程序  万位

           SETB    P1.1         ;  关闭万位显示

           MOV    A, #1        ; 取十万位数

           ACALL  CHANG      ; 调取表显示子程序             

           CLR     P1.0         ;  开十万位显示

           ACALL  DLY10mS    ; 调延时10ms程序  十万位

           SETB    P1.0         ;  关闭十万位显示

           DJNZ    R3, LOOP1   ; 100次没完,继续循环         

           JMP     START       ;                             

 CHANG MOVC   A, @A+DPTR ;

           MOV    P0, A        ;                 

           RET                  ;                                                          取表子程序

 DLY10mSMOV    R6, #20       

 D1      MOV    R7, #248     ;

           DJNZ    R7, $        ;

           DJNZ    R6, D1       ;                             延时10 m.S                        

           RET                  ;                               子程序

TABLE  DB  3FH,  06H,  5BH,  4FH 

         DB  66H,  6DH,  7DH,  07H 

     DB  7FH,  6FH,  77H,  7CH  

DB  39H,  5EH,  79H,  71H   ;                       代码表                     

           END                         ;                       程序结束

三、实践操作:

用THDPJ-3型单片机开发综合实验箱完成单片机软硬件系统的调试。

(1)使用单片机最小应用系统。打开该模块电源,用扁平数据线连接单片机P0口与八位动态数码管段码模块,用扁平数据线连接单片机P1口与八位动态数码管位码模块。

教学设计:LED数码管的显示

任务一、1位LED数码管的显示

一、学习目标

1、了解七段LED数码管的结构、分类以及数码管的显示码。

2、学习1位LED数码管静态显示与动态显示的编程方法。

二、相关知识

1、七段LED数码管:

LED数码管是单片机控制系统中最常见的显示器件之一,一般用来显示处理结果以及输入输出信号的状态。

①LED数码管的结构:

LED数码管是由8个发光二极管中的7个长条形发光二极管(俗称7笔段)

按a、b、c、d、e、f、g顺序组成“8”字形,另一个点形的发光二极管dp放在右下方,用来显示小数点,如图3-1-1(a)所示。只要控制7笔段按一定的要求亮与灭,就能显示出十六进制0~F。

   

   (a)            (b)               (c)        

            图3-1-1 LED数码管的结构               3-1-2 LED引脚

LED数码管按内部连接方式又分为“共阳极数码管”和“共阴极数码管”两种。若8个发光二极管的阳极连在一起接电源正极为共阳极数码管,如图3-1-1(b)所示。若8个发光二极管的阴极连在一起接地则为共阴极数码管,如图3-1-1(c)图所示。下文如不特别说明,所用LED数码管都为共阴极数码管。

共阴极数码管的引脚如图3-1-2所示,共有10只引脚,其中3、8引脚连通,作为公共端接地。

②数码管显示码:

数码管显示码是表述二进制数与数码管所显示字符的对应关系的。如表

3-1-3所示。

表3-1-3数码管显示码

2、一位LED数码管静态显示“6”

①硬件电路如图3-1-4所示。               

图3-1-4 1位LED数码管显示电路图

为了保证LED数码管的正常运行,必须在连接P0口的基础上,各位串联一限流电阻R,阻值可取360。LED数码管的公共端通过限流电阻接P1.0,由P1.0的信号来选通LED数码管,当P1.0=0数码管选通,当P1.0=1数码管未选通。

②程序流程图如图3-1-5所示:

图3-1-5 程序流程图

③程序清单:“一位LED数码管静态显示6.a”

START:  CLR    P1.0            ;  选通个位LED数码管

MOV   DPTR, #TABLE  ;  存入表的起始地址

MOV   A, #6           ;  将欲显示的数字6存入A

          MOVC  A, @A+DPTR   ;  按地址取代码并存入A

        MOV   P0, A           ;  将代码送P0转变数字显示

        SJMP    $             ;  程序运行在当前状态

TABLE:  DB  3FH,  06H,  5BH,  4FH 

        DB  66H,  6DH,  7DH,  07H 

    DB  7FH,  6FH,  77H,  7CH  

DB  39H,  5EH,  79H,  71H  ;代码表

END                                        

3、一位LED数码管动态循环显示0~9。

①硬件电路如图3-1-4所示。

②程序流程图:

图3-1-6  程序流程图

③程序清单:“一位LED数码管动态循环显示0~9.a”

START: CLR     P1.0             ;选通个位LED数码管

MOV    DPTR, #TABLE    ; 存表

   MOV    R0, #0            ; 设定初始值

LOOP : MOV    A, R0             

        MOVC   A, @A+DPTR     ; 取表代码

      MOV     P0, A            ; 送P0输出      

         ACALL   DLY1S           ; 调延时程序                     存表取表 

       INC      R0               ; R0值 加1      

         CJNE    R0, #10 , LOOP     ; 不是10,循环

        JMP     START            ; 重新开始                       判断循环

DLY1S: MOV    R5, #50            ;

D1:     MOV    R6, #100           ;

D2:     MOV    R7, #100           ;

     DJNZ    R7, $              ;

      DJNZ    R6, D2             ;

       DJNZ    R5, D1             ;                              1秒延时

    RET                        ;                             子程序

TABLE: DB  3FH,  06H,  5BH,  4FH 

       DB  66H,  6DH,  7DH,  07H 

   DB  7FH,  6FH,  77H,  7CH  

DB  39H,  5EH,  79H,  71H  ;                             代码表

         END                        ;                             程序结束

三、实践操作:

用THDPJ-3型单片机开发综合实验箱完成单片机软硬件系统的调试。

(1)使用单片机最小应用系统。打开该模块电源,用扁平数据线连接单片机P0口与八位动态数码管段码模块,用扁平数据线连接单片机P1口与八位动态数码管位码模块。

(2)将THKL-C51仿真器的USB接口接入电脑,目的是给仿真器提供电源,

此时仿真器上的POWER灯点亮。用串行数据通信线连接计算机与仿真器。

(3)把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。

(4)打开KeiluVision2仿真软件,首先建立本项目的项目文件,接着分别添加“一位LED数码管静态显示6.a”以及“一位LED数码管动态循环显示0~9.a”源程序,进行编译,直到编译无误。

(5)右击“Target 1”点击Options for Target‘Target 1’进行软件设置,选择Debug选项。点击“Use Keil Monitor-51 Driver进行硬件仿真。点击Settings按扭,选择串行口,设置波特率为38400,点击OK按扭。

(6)打开模块电源和总电源,点击开始调试按扭 ,点击RUN按钮 运行程序,观察LED数码管静态显示6以及动态循环显示0~9的情况。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

任务二、2位LED数码管的显示

一、学习目标

1、学习2位LED数码管静态显示与动态显示的编程方法。

二、相关知识

1、两位LED数码管静态显示“34”。

①硬件电路如路3-2-1所示:

图3-2-1两位数码管显示电路

图中需注意上述两位LED数码管,他们的公共端通过限流电阻连接P2.0及P2.1。由P2.0与P2.1的信号来选通个位或十位LED数码管。

②程序流程如图3-2-2所示:

先选通个位LED

4的字形码

再选通十位LED

3的字形码

开 始

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


图3-2-2 程序流程图

③程序清单:“两位LED数码管静态显示3、4.a”

 START:  MOV    DPTR, #TABLE ;存入查表启始地址                    

 DISPLAY:MOV    R3, #50       ; 设导通频率50次

 LOOP1:  MOV    A,  #4       ; 个位数显示

           ACALL  CHANG      ; 调显示子程序                 

           CLR     P2.0         ;开个位显示

           ACALL  DLY10mS    ; 调延时10ms程序               

           SETB    P2.0         ; 关闭个位显示                               

           MOV    A, #3        ; 取十位数

           ACALL  CHANG      ; 调取表显示子程序              

           CLR     P2.1         ;  开十位显示

           ACALL  DLY10mS    ; 调延时10ms程序  十位

           SETB    P2.1         ;  关闭十位显示                           

           DJNZ    R3, LOOP1   ; 100次没完,继续循环         

           JMP     START       ;                             

 CHANG: MOVC   A, @A+DPTR ;

           MOV    P0, A        ;                 

           RET                  ;                                                          取表子程序

 DLY10mS:MOV    R6, #20      ; 

 D1:      MOV    R7, #248     ;

            DJNZ    R7, $        ;

            DJNZ    R6, D1       ;                             延时10 m.S                        

            RET                  ;                              子程序

TABLE:  DB  3FH,  06H,  5BH,  4FH 

         DB  66H,  6DH,  7DH,  07H 

     DB  7FH,  6FH,  77H,  7CH  

DB  39H,  5EH,  79H,  71H;                       代码表                     

           END                         ;                       程序结束

P2.0=0时,与其相连的共阳极数码管显示器开始工作。P2.0=1时,与其相连的数码管显示器停止工作。同理,当P2.1=0时,与其相连的共阳极数码管显示器开始工作。P2.1=1时,与其相连的数码管显示器停止工作。

本程序采用了扫描方式,采描方式是指让两位数码管轮流工作,即个位显示时,十位关闭;十位显示时,个位关闭。这样做的目的一是省电,二是节省输出端口。在静态显示时,一个端口只能接一个数码管。而利用扫描方式一个端口可以接几个数码管,并由数码管公共阴极的P2.0与P2.1的信号来决定哪只数码管显示。

两位数码管是轮流工作的,可是人眼却感到同时在亮,这是由于人眼的视觉暂留,只要足够快,就能形成同时亮的感觉。

数码管显示的亮度及清晰度与每位点亮时间和每位显示的时间内轮换导通次数有关。

2、两位数码管动态循环显示00~99。

①硬件电路如路3-2-1所示:                      

②程序流程如图3-2-3所示:

图3-2-3 程序流程图

③程序清单:“两位数码管动态循环显示00~99.a”

 START:  MOV    R0, #0         ;初始化计数器                       

           MOV    DPTR, #TABLE ;存入查表启始地址

 LOOP:   ACALL  DISPLAY      ; 调显示子程序

           INC     R0            ; 计数器加1       

           CJNE    R0 ,#100, LOOP ; 没到100 循环    

           JMP     START        ; 到开始处                     

 DISPLAY:  MOV   A, R0         

           MOV    B, #10         ; 16进制换成10进制

           DIV     AB           ; A÷B商存A,余数存B

           MOV    R1, A         ; R1内存放十位数              

           MOV    R2, B         ; R2内存放个位数              

           MOV    R3, #50       ; 设导通频率50次

 LOOP1:  MOV    A,  R2       ; 个位数显示

           ACALL  CHANG      ; 调显示子程序                 

           CLR     P2.0         ;开个位显示

           ACALL  DLY10mS    ; 调延时10ms程序               

           SETB    P2.0         ; 关闭个位显示                               

           MOV    A, R1        ; 取十位数

           ACALL  CHANG      ; 调取表显示子程序             

           CLR     P2.1         ;  开十位显示

           ACALL  DLY10mS    ; 调延时10ms程序  十位

           SETB    P2.1         ;  关闭十位显示                           

           DJNZ    R3, LOOP1   ; 100次没完,继续循环         

           RET                  ;                             

 CHANG: MOVC   A, @A+DPTR ;

           MOV    P0, A        ;                 

           RET                  ;                                                          取表子程序

 DLY10mS:MOV    R6, #20      ; 

 D1:      MOV    R7, #248     ;

           DJNZ    R7, $        ;

           DJNZ    R6, D1       ;                             延时10 m.S                        

           RET                  ;                               子程序

TABLE:  DB  3FH,  06H,  5BH,  4FH 

         DB  66H,  6DH,  7DH,  07H 

     DB  7FH,  6FH,  77H,  7CH  

DB  39H,  5EH,  79H,  71H   ;                       代码表                     

           END                         ;                       程序结束

三、实践操作:

用THDPJ-3型单片机开发综合实验箱完成单片机软硬件系统的调试。

(1)使用单片机最小应用系统。打开该模块电源,用扁平数据线连接单片机P0口与八位动态数码管段码模块,用扁平数据线连接单片机P1口与八位动态数码管位码模块。

(2)将THKL-C51仿真器的USB接口接入电脑,目的是给仿真器提供电源,

此时仿真器上的POWER灯点亮。用串行数据通信线连接计算机与仿真器。

(3)把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。

(4)打开KeiluVision2仿真软件,首先建立本项目的项目文件,接着分别添加“两位LED数码管静态显示“34”.a”以及“两位数码管动态循环显示00~99.a”源程序,进行编译,直到编译无误。

(5)右击“Target 1”点击Options for Target‘Target 1’进行软件设置,选择Debug选项。点击“Use Keil Monitor-51 Driver进行硬件仿真。点击Settings按扭,选择串行口,设置波特率为38400,点击OK按扭。

(6)打开模块电源和总电源,点击开始调试按扭 ,点击RUN按钮 运行程序,观察2位LED数码管静态显示34以及动态循环显示00~99的情况。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

任务三、6位LED数码管的显示

一、学习目标

1、学习6位LED数码管静态显示的编程方法。

二、相关知识

1、6位LED数码管恒定显示“123456”

①硬件电路如图6-3-1所示:

图6-3-1 6位LED数码管恒定显示电路

单片机的P0端口通过限流电阻接6位LED数码管,每个数码管的段线并联在一起,由P0口控制。每个LED数码管的公共端(位选端)由P1.0、P1.1、P1.2、P1.3、P1.4、P1.5控制。当P1.5=0时,选通个位LED数码管,当P1.4=0时,选通十位LED数码管,以此类推,一直到当P1.0=0时,选通十万位LED数码管。

②程序流程如图6-3-2所示:

选通个位LED

6的字形码

选通十位LED

5的字形码

选通百位LED

4的字形码

选通千位LED

3的字形码

选通万位LED

2的字形码

选通十万位LED

1的字形码

开 始

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


图6-3-2 程序流程图

③程序清单:“6位LED数码管恒定显示“1、2、3、4、5、6.a”

START:  MOV    DPTR, #TABLE ;存入查表启始地址                    

 DISPLAY:MOV    R3, #50       ; 设导通频率50次

 LOOP1:  MOV    A,  #6       ; 个位数显示

           ACALL  CHANG      ; 调显示子程序                 

           CLR     P1.5         ;开个位显示

           ACALL  DLY10mS    ; 调延时10ms程序              

           SETB    P1.5         ; 关闭个位显示                               

MOV    A, #5        ; 取十位数

           ACALL  CHANG      ; 调取表显示子程序             

           CLR     P1.4         ;  开十位显示

           ACALL  DLY10mS    ; 调延时10ms程序  十位

           SETB    P1.4         ;  关闭十位显示

MOV    A, #4        ; 取百位数

           ACALL  CHANG      ; 调取表显示子程序             

           CLR     P1.3         ;  开百位显示

           ACALL  DLY10mS    ; 调延时10ms程序  百位

           SETB    P1.3         ;  关闭百位显示

MOV    A, #3        ; 取千位数

           ACALL  CHANG      ; 调取表显示子程序             

           CLR     P1.2         ;  开千位显示

           ACALL  DLY10mS    ; 调延时10ms程序  千位

           SETB    P1.2         ;  关闭千位显示                           

MOV    A, #2        ; 取万位数

           ACALL  CHANG      ; 调取表显示子程序             

           CLR     P1.1         ;  开万位显示

           ACALL  DLY10mS    ; 调延时10ms程序  万位

           SETB    P1.1         ;  关闭万位显示

           MOV    A, #1        ; 取十万位数

           ACALL  CHANG      ; 调取表显示子程序             

           CLR     P1.0         ;  开十万位显示

           ACALL  DLY10mS    ; 调延时10ms程序  十万位

           SETB    P1.0         ;  关闭十万位显示

           DJNZ    R3, LOOP1   ; 100次没完,继续循环         

           JMP     START       ;                             

 CHANG: MOVC   A, @A+DPTR ;

           MOV    P0, A        ;                 

           RET                  ;                                                          取表子程序

 DLY10mS:MOV    R6, #20      ; 

 D1:      MOV    R7, #248     ;

           DJNZ    R7, $        ;

           DJNZ    R6, D1       ;                             延时10 m.S                        

           RET                  ;                               子程序

TABLE:  DB  3FH,  06H,  5BH,  4FH 

         DB  66H,  6DH,  7DH,  07H 

     DB  7FH,  6FH,  77H,  7CH  

DB  39H,  5EH,  79H,  71H   ;                       代码表                     

           END                         ;                       程序结束

三、实践操作:

用THDPJ-3型单片机开发综合实验箱完成单片机软硬件系统的调试。

(1)使用单片机最小应用系统。打开该模块电源,用扁平数据线连接单片机P0口与八位动态数码管段码模块,用扁平数据线连接单片机P1口与八位动态数码管位码模块。

(2)将THKL-C51仿真器的USB接口接入电脑,目的是给仿真器提供电源,

此时仿真器上的POWER灯点亮。用串行数据通信线连接计算机与仿真器。

(3)把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。

(4)打开KeiluVision2仿真软件,首先建立本项目的项目文件,接着分别添加“6位LED数码管恒定显示“1、2、3、4、5、6.a”源程序,进行编译,直到编译无误。

(5)右击“Target 1”点击Options for Target‘Target 1’进行软件设置,选择Debug选项。点击“Use Keil Monitor-51 Driver进行硬件仿真。点击Settings按扭,选择串行口,设置波特率为38400,点击OK按扭。

(6)打开模块电源和总电源,点击开始调试按扭 ,点击RUN按钮 运行程序,观察6位LED数码管静态显示123456的情况。

 

(2)将THKL-C51仿真器的USB接口接入电脑,目的是给仿真器提供电源,

 

此时仿真器上的POWER灯点亮。用串行数据通信线连接计算机与仿真器。

(3)把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。

(4)打开KeiluVision2仿真软件,首先建立本项目的项目文件,接着分别添加“6位LED数码管恒定显示“1、2、3、4、5、6.a”源程序,进行编译,直到编译无误。

(5)右击“Target 1”点击Options for Target‘Target 1’进行软件设置,选择Debug选项。点击“Use Keil Monitor-51 Driver进行硬件仿真。点击Settings按扭,选择串行口,设置波特率为38400,点击OK按扭。

(6)打开模块电源和总电源,点击开始调试按扭,点击RUN按钮 运行程序,观察6位LED数码管静态显示123456的情况。

你可能感兴趣的:(LED数码管的显示)