共2条
1/1 1 跳转至页
74HC595 急!求助74HC595的问题
问
本人新手刚上路,现在用51单片机和74HC595来做一个控制LED显示电路,
看74HC595资料上的说明很简单,可是我试着去编程,却发现,
这个74HC595怎么也不工作啊。我对这个芯片一点不了解
下面是我编的程序来测试74HC595功能,
这里面肯定有错误,请高人们指点,小的多谢了!
enable equ p0.6 //595的13脚 输出使能引脚
shift equ p0.4 //595的11脚 输入移位引脚
store equ p0.5 //595的12脚 数据存储引脚
data equ p3.7 //595的14脚 数据输入引脚
我的目的很简单,只想在595的Q0-Q7段输出01010101B (即#55H):
main_loop:
mov r4,#08h //8位
mov a,#55h //送入数据
clr c
setb enable //不使能输出
move_data:
rrc a //把要发送数据移入C
mov data,c //一位一位的输入
setb shift
setb store
nop
clr shift
clr store
nop
djnz r4,move_data //8位输入完毕
clr enable //使能输出
nop
call delay_5ms //延时5ms
jmp main_loop
请大侠们指点啊,急死我了,这么几天都搞不出来,毫无头绪,跪谢! 答 1: 没人在吗?怎么没有人回复啊?
斑竹,救命啊 答 2: PO口此时必须上拉电阻 答 3: 我修改了一下(PO口此时必须上拉电阻)main_loop:
mov r4,#08h //8位
mov a,#55h //送入数据
clr shift
// clr c //No use
move_data:
mov data,Acc.7 //一位一位的输入
setb shift //给上升沿
nop
clr shift
rrc a //把要发送数据移入C
nop
djnz r4,move_data //8位输入完毕
clr enable //使能输出
nop
setb enable //不使能输出-----给上升沿打入8bit数据
call delay_5ms //延时5ms
jmp main_loop
再试试看,根据595datasheet的时序来,就可以了!
答 4: setb store/nop/nop/ clr store 放在最后就可以了 答 5: store /shift/enable三者位置关系到底怎么放呢?楼上的,请问store /shift/enable三者位置关系到底怎么放呢?
使能输出必须一直位底电平吗?
还有就是 数据存储脉冲store只能发一个吗?而且放在第八个移位脉冲shift之后?
我很是糊涂,请高人指点迷津
答 6: 网上找来的,给你参考一下,本人不测试过!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;595A:9----595B:14
;;595A:14-------------P3.7
;;595A:11---595B:11---P3.5
;;595A:12---595B:12---P3.4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;以下定义IO口
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DA2 EQU P3.7 ;595-14
LATCH2 EQU P3.4 ;595-12
CLK2 EQU P3.5 ;595-11
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;以下定义缓冲区
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DATA595A EQU 4CH
DATA595B EQU 4BH
DELBUF EQU 4AH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;操作模式
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV DATA595A, #0FEH
MOV DATA595B, #0EFH
LCALL DATA595
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;595子程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DATA595: CLR DA2
CLR LATCH2
CLR CLK2
LCALL SDELAY
MOV A, DATA595B
MOV R7, #08H
MAIN595B1: RLC A
MOV DA2, C
LCALL SDELAY
SETB CLK2
LCALL SDELAY
CLR CLK2
LCALL SDELAY
DJNZ R7, MAIN595B1
MOV A, DATA595A
MOV R7, #08H
MAIN595B2: RLC A
MOV DA2, C
LCALL SDELAY
SETB CLK2
LCALL SDELAY
CLR CLK2
LCALL SDELAY
DJNZ R7, MAIN595B2
LCALL SDELAY
SETB LATCH2
LCALL SDELAY
LCALL SDELAY
CLR LATCH2
CLR DA2
CLR CLK2
RET
SDELAY: MOV DELBUF, #18D
SDEL1: NOP
NOP
DJNZ DELBUF, SDEL1
RET
答 7: 还有一个例程.;;============================================
;; 5个74HC595一起,CLK和DATA脚分别连起来,
;; LATCH脚独立控制
;;============================================
SCLK EQU P0.1
SDATA EQU P0.0
WRITE5950: LCALL WRITE595
SETB P2.0
NOP
CLR P2.0
NOP
SETB P2.0
NOP
CLR P2.0
RET
WRITE5951: LCALL WRITE595
SETB P2.1
NOP
CLR P2.1
NOP
SETB P2.1
NOP
CLR P2.1
RET
WRITE5952: LCALL WRITE595
SETB P2.2
NOP
CLR P2.2
NOP
SETB P2.2
NOP
CLR P2.2
RET
WRITE5953: LCALL WRITE595
SETB P2.3
NOP
CLR P2.3
NOP
SETB P2.3
NOP
CLR P2.3
RET
WRITE5954: LCALL WRITE595
SETB P2.4
NOP
CLR P2.4
NOP
SETB P2.4
NOP
CLR P2.4
RET
WRITE595: MOV R5,#08H
MOV A,2AH
LOOP: RLC A
MOV P0.0,C
SETB P0.1
NOP
CLR P0.1
DJNZ R5,LOOP
RET
看74HC595资料上的说明很简单,可是我试着去编程,却发现,
这个74HC595怎么也不工作啊。我对这个芯片一点不了解
下面是我编的程序来测试74HC595功能,
这里面肯定有错误,请高人们指点,小的多谢了!
enable equ p0.6 //595的13脚 输出使能引脚
shift equ p0.4 //595的11脚 输入移位引脚
store equ p0.5 //595的12脚 数据存储引脚
data equ p3.7 //595的14脚 数据输入引脚
我的目的很简单,只想在595的Q0-Q7段输出01010101B (即#55H):
main_loop:
mov r4,#08h //8位
mov a,#55h //送入数据
clr c
setb enable //不使能输出
move_data:
rrc a //把要发送数据移入C
mov data,c //一位一位的输入
setb shift
setb store
nop
clr shift
clr store
nop
djnz r4,move_data //8位输入完毕
clr enable //使能输出
nop
call delay_5ms //延时5ms
jmp main_loop
请大侠们指点啊,急死我了,这么几天都搞不出来,毫无头绪,跪谢! 答 1: 没人在吗?怎么没有人回复啊?
斑竹,救命啊 答 2: PO口此时必须上拉电阻 答 3: 我修改了一下(PO口此时必须上拉电阻)main_loop:
mov r4,#08h //8位
mov a,#55h //送入数据
clr shift
// clr c //No use
move_data:
mov data,Acc.7 //一位一位的输入
setb shift //给上升沿
nop
clr shift
rrc a //把要发送数据移入C
nop
djnz r4,move_data //8位输入完毕
clr enable //使能输出
nop
setb enable //不使能输出-----给上升沿打入8bit数据
call delay_5ms //延时5ms
jmp main_loop
再试试看,根据595datasheet的时序来,就可以了!
答 4: setb store/nop/nop/ clr store 放在最后就可以了 答 5: store /shift/enable三者位置关系到底怎么放呢?楼上的,请问store /shift/enable三者位置关系到底怎么放呢?
使能输出必须一直位底电平吗?
还有就是 数据存储脉冲store只能发一个吗?而且放在第八个移位脉冲shift之后?
我很是糊涂,请高人指点迷津
答 6: 网上找来的,给你参考一下,本人不测试过!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;595A:9----595B:14
;;595A:14-------------P3.7
;;595A:11---595B:11---P3.5
;;595A:12---595B:12---P3.4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;以下定义IO口
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DA2 EQU P3.7 ;595-14
LATCH2 EQU P3.4 ;595-12
CLK2 EQU P3.5 ;595-11
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;以下定义缓冲区
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DATA595A EQU 4CH
DATA595B EQU 4BH
DELBUF EQU 4AH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;操作模式
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV DATA595A, #0FEH
MOV DATA595B, #0EFH
LCALL DATA595
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;595子程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DATA595: CLR DA2
CLR LATCH2
CLR CLK2
LCALL SDELAY
MOV A, DATA595B
MOV R7, #08H
MAIN595B1: RLC A
MOV DA2, C
LCALL SDELAY
SETB CLK2
LCALL SDELAY
CLR CLK2
LCALL SDELAY
DJNZ R7, MAIN595B1
MOV A, DATA595A
MOV R7, #08H
MAIN595B2: RLC A
MOV DA2, C
LCALL SDELAY
SETB CLK2
LCALL SDELAY
CLR CLK2
LCALL SDELAY
DJNZ R7, MAIN595B2
LCALL SDELAY
SETB LATCH2
LCALL SDELAY
LCALL SDELAY
CLR LATCH2
CLR DA2
CLR CLK2
RET
SDELAY: MOV DELBUF, #18D
SDEL1: NOP
NOP
DJNZ DELBUF, SDEL1
RET
答 7: 还有一个例程.;;============================================
;; 5个74HC595一起,CLK和DATA脚分别连起来,
;; LATCH脚独立控制
;;============================================
SCLK EQU P0.1
SDATA EQU P0.0
WRITE5950: LCALL WRITE595
SETB P2.0
NOP
CLR P2.0
NOP
SETB P2.0
NOP
CLR P2.0
RET
WRITE5951: LCALL WRITE595
SETB P2.1
NOP
CLR P2.1
NOP
SETB P2.1
NOP
CLR P2.1
RET
WRITE5952: LCALL WRITE595
SETB P2.2
NOP
CLR P2.2
NOP
SETB P2.2
NOP
CLR P2.2
RET
WRITE5953: LCALL WRITE595
SETB P2.3
NOP
CLR P2.3
NOP
SETB P2.3
NOP
CLR P2.3
RET
WRITE5954: LCALL WRITE595
SETB P2.4
NOP
CLR P2.4
NOP
SETB P2.4
NOP
CLR P2.4
RET
WRITE595: MOV R5,#08H
MOV A,2AH
LOOP: RLC A
MOV P0.0,C
SETB P0.1
NOP
CLR P0.1
DJNZ R5,LOOP
RET
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |