当前位置: 本站首页>单片机栏>单片机实战例程> 点阵式LED“0-9”数字显示技术

点阵式LED“0-9”数字显示技术

单片机系列实验
来源:网络作者:未知 字号:[ ]

1.实验任务
利用8X8点阵显示数字0到9的数字。
2.电路原理图
点阵式LED“0-9”数字显示技术
                                                                                            图4.25.1
3.硬件系统连线
(1).把“单片机系统”区域中的P1端口用8芯排芯连接到“点阵模块”区域中的“DR1-DR8”端口上;
(2).把“单片机系统”区域中的P3端口用8芯排芯连接到“点阵模块”区域中的“DC1-DC8”端口上;
4.程序设计内容
(1).数字0-9点阵显示代码的形成
  如下图所示,假设显示数字“0”
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00 00  3E  41  41  41  3E 00
  因此,形成的列代码为 00H,00H,3EH,41H,41H,3EH,00H,00H;只要把这些代码分别送到相应的列线上面,即可实现“0”的数字显示。
  送显示代码过程如下所示
  送第一列线代码到P3端口,同时置第一行线为“0”,其它行线为“1”,延时2ms左右,送第二列线代码到P3端口,同时置第二行线为“0”,其它行线为“1”,延时2ms左右,如此下去,直到送完最后一列代码,又从头开始送。
数字“1”代码建立如下图所示

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

其显示代码为 00H,00H,00H,00H,21H,7FH,01H,00H
数字“2”代码建立如下图所示
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,27H,45H,45H,45H,39H,00H
数字“3”代码建立如下图所示

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,22H,49H,49H,49H,36H,00H
数字“4”代码建立如下图所示
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,0CH,14H,24H,7FH,04H,00H
数字“5”代码建立如下图所示
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,72H,51H,51H,51H,4EH,00H
数字“6”代码建立如下图所示

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,3EH,49H,49H,49H,26H,00H
数字“7”代码建立如下图所示
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,40H,40H,40H,4FH,70H,00H
数字“8”代码建立如下图所示
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,36H,49H,49H,49H,36H,00H
数字“9”代码建立如下图所示

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,32H,49H,49H,49H,3EH,00H
5.汇编源程序
TIM           EQU 30H
CNTA        EQU 31H
CNTB        EQU 32H
                   ORG 00H
                   LJMP START
                   ORG 0BH
                   LJMP T0X
                   ORG 30H
START:      MOV TIM,#00H
                   MOV CNTA,#00H
                   MOV CNTB,#00H
                   MOV TMOD,#01H
                   MOV TH0,#(65536-4000)/256
                   MOV TL0,#(65536-4000) MOD 256
                   SETB TR0
                   SETB ET0
                   SETB EA
                   SJMP $
T0X:
                   MOV TH0,#(65536-4000)/256
                   MOV TL0,#(65536-4000) MOD 256
                   MOV DPTR,#TAB
                   MOV A,CNTA
                   MOVC A,@A+DPTR
                   MOV P3,A
                   MOV DPTR,#DIGIT
                   MOV A,CNTB
                   MOV B,#8
                   MUL AB
                   ADD A,CNTA
                   MOVC A,@A+DPTR
            MOV P1,A
                   INC CNTA
                   MOV A,CNTA
                   CJNE A,#8,NEXT
                   MOV CNTA,#00H
NEXT:       INC TIM
                   MOV A,TIM
                   CJNE A,#250,NEX
                   MOV TIM,#00H
                   INC CNTB
                   MOV A,CNTB
                   CJNE A,#10,NEX
                   MOV CNTB,#00H
NEX:         RETI
TAB:                   DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
DIGIT:          DB 00H,00H,3EH,41H,41H,41H,3EH,00H
                   DB 00H,00H,00H,00H,21H,7FH,01H,00H
                   DB 00H,00H,27H,45H,45H,45H,39H,00H
                   DB 00H,00H,22H,49H,49H,49H,36H,00H
                   DB 00H,00H,0CH,14H,24H,7FH,04H,00H
                   DB 00H,00H,72H,51H,51H,51H,4EH,00H
                   DB 00H,00H,3EH,49H,49H,49H,26H,00H
                   DB 00H,00H,40H,40H,40H,4FH,70H,00H
                   DB 00H,00H,36H,49H,49H,49H,36H,00H
                   DB 00H,00H,32H,49H,49H,49H,3EH,00H
                   END
6.C语言源程序
#include
unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char code digittab[10][8]={         {0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},     //0
                                    {0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00},     //1
                                    {0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00},    //2
                                    {0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00},    //3
                                    {0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00},     //4
                                    {0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00},    //5
                                    {0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00},    //6
                                    {0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00},     //7
                                    {0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00},    //8
                                    {0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00}     //9
                                    };
unsigned int timecount;
unsigned char cnta;
unsigned char cntb;
void main(void)
{
  TMOD=0x01;
  TH0=(65536-3000)/256;
  TL0=(65536-3000)%6;
  TR0=1;
  ET0=1;
  EA=1;
  while(1)
    {;
    }
}
void t0(void) interrupt 1 using 0
{
  TH0=(65536-3000)/256;
  TL0=(65536-3000)%6;
  P3=tab[cnta];
  P1=digittab[cntb][cnta];
  cnta++;
  if(cnta==8)
    {
      cnta=0;
    }
  timecount++;
  if(timecount==333)
    {
      timecount=0;
      cntb++;
      if(cntb==10)
        {
          cntb=0;
        }
    }
}

TAG标签: 单片机实验
顶一下
(11)
91.7%
踩一下
(1)
8.3%
------分隔线----------------------------
搜  索
推荐内容