久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3931|回復: 14
打印 上一主題 下一主題
收起左側

請問C51單片機串轉并74HC595的串行輸入引腳的電平是怎么輸入的?

[復制鏈接]
跳轉到指定樓層
樓主
          小弟我遇到一個單片機問題,其實本可以忽略掉繼續開開心心碼程序的,但秉著想沖硬件工程師這個物以稀為貴的職業的念頭,打算鉆一鉆牛角尖。          void Hc595SendByte(u8 dat){
        u8 a;

        SRCLK = 1;
        RCLK = 1;

        for(a=0;a<8;a++)                 //發送8位數
        {
                SER = dat >> 7;                 //從最高位開始發送
                dat <<= 1;

                SRCLK = 0;                         //發送時序
                _nop_();
                _nop_();
                SRCLK = 1;        
        }
        RCLK = 0;
        _nop_();
        _nop_();
        RCLK = 1;
}
          這一個是例程中進行74HC595移位并輸出的自定義函數,假設

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:752974 發表于 2021-1-18 08:53 | 只看該作者
595相應的口線和單片機相連,單片機用軟件模擬串行IO口,比較靈活方便。因串口輸出,不能按字節操作。
供參考:
for(i=0;i<8;i++)
    {
                SCLK = 0;       
                _nop_();               
                SDI = (bit)(dat&0x80);               
                _nop_();       
                dat = dat << 1;
                _nop_();
                  SCLK = 1;       
                  _nop_();               
    }

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:390416 發表于 2021-1-18 09:13 | 只看該作者
你好 你可以看看我這個貼子 http://www.zg4o1577.cn/bbs/dpj-201201-1.html 最好把資料也下載
回復

使用道具 舉報

地板
ID:332444 發表于 2021-1-18 09:51 | 只看該作者
數據電平由移位脈沖存儲到芯片內這在芯片說明書上都是有文字描述和時序圖示意的.
回復

使用道具 舉報

5#
ID:332444 發表于 2021-1-18 09:57 | 只看該作者
下圖單獨寫一個驅動595函數,數據為1時的時序:


之下是發送4這個值的時序圖:其實看這樣的時序圖更容易明白,不像找到的時序圖對得太整齊了,有時還真分別不出對齊的部分到底是看成低電平還是高電平;從下圖的時序可明顯清晰地看出發送給595一個4這個值所處的高低電平00100000,當然如果使用十六進制數據和移位函數發送看到的也是一樣的時序。


配合仿真圖可看到Q0-Q7的輸出:


程序運行的時序圖與網絡上找到的時序圖不同的地方是發送八位后鎖存輸出與發送1位就鎖存輸出的區別.

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:609281 發表于 2021-1-18 20:02 | 只看該作者
munuc_w 發表于 2021-1-18 08:53
595相應的口線和單片機相連,單片機用軟件模擬串行IO口,比較靈活方便。因串口輸出,不能按字節操作。
供 ...

您好,請問為什么SDI = (bit)(dat&0x80);  會放在SCLK = 1的前面?SDI是串行輸入口吧?移位寄存器不是應該在上升沿才有效嗎?S小弟覺得 SDI = (bit)(dat&0x80); 應該放在SCLK = 1的后面?
回復

使用道具 舉報

7#
ID:609281 發表于 2021-1-18 20:10 | 只看該作者
xianfajushi 發表于 2021-1-18 09:57
下圖單獨寫一個驅動595函數,數據為1時的時序:

您好,其實我想問的是,C51不是8位單片機么?我是理解成一個IO口比如P0^0,一次性可以輸出八位二進制數,可是74HC595芯片的串行輸入端是按位輸出的,一個字節為八位,一個IO口輸出8位怎么送進595的串行輸入端。
回復

使用道具 舉報

8#
ID:609281 發表于 2021-1-18 20:33 | 只看該作者
本帖最后由 15119014737 于 2021-1-18 20:50 編輯

