
|

|
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


|