找回密码
 注册
关于网站域名变更的通知
查看: 473|回复: 2
打印 上一主题 下一主题

请问C51单片机串转并74HC595问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-1-22 11:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
   小弟我遇到一个单片机问题,其实本可以忽略掉继续开开心心码程序的,但秉着想冲硬件工程师这个物以稀为贵的职业的念头,打算钻一钻牛角尖。          void Hc595SendByte(u8 dat){  `8 h: f6 l5 o* z7 t* v
        u8 a;! `$ D! {, D$ F+ |

/ Z" Y! _' f2 I1 s: J8 o        SRCLK = 1;0 B  O* B+ Z5 Z  G& u7 N$ l
        RCLK = 1;
+ f3 }5 C" R, C0 |8 I9 s" F
: ~5 w# |* r" w: p" p" a$ d: B( |        for(a=0;a<8;a++)                 //发送8位数
9 [0 [) V& F4 Y# X7 R) l/ |        {3 M, b4 H  e, q3 l
                SER = dat >> 7;                 //从最高位开始发送& m( Y7 K9 n! H! h# f+ Q
                dat <<= 1;
7 \' r+ ]/ ~( ^
+ C/ M  @0 m% M( V: m                SRCLK = 0;                         //发送时序/ [6 z! b% L4 ?0 q2 Z; L
                _nop_();
1 h! B1 e) s! ]: H  U& h                _nop_();
  p3 |, ^$ k; c% c! R3 L% I                SRCLK = 1;        
* @: S& N: p5 `+ i        }
# R$ m$ U; t6 ^        RCLK = 0;
" {; B" s0 N# e* E8 a$ m) m* N        _nop_();+ }5 h% P1 E$ e/ @
        _nop_();5 O* h6 o6 s' Y: O5 f+ Y3 |: H1 z
        RCLK = 1;8 i1 i" |# R" |+ u! z# ~
}
" I$ B& O7 y# Z! Z+ M/ {          这一个是例程中进行74HC595移位并输出的自定义函数,假设
- I, K. T7 r$ }, ^" ]& y

该用户从未签到

2#
发表于 2021-1-22 11:26 | 只看该作者

. Y( G4 q' C) j595相应的口线和单片机相连,单片机用软件模拟串行IO口,比较灵活方便。因串口输出,不能按字节操作。
! ]6 e1 N& i, l$ h( c  P% t供参考:9 [. R" U! B; f% r
for(i=0;i<8;i++)
! M! z! [2 {0 t* v. W$ K    {. j) ~% I( m; ^# k1 U
                SCLK = 0;      
9 p/ \; ?# o' m  {9 b                _nop_();               
. G" E7 |1 l8 Q+ R2 w                SDI = (bit)(dat&0x80);               3 d: r% X& Z# z; Z( V6 V6 i
                _nop_();       ' G( G/ W# R- y. J6 N3 @! o
                dat = dat << 1;  v% [: C8 c5 z+ u! m% h) w5 _
                _nop_();: @# d3 T1 r0 Z; d- H
                  SCLK = 1;      
$ y$ S# V  ]0 N                  _nop_();               5 a! R5 q, h6 y$ d
    }
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2021-1-22 13:41 | 只看该作者
    下图单独写一个驱动595函数,数据为1时的时序
    & f3 x$ m' H# a" P8 W2 R: R
    # j6 t- k6 I7 }# R
    + C' t3 g/ v3 S  e8 D/ A+ a. r
    ! P: o9 b- Q, P' r: j8 S6 a

    3 E. @0 E1 Y1 W4 l* ?4 F; e之下是发送4这个值的时序图:其实看这样的时序图更容易明白,不像找到的时序图对得太整齐了,有时还真分别不出对齐的部分到底是看成低电平还是高电平;从下图的时序可明显清晰地看出发送给595一个4这个值所处的高低电平00100000,当然如果使用十六进制数据和移位函数发送看到的也是一样的时序。
    % J. ?6 Z0 Y  ?0 ~9 I
    # b+ e# i0 ?7 T- V9 o, j
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-10 11:41 , Processed in 0.156250 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表