我的問題沒有敲完,假設我想通過51傳1011 1001給74HC595,首先是1011 1001右移七位,變為0000 0001,然后595的串行口接收0000 0001,然后移位寄存器來一個上升沿,LQA = 0,LQB = 1,LQC =。。。LQH=0,緊接著1011 1001左移一位,變為0111 0010,然后0111 0010右移七位變成0000 0000傳給595的串行輸入口,此時LQA=LQB=。。。。=LQH=0,這樣不就相當于原來移位寄存器的值被清除掉了嗎?我這種想法是認為595按字節串行輸入,但其實串行輸入都是按位輸入的,可C51不是8位單片機嗎?它的IO口不應該可以輸出一個字節的數據嗎?而且dat<<7本身也是一個字節的數,然后通過單片機引腳輸入進595中,為啥595只會接收一個字節中的最低位?
回復

使用道具 舉報

9#
ID:609281 發表于 2021-1-18 20:35 | 只看該作者
我的問題沒有敲完,假設我想通過51傳10111001給74hc595,首先
回復

使用道具 舉報

10#
ID:609281 發表于 2021-1-18 20:48 | 只看該作者
我的問題沒有敲完,假設我想通過51傳1011 1001給74hc595,,首先將1011 1001右移七位,變為0000 0001并送進串行輸入口,移位寄存器來一個上升沿,這時QA=0,QB=1,QC=QD=...=QH=0,然后將1011 1001左移一位變為0111 0010,同樣的方法將0111 0010右移七位成0000 0000,并送進串行輸入口,移位寄存器來一個上升沿,這時QA=...=QH=0,那么之間的QB = 1跑到哪里去了?我這種想法是認為595的串行輸入口是按字節輸入的,但其實串行輸入口是按位輸入的,可C51不是8位單片機嗎?它的IO口不應該可以輸出一個字節的數據嗎?而且dat<<7本身也是一個字節的數,然后通過單片機引腳輸入進595中,為啥595只會接收一個字節中的最低位?
回復

使用道具 舉報

11#
ID:332444 發表于 2021-1-18 21:03 | 只看該作者
送一個電平移入再送一個電平移入進行八次所以才是串口不是并行
回復

使用道具 舉報

12#
ID:213173 發表于 2021-1-18 21:06 | 只看該作者
15119014737 發表于 2021-1-18 20:35
我的問題沒有敲完,假設我想通過51傳10111001給74hc595,首先

這里解釋的很詳細:
https://baike.baidu.com/item/74HC595/9886491?fr=aladdin
回復

使用道具 舉報

13#
ID:332444 發表于 2021-1-19 07:56 | 只看該作者
至于數據是要移動7位或1位看電路需求而定,電路可以順序或逆序連接。
回復

使用道具 舉報

14#
ID:609281 發表于 2021-1-19 22:26 | 只看該作者
xianfajushi 發表于 2021-1-18 21:03
送一個電平移入再送一個電平移入進行八次所以才是串口不是并行

感謝,我弄懂了
回復

使用道具 舉報

15#
ID:332444 發表于 2021-1-20 12:42 | 只看該作者
我的例子傳送十進制值,可以取反,也可以位移.比如把00000001移位為10000000都可以通過十進制完成的.
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 蜜桃特黄a∨片免费观看 | 亚洲一区二区三区在线视频 | 狠狠爱综合 | www.久久精品视频 | 无人区国产成人久久三区 | 国产福利在线小视频 | 久久久久久久久久一区 | 亚洲一区二区三区在线观看免费 | 中文成人在线 | 玖玖操 | 成人精品视频在线 | 国产xxxx搡xxxxx搡麻豆 | 在线看一区二区三区 | 国产日韩一区二区三区 | 成人久久久 | 99热精品在线观看 | 亚洲97| av手机免费在线观看 | 久久久成人免费视频 | 五月综合激情在线 | 国产精品一区二区欧美黑人喷潮水 | 国产精品成人一区 | 91精品国产高清久久久久久久久 | 国产精品免费一区二区三区 | 91精品国产91久久综合桃花 | 91人人看| 激情欧美日韩一区二区 | 一区精品视频 | 一级a毛片| 中文字幕第5页 | 国产1区| 草久在线 | 久久精品久久综合 | 国产精品美女 | 国产日韩欧美 | 欧美激情精品久久久久久 | 成人在线不卡 | 国产精品欧美一区二区三区不卡 | 久久蜜桃av| 日韩成人在线视频 | 免费国产视频 |