HD7279应用文章——51驱动 HD7279 硬件实测通过

附C及汇编源程序以及C与汇编混排程序
;-----------------------------------------------------------------
;创建日期:2006-11-23
;修改日期:2006-11-23
;创建人: 李明星
;电子邮件: lmx_hello@163.com ? 如需更详细资料请给我发信索取

C语言代码

#include <reg51.h>

/*---   ---   函数声明   ---   ---*/
void delay(unsigned int time);
void cmd(unsigned char cmd);
void Display(void);

/*---   ---   变量声明   ---   ---*/
unsigned char DispDat[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};

/*-- -------定义HD7279引角---- -----*/
  sbit   cs   =   P1^0;
  sbit   clk   =   P1^1;
  sbit   din   =   P1^2;
/*--------------------------------------;---------------------------------------
;                       HD7279指令表
;                                       创建人:starli
;                                       日 期:2006.11.22
;单字节:
;复位指令:0A4H   测试指令:0BFH
;左移指令:0A1H   右移指令:0A0H   循环左移:0A3H   循环右移:0A2H
;双字节:
;1.下载数据并按方式0译码
; 数据格式 1 0 0 0 0 a2 a1 a0     dp x x x d3 d2 d1 d0
;2.下载数据并按方式1译码
; 数据格式 1 1 0 0 1 a2 a1 a0     dp x x x d3 d2 d1 d0
;3.下载数据但不译码
; 数据格式 1 0 0 1 0 a2 a1 a0     dp a b c d e f g
;4.闪烁控制
; 数据格式 1 0 0 0 1 0 0 0     d7 d6 d5 d4 d3 d2 d1 d0
;5.消隐控制
; 数据格式 1 0 0 1 1 0 0 0     d7 d6 d5 d4 d3 d2 d1 d0
; 版   本:VER 2.1 C语言 版                                ★STALI☆
;---------------------------------------;-------------------------------------*/
/*--------------------------------------
;模块名称:Delay();
;功   能:延时函数
;占用资源:
;创建日期:2006.11.23
;版   本:VER 2.0         ★STALI☆
;-------------------------------------*/
void delay(unsigned int time)
{
  unsigned int s;
  for(s=0;s<time;s++);  
}
/*--------------------------------------
;模块名称:cmd
;功   能:发送命令字节
;占用资源:
;创建日期:2006.11.23
;版   本:VER 2.0         ★STALI☆
;-------------------------------------*/
void cmd(unsigned char cmd)
{  
  unsigned char i;
  clk = 0;
  cs   = 0;
  delay(20);
  BitDat = cmd;
  for(i=0;i<8;i++)
  {
    din = MSB;
    clk = 1;
    delay(4);
    clk = 0;
    delay(4);
    BitDat <<= 1;
  }
}

/*--------------------------------------
;模块名称:Display
;功   能:HD7279显示功能
;占用资源:
;创建日期:2006.11.22
;版   本:VER 2.0         ★STALI☆
;-------------------------------------*/
void Display(void)
{
  unsigned char i,j=0x80;

  for (i=0;i<8;i++)
  {
    cmd(j);
    delay(4);
    cmd(DispDat);
    cs = 1;
    j++;
  }

}
void main()
{
  cmd(0xa4);
  Display();
  while(1);
  {
  ;
  }
}






汇编代码



;---------------------------------------;---------------------------------------
;                       HD7279指令表
;                                       创建人:starli
;                                       日 期:2006.11.22
;单字节:
;复位指令:0A4H   测试指令:0BFH
;左移指令:0A1H   右移指令:0A0H   循环左移:0A3H   循环右移:0A2H
;双字节:
;1.下载数据并按方式0译码
; 数据格式 1 0 0 0 0 a2 a1 a0     dp x x x d3 d2 d1 d0
;2.下载数据并按方式1译码
; 数据格式 1 1 0 0 1 a2 a1 a0     dp x x x d3 d2 d1 d0
;3.下载数据但不译码
; 数据格式 1 0 0 1 0 a2 a1 a0     dp a b c d e f g
;4.闪烁控制
; 数据格式 1 0 0 0 1 0 0 0     d7 d6 d5 d4 d3 d2 d1 d0
;5.消隐控制
; 数据格式 1 0 0 1 1 0 0 0     d7 d6 d5 d4 d3 d2 d1 d0
; 版   本:VER 1.0                                     ★STALI☆
;---------------------------------------;---------------------------------------
    ORG   0000H
    AJMP MAIN
    ORG   0030H
MAIN:   MOV   SP,#5FH
    MOV   30H,#00H
    MOV   31H,#01H
    MOV   32H,#02H
    MOV   33H,#03H
    MOV   34H,#04H
    MOV   35H,#05H
    MOV   36H,#06H
    MOV   37H,#07H
    MOV   A,#0A4H
    ACALL SCMD
    ACALL DISPLAY
    SJMP $
;---------------------------------------
;模块名称:DISPLAY
;功   能:HD7279显示功能
;占用资源:R0、R7、R5、ACC、CY
;创建日期:2006.11.22
;版   本:VER 1.0         ★STALI☆
;---------------------------------------
    CS   BIT P1.0
    CLK   BIT P1.1
    DIN   BIT P1.2
DISPLAY:MOV   R0,#30H
    MOV   R7,#80H
    MOV   R5,#8
D_M:   ACALL WRCMD
    INC   R7
    INC   R0
    DJNZ R5,D_M
    RET
;---   ---   ---   ---   ---   ---   ---
WRCMD: MOV   A,R7
    ACALL CMD
    ACALL D10
    MOV   A,@R0
    ACALL CMD
    SETB CS
    RET
;---------------------------------------
;模块名称:CMD
;功   能:发送命令字节
;占用资源:R4、ACC、CY
;创建日期:2006.11.22
;版   本:VER 1.0         ★STALI☆
;---------------------------------------
CMD:   CLR   CLK
    CLR   CS
    MOV   R4,#08H
    ACALL D50
RECMD: RLC   A
    MOV   DIN,C
    SETB CLK
    ACALL D10
    CLR   CLK
    ACALL D10
    DJNZ R4,RECMD
    RET
;---   ---   ---   ---   ---   ---   ---
SCMD:   ACALL CMD
    SETB CS
    RET

;---------------------------------------
D50:   MOV R3,#25
    DJNZ R3,$
    RET
;---------------------------------------
D10:   MOV R3,#4
    DJNZ R3,$
    RET
;---------------------------------------
    DELAYH   EQU   41H
    DELAYL   EQU   40H
DELAY: MOV DELAYL,#255
D1:   MOV DELAYH,#255
    NOP
    NOP
    NOP
    NOP
    NOP
    DJNZ DELAYH,$
    NOP
    DJNZ DELAYL,D1
    RET
;---------------------------------------
    END

  
img1
img2
img3 

***敬请使用firefox或chrome浏览器以取得最佳效果***
Copyrigh1999-2011 北京凌志比高科技有限公司 版权所有
电话:(010) 62981567,82895285,82895286,13391571388 传真:82895286
地址:北京市海淀区上地信息路一号国际创业园 1号楼402室(100085)