完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
void SendSeg(unsigned char dat)
{ unsigned char i; for(i=0;i<8;i++) //发送字节 { SRCLK_B=0; SER_B=dat&0x80; dat<<=1; SRCLK_B=1; } LATCH_B=0; //锁存 _nop_(); LATCH_B=1; }//这段为位锁存代码; 在双色点阵中,这段代码for(i=0;i<8;i++)结束后才进行锁存,为什么不是在 for(i=0;i<8;i++) { SRCLK_B=0; SER_B=dat&0x80; dat<<=1; SRCLK_B=1; LATCH_B=0; _nop_(); LATCH_B=1; }里面进行锁存呢? |
|
相关推荐
6个回答
|
|
感觉你这程序有点像是用单片机的IO口模拟串口通讯进行控制74HC595,,
SRCLK_B=0; SER_B=dat&0x80; dat<<=1; SRCLK_B=1; 这些是发送一位数据到74HC595的移位寄存器中,当8位数据全部发送完成后再执行下面的 LATCH_B=0; _nop_(); LATCH_B=1; 上升沿作用下将移位寄存器中的数据输入到存储寄存器中去,,当使能时,存储器的数据从Q0~Q7口输出。 按理说你把那段代码放进for语句里面也是可以的,但是这样74HC595就会输出一些“乱码” 还是把它放在FOR后面好些,这样就能让输出状态切换时中间不会出现一些不必要的状态。 (纯属个人看法,不喜勿喷) |
|
|
|
多谢;你的答案很不错,基本上我都懂了, 这样写的原因会不会是74HC595 8位串入并出的这个特性呢? |
|
|
|
嗯,基本思想是把8位串行数据都收到后再并口输出 |
|
|
|
都是大神啊 学习学习
|
|
|
|
支持一个,顶顶顶
|
|
|
|
本来这个芯片就是应该先循环8次,把一个字节输入进锁存芯片内,然后退出循环后,给一个锁存并输出到点阵的信号。是让这8位同时作用到点阵的哦。如果你边循环边锁存,多做无益,你看看你的点阵,肯定是花的。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
122 浏览 0 评论
565 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
772 浏览 0 评论
948 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
658 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12041 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 16:49 , Processed in 0.567240 second(s), Total 51, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号