请问谁有51单片机用74HC595的数码管以及16*16点阵的程序例子?汇编语言的!

有就发给我,我的邮箱429720225@qq.com!感谢!

第1个回答  2011-01-09
;16*16点阵左移汇编程序
DS_595 EQU P1.5 ;串行数据输入(595-14)
CH_595 EQU P1.7 ;移位时钟脉冲(595-11)
CT_595 EQU P1.6 ;输出锁存器控制脉冲(595-12)
G_595 EQU P1.4

ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TIME
ORG 0100H
MAIN: MOV SP,#60H
CLR G_595
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
SETB TR0
SETB ET0
MOV R2,#2 ;滚动时间
MOV DPTR,#TAB
inc dptr
inc dptr
MOV 20H,DPH
MOV 21H,DPL
MOV DPTR,#TAB
SETB EA
SCA: MOV R1,DPH
MOV R5,DPL
MOV R3,#00H ;扫描信号初值
MOV R4,#00H
MOV 2fh,#0feH
SCA1:; MOV P3,R3
MOV A,R4
MOVC A,@A+DPTR
CALL WR_595;595串行输入,并行输出
NOP
NOP
INC R4
MOV A,R4
MOVC A,@A+DPTR
CALL WR_595;595串行输入,并行输出
NOP
NOP

CALL DEL

SETB CT_595 ;上升沿将数据送到输出锁存器,显示
NOP
NOP
CLR CT_595
INC R4;取码指针加1
call llsm

CALL DEL

INC R3
CJNE R3,#16,SCA1
LJMP SCA

DEL: MOV R6,#2
MOV R7,#248
DJNZ R7,$
DJNZ R6,$
RET

TIME: CLR EA
MOV 30H,A
PUSH 30H
MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ R2,LOOP
MOV R2,#2
CLR C
MOV A,R5
ADD A,#2
MOV R5,A
MOV DPL,R5
MOV A,R1
ADDC A,#0
MOV R1,A
MOV DPH,R1
CJNE A,20H,LOOP
MOV A,R5
CJNE A,21H,LOOP
MOV DPTR,#TAB
LOOP: POP 30H
MOV A,30H
SETB EA
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;*****移位寄存器接收一个字节
WR_595: MOV R7,#08H ;一个字节数据(8位)
LOOP_: RLC A ;数据移位
MOV DS_595,C ;送数据到串行数据输入端上(P1.0)
CLR CH_595 ;拉低移位时钟
NOP
NOP
setb CH_595 ;上升沿发生移位(移入一数据)
DJNZ R7,LOOP_ ;一个字节数据没移完继续
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
llsm:;逐列扫描
CJNE R3,#8,JCC
JCC:JnC P00
MOV P2,#0FFH
MOV P0,2fH;扫描P0
MOV A,2fH
RL A
MOV 2fH,A
AJMP XX
P00:MOV P0,#0FFH
MOV P2,2fH;扫描P2
MOV A,2fH
RL A
MOV 2fH,A
XX:ret
TAB: DB 32,4,32,4,34,66,34,130,254,127,33,1,33,1,32,16;
DB 32,16,255,8,32,7,34,26,172,33,32,64,32,240,0,0;"我",0
DB 0,64,64,32,178,160,150,144,154,76,146,71,246,42,154,42;
DB 147,18,145,26,153,38,151,34,145,64,144,192,48,64,0,0;"爱",1
第3个回答  2011-01-04
你的这个不是乱码就有问题了!~
你仔细理解一下这段

void wr595(uchar dat)
{
uchar a;
for(a=8;a>0;a--)
{
SH_CP=0;
DS=dat&0x80;
dat<<=1;
SH_CP=1;
_nop_();
_nop_();
SH_CP=0;
_nop_();
_nop_();
SH_CP=1;
}
}

你的for循环是有问题的
以为你的每个字节移了多次
所以就乱码了

void wr595(uchar dat)
{
uchar a;
for(a=8;a>0;a--)
{
SH_CP=0;
DS=dat&0x80;
dat<<=1;
SH_CP=1;
_nop_();
_nop_();
}
}
你看看下面的
去掉一个
第4个回答  2011-01-02
这个网上很多啦,去google能找到很多例子

