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

標題: 請問C51單片機串轉并74HC595的串行輸入引腳的電平是怎么輸入的? [打印本頁]

作者: 15119014737    時間: 2021-1-18 01:09
標題: 請問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移位并輸出的自定義函數,假設


作者: munuc_w    時間: 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_();               
    }
作者: 人人學會單片機    時間: 2021-1-18 09:13
你好 你可以看看我這個貼子 http://www.zg4o1577.cn/bbs/dpj-201201-1.html 最好把資料也下載
作者: xianfajushi    時間: 2021-1-18 09:51
數據電平由移位脈沖存儲到芯片內這在芯片說明書上都是有文字描述和時序圖示意的.
作者: xianfajushi    時間: 2021-1-18 09:57
下圖單獨寫一個驅動595函數,數據為1時的時序:


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


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


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

作者: 15119014737    時間: 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的后面?
作者: 15119014737    時間: 2021-1-18 20:10
xianfajushi 發表于 2021-1-18 09:57
下圖單獨寫一個驅動595函數,數據為1時的時序:

您好,其實我想問的是,C51不是8位單片機么?我是理解成一個IO口比如P0^0,一次性可以輸出八位二進制數,可是74HC595芯片的串行輸入端是按位輸出的,一個字節為八位,一個IO口輸出8位怎么送進595的串行輸入端。
作者: 15119014737    時間: 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只會接收一個字節中的最低位?
作者: 15119014737    時間: 2021-1-18 20:35
我的問題沒有敲完,假設我想通過51傳10111001給74hc595,首先
作者: 15119014737    時間: 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只會接收一個字節中的最低位?
作者: xianfajushi    時間: 2021-1-18 21:03
送一個電平移入再送一個電平移入進行八次所以才是串口不是并行
作者: wulin    時間: 2021-1-18 21:06
15119014737 發表于 2021-1-18 20:35
我的問題沒有敲完,假設我想通過51傳10111001給74hc595,首先

這里解釋的很詳細:
https://baike.baidu.com/item/74HC595/9886491?fr=aladdin
作者: xianfajushi    時間: 2021-1-19 07:56
至于數據是要移動7位或1位看電路需求而定,電路可以順序或逆序連接。
作者: 15119014737    時間: 2021-1-19 22:26
xianfajushi 發表于 2021-1-18 21:03
送一個電平移入再送一個電平移入進行八次所以才是串口不是并行

感謝,我弄懂了
作者: xianfajushi    時間: 2021-1-20 12:42
我的例子傳送十進制值,可以取反,也可以位移.比如把00000001移位為10000000都可以通過十進制完成的.




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 祝你幸福电影在线观看 | 丝袜 亚洲 另类 欧美 综合 | 日韩国产精品一区二区三区 | 国产精品国产三级国产aⅴ无密码 | 日韩激情在线 | 国产精久久久久久久 | 99久久免费精品国产免费高清 | 秋霞影院一区二区 | 国产专区在线 | 岛国午夜| 在线视频91| 亚洲福利在线观看 | 国产精品69毛片高清亚洲 | 色av一区| 亚洲一区二区久久 | 亚洲成人激情在线观看 | 国产乱码一二三区精品 | 男人天堂午夜 | 久久久久黄色 | 日韩av一区二区在线观看 | 国产色网站 | 亚洲综合色网站 | 日韩一级一区 | 亚洲一区| 好婷婷网| 老牛影视av一区二区在线观看 | 日韩欧美一区二区三区四区 | 日本不卡一区二区三区在线观看 | 国内自拍视频在线观看 | 搞av.com| 久久99精品久久 | 成人国产精品久久久 | 毛片区| 国产一区二区三区免费视频 | 日本一区二区高清不卡 | 色女人天堂| 91大神在线看 | 欧美视频成人 | 久久99精品国产 | 日本一道本视频 | 中文字幕精品一区二区三区精品 |