74HC595级联[转载]

    <div id="article_content" class="article_content clearfix">
    <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-6e43165c0a.css">
            <div id="content_views" class="htmledit_views">
                <p>1.硬件电路:</p> 

 

2.软件实现:下面的图是来自台湾一位老师佑來認真教Arduino教學讲解

 

注意:高位先进入。

解释:每次先把大平台放下(ST输出低电平),把活塞拉回,等待数据放上(SH输出低电平)

数据1或者0通过DS输出。放数据后,再把活塞推出去(SH输出高电平)。连续8次就可以把数据完整的放

到大平台(ST)上。最后把大平台上抬,8位数据就同时输出去了。(ST输出高电平)。

 

级联时数据有些不一样,需要注意先入的数据在后一级。需要循环16次,最后ST大平台输出。

 

3.驱动代码


 
 
  1. #DEFINE P_SCK 06H,5
  2. #DEFINE P_RCK 06H,4
  3. #DEFINE P_SI 06H,1
  4. R_ACC1 EQU 0X15
  5. R _ACC2 EQU 0X16
  6. R_ACC3 EQU 0X17
  7. R _ACC_1 EQU 0X18
  8. R _595_DATA1 EQU 0X19 ;数据1
  9. R _595_DATA2 EQU 0X1A ;数据2
  10. ; **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ***
  11. ;74HC595输出SEG--级联
  12. ;通过ACC传递数据
  13. ;*** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
  14. SEND _595:
  15. ;
  16. MOVIA 2
  17. MOVAR R_ACC3 ;2个字节
  18. ;
  19. MOVIA R_595_DATA1 ;BUF1的缓存器地址
  20. MOVAR FSR ;R4
  21. SEND_595_S:
  22. MOVR INDF,0
  23. MOVAR R_ACC1 ;将要发送的一个字节数据
  24. ;
  25. MOVIA D'8'
  26. MOVAR R_ACC2 ;将要发送的一个字节的位计数器
  27. ;
  28. BCR P_SCK ;拉低
  29. ;
  30. LCALL DELAY_US ;延迟一下
  31. ;
  32. SEND_595_LOOP:
  33. BTRSS R_ACC1,7 ;//先传输高位,通过与运算判断第八是否为1
  34. BCR P_SI
  35. BTRSC R_ACC1,7
  36. BSR P_SI
  37. ;
  38. BCR P_SCK ;/*** 步骤2:SHCP每产生一个上升沿,当前的bit就被送入移位寄存器 ***/
  39. ;
  40. LGOTO $+1
  41. LGOTO $+1
  42. LGOTO $+1
  43. LGOTO $+1
  44. BSR P_SCK
  45. ;
  46. RLR R_ACC1,1 ;左移一位
  47. ;
  48. DECRSZ R_ACC2,1 ;
  49. LGOTO SEND_595_LOOP ;一个字节未完,继续发送
  50. ;
  51. LCALL DELAY_US
  52. ;
  53. INCR FSR,1
  54. DECRSZ R_ACC3,1 ;下一个数据
  55. LGOTO SEND_595_S ;一帧数据未完,继续发送
  56. ;
  57. BCR P_RCK ;74HC595输出锁存 使能
  58. LCALL DELAY_US ;步骤3:STCP产生一个上升沿,移位寄存器的数据移入存储寄存器
  59. BSR P_RCK ;再将STCP拉高,STCP即可产生一个上升沿
  60. LCALL DELAY_US
  61. SEND_595_RET:
  62. RET
  63. ;=========================================================================
  64. DELAY_US:
  65. MOVIA 100
  66. MOVAR R_ACC_1
  67. DELAY_US_1:
  68. DECRSZ R_ACC_1,1
  69. LGOTO DELAY_US_1
  70. RET

 

原文链接:https://blog.csdn.net/u013830926/article/details/109483858

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值