51单片机 74HC595驱动共阴数码管,简单的几行代码,求大神看一下对不对...
temp = byte&(1<<i); \/\/数据移位 if(temp){ HC595_DAT = 1; \/\/14脚,串行输入有效 } else { HC595_DAT=0;} 改成:HC595_DAT = byte & 0x80 byte <<= 1

怎样用74HC595写数码管程序
define HC595_LCLK_LOW PORTC &=~(1<<1)\/\/输入时钟线 把数据写入74HC595 pc0只决定电平大小 给上升沿才能输入 define HC595_SCLK(串行时钟)_HIGH PORTC |=(1<<2)define HC595_SCLK_LOW PORTC &=~(1<<2)\/\/共阴数码表 unsigned char segnum[16]={0x3f,0x06,0x5b,0x4f...

51 单片机 74HC595 级联 动态显示 多位数码管 怎么实现的?
74HC595同单片机教材里的74LS164一样,是串入并出移位寄存器,只是驱动能力更大些。14脚为串行输入脚,第一片接单片机的P0.1,后面的依次接前一片的Q7'.11脚是移位时序引脚,所有的都并接在P0.0引脚,同时移位。每一片595都并行输出Q1-Q7,输出段码,分别接A-G,由于你这里不用小数点,所以Q7(DP...

74hc595的工作过程
MOV DS_595C ;送数据到串行数据输入端上(P1.0);第二步:产生一上升沿将数据移入74HC595 CLR CH_595 ;拉低移位时钟 NOP NOP setb CH_595 ;上升沿发生移位(移入一数据)DJNZ R4LOOP ;一个字节数据没移完继续 RET 而其级联的应用 74HC595主要应用于点阵屏,以16*16点阵为例:传送一行共二个...

求串转并电路设计电路图?要求SN74HC595级联,16路输出
即输出脚。74LS595的9脚与7脚信号不一样,9脚来自一级寄存器,7脚来自二级。控制要诀三步走:发CLR信号。为保证不发生屏闪,可以每百次屏幕输出激发一次CLR信号。DCLK和DIN配合移位发送16个数据位,此时输出不发生变化。发送 RCLK信号,将一级寄存器内容送到二级输出。

74HC595的程序样例
= 0x01){ \/\/此处可以干别的\/\/这里写入与SPI无关的代码,共8*16=128条单周期指令.}USICTL1 &= ~USIIFG;P1OUT &= ~BIT0;}}单片机74HC595模块驱动程序 \/\/74HC595 LED控制#include <reg51.h>#include <intrins.h>#define NOP() _nop_()sbit MOSIO=P3^4;sbit R_CLK=P3^5;sbit S_CLK...

51单片机加74hc595驱动多个数码管静态显示的程序设计
2、共阳数码管,即阳极全部连接在一起,单片机接口给低电位即可点亮对应的段位。3、可利用MCS-51系列单片机的芯片AT89C52的P3.4,P3.5,P3.6,P3.7进行计时并在数码管上显示时间,作为按键的入口。4、共阴数码管,即阴极全部连接在一起,单片机接口给高电位即可点亮对应的段位。5、其中“开始”按键当...

51 单片机 74HC595 三级联 动态显示 数码管 怎么实现的?
四个数码管的段选,由四个595分别控制。各个数码管的公共端,都直接接地了,所以不存在“位选”的问题。所以,这个电路是静态显示的电路。

51单片机驱动 多个 2.3寸数码管 问题
下面一图是74HC595的典型电路,图上是三个级联,还可以四个等多个级联,一个可以控制一个数码管,三个级联就可以控制三个数码管。还有一个常用的芯片:74LS164,用法和595差不多。另外一个功能比较强大的芯片:SM1617,可以驱动多个数码管,还可以挂接按键 ,可以扫描16个按键,具体资料你看下面的连接...

51单片机控制74hc595输出进而控制发光二极管点亮?
51单片机控制74hc595输出进而控制发光二极管点亮:74hc595是一个反极性驱动,也就是说如果用的是共阴数码管,段选端本应高电平点亮,如果在单片机的p口送个高电平,但是经过74hc595后你的高电平就变成低电平了,所以要在单片机那面往595送低电平,共阳相反,然后在将位选选通,如果想固定显示某个数或者...

相似回答
大家正在搜