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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
   小弟我遇到一个单片机问题,其实本可以忽略掉继续开开心心码程序的,但秉着想冲硬件工程师这个物以稀为贵的职业的念头,打算钻一钻牛角尖。          void Hc595SendByte(u8 dat){' Y5 N3 Z* o. \, I# a+ N
        u8 a;
6 _* P) z/ r. L5 a# i8 M- U9 H1 P/ D0 t2 A+ m6 j! G0 a
        SRCLK = 1;
+ ?; I. F( S' W( G8 }        RCLK = 1;
# X: s4 g+ }& ?. S, O# q" g$ P* M. e
        for(a=0;a<8;a++)                 //发送8位数. R5 o: l! \2 r. m4 o
        {# |( {0 y6 y3 O7 B6 Q
                SER = dat >> 7;                 //从最高位开始发送, N3 M  c: p/ p/ \
                dat <<= 1;
  y( a0 L4 K% d$ `
/ u) y* J, S/ d4 g. @3 `" f                SRCLK = 0;                         //发送时序
% s0 K0 [0 j2 E0 ]% H7 h/ s" D                _nop_();
) j+ `) H+ |; h                _nop_();
  V! _  |% A* D! W  c$ |                SRCLK = 1;        
" t* V; j: |3 {* v        }$ f( w& l: O! p4 G! Q/ x
        RCLK = 0;1 G' b. y; A2 W& e) o6 r  r
        _nop_();( T/ l  v( J& p* E3 z
        _nop_();0 j" ?) |, l, w: Y
        RCLK = 1;# K: h. m7 C# c; c. V
}0 k1 h: K- J/ _. j7 a1 k" G9 C
          这一个是例程中进行74HC595移位并输出的自定义函数,假设* a8 V; e3 k. C( t

该用户从未签到

2#
发表于 2021-1-22 11:26 | 只看该作者
5 S' ]& z% \4 k
595相应的口线和单片机相连,单片机用软件模拟串行IO口,比较灵活方便。因串口输出,不能按字节操作。
0 o) q4 d0 K' i6 q) M供参考:0 ^; ^) }7 Z1 N/ m
for(i=0;i<8;i++)/ g; k* W5 l/ u  Z3 _
    {
5 b( V$ F* E6 P1 |' S; S; k6 o1 W                SCLK = 0;       3 S8 m  P7 D' U, L: G: Z
                _nop_();               / \/ ?4 P' u( S& V+ Q
                SDI = (bit)(dat&0x80);               : K( s) h: c* f3 Q7 H
                _nop_();      
3 _! D/ M9 w7 y3 f8 x3 k; `$ }                dat = dat << 1;
( B: L, `; e3 U! Z6 D* b                _nop_();
9 e: s' e  T5 O, I7 X                  SCLK = 1;      
3 Q4 r" j* t8 {+ a# a& i% ~                  _nop_();               
! l! ?1 V- g8 R4 p. z    }
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2021-1-22 13:41 | 只看该作者
    下图单独写一个驱动595函数,数据为1时的时序
    0 G1 \$ n5 y' u& w9 u) K1 x- D" g7 a/ a3 G8 r3 u8 I: ~# ~$ J
    : r0 s3 N7 \/ Z. J* T+ S

    . Z8 H8 m; b2 `0 o0 m
    # K4 ]# i1 T& Y6 b之下是发送4这个值的时序图:其实看这样的时序图更容易明白,不像找到的时序图对得太整齐了,有时还真分别不出对齐的部分到底是看成低电平还是高电平;从下图的时序可明显清晰地看出发送给595一个4这个值所处的高低电平00100000,当然如果使用十六进制数据和移位函数发送看到的也是一样的时序。) c% M  g# l5 ~
      l7 {( Q/ L! L2 V( L" q0 Z
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-21 05:52 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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