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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4666|回復: 11
收起左側

求教:關于16*16點陣的問題 74hc595錄入的時候為什么是從低位開始呢

[復制鏈接]
ID:162190 發表于 2017-3-13 21:50 | 顯示全部樓層 |閱讀模式
void H595senddata(uchar dat0,uchar dat1,uchar dat2,uchar dat3)
{
   uchar i;
   for(i=0;i<8;i++)
   {
     MOSIO = dat0&0x01;
         dat0>>=1;
         S_CLK = 0;
         _nop_();
         _nop_();
         S_CLK = 1;
         _nop_();
         _nop_();
   }

74595錄入的時候為什么是從低位開始呢?不是從高位開始一位一位的錄入嗎?請大神 賜教

回復

使用道具 舉報

ID:111634 發表于 2017-3-13 21:54 | 顯示全部樓層
本帖最后由 zl2168 于 2017-3-13 21:56 編輯

80C51串行發送是低位在前高位在后,而移位寄存器的移位秩序是從Q0→Q7。因此,最終的結果是80C51 SBUF中的D0~D7置于移位寄存器的Q7~Q0,位秩序相反。
以上摘自張志良編著《80C51單片機實用教程——基于Keil CProteus》高等教育出版社ISBN 978-7-04-044532-9, 用于學習51單片機原理,程序(c和匯編)語句條條有注解,便于閱讀理解,便于自學。
80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1,內有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。









回復

使用道具 舉報

ID:146949 發表于 2017-3-13 22:13 | 顯示全部樓層
本帖最后由 wosiyabo 于 2017-3-13 23:03 編輯

我的這個是左移錄入,你的是右移錄入。手頭上沒有595的板子,你把我這個移植入去試試看看結果再告訴我們吧
for(temp=8;temp!=0;temp--)                  
        {
                SI_595=(bit)(input1&0x80);
                SCK_595=0;
                SCK_595=1;
                input1=input1<<1;
        }
回復

使用道具 舉報

ID:162190 發表于 2017-3-13 22:21 | 顯示全部樓層
wosiyabo 發表于 2017-3-13 22:13
我的這個是左移錄入,你的是右移錄入。但是串行轉送并行數據輸出的值還是一樣的。
for(temp=8;temp!=0;tem ...

我開發板上點亮的不是同一顆LED,結果應該是不一樣的

左移是先錄入最高位,右移先錄入最低位,但開發板好像右移的結果是跟預期的一樣的,74595不是高位在前嗎
回復

使用道具 舉報

ID:111634 發表于 2017-3-13 22:22 | 顯示全部樓層
80C51串行發送是低位在前高位在后,而移位寄存器的移位秩序是從Q0→Q7。因此,最終的結果是80C51 SBUF中的D0~D7置于移位寄存器的Q7~Q0,位秩序相反。
回復

使用道具 舉報

ID:162190 發表于 2017-3-13 22:31 | 顯示全部樓層
zl2168 發表于 2017-3-13 22:22
80C51串行發送是低位在前高位在后,而移位寄存器的移位秩序是從Q0→Q7。因此,最終的結果是80C51 SBUF中的D ...

我手上這個開發板有時候高位在前,有時候低位在前,作為新手,被搞迷糊了
第一個:
void HC595SendData(  uchar BT3, uchar BT2,uchar BT1,uchar BT0)
{  
        uchar i;
       
        //--發送第一個字節--//
        for(i=0;i<8;i++)
        {
                MOSIO = BT3 >> 7 ;        //從高位到低位
                BT3 <<= 1;

                S_CLK = 0;
                S_CLK = 1;               
        }

第二個:
void H595senddata(uchar dat0,uchar dat1,uchar dat2,uchar dat3)
{
   uchar i;
   for(i=0;i<8;i++)
   {
         S_CLK = 0;
     MOSIO = dat0&0x01;
         dat0>>=1;
         
         _nop_();
         _nop_();
         S_CLK = 1;
         _nop_();
         _nop_();
   }
回復

使用道具 舉報

ID:146949 發表于 2017-3-13 23:13 | 顯示全部樓層
本帖最后由 wosiyabo 于 2017-3-13 23:38 編輯

運算結果是高低位反的。。3樓正解
回復

使用道具 舉報

ID:166656 發表于 2017-3-14 00:58 | 顯示全部樓層
低電平有效
回復

使用道具 舉報

ID:111634 發表于 2017-3-14 08:28 | 顯示全部樓層
你還是沒搞清串行傳送概念。SBUF是51機串行發送緩沖寄存器,由移位脈沖由TXD端自動產生,傳送數據由RXD端串行傳送,傳送秩序是從低位到高位。你程序是任一I/O口模擬串行傳送,移位脈沖由程序指令產生,傳送秩序可任意。建議你仔細學習51機串行傳送概念,但許多書未講清,我給你推薦的書中有51機串行口串行傳送和任一I/O口模擬串行傳送兩種概念。
回復

使用道具 舉報

ID:162190 發表于 2017-3-14 09:10 來自手機 | 顯示全部樓層
好的,我再試試,非常感謝各位的回復
回復

使用道具 舉報

ID:162190 發表于 2017-3-14 11:37 來自手機 | 顯示全部樓層
zl2168 發表于 2017-3-14 08:28
你還是沒搞清串行傳送概念。SBUF是51機串行發送緩沖寄存器,由移位脈沖由TXD端自動產生,傳送數據由RXD端串 ...

非常感謝,我好像明白了,之前糾結的是為什么同樣的四個595芯片控制的同一個16*16點陣,一會兒從高到低一會兒從低到高都能按要求輸出,現在覺得應該是取字模的時候順序不一樣,謝謝各位大拿的解疑釋惑
回復

使用道具 舉報

ID:123289 發表于 2017-3-14 22:36 | 顯示全部樓層
注意:
可以從任意位開始,不一定從高到低,也不一定從低到高,此決定于硬件上LED的引腳與595的引腳連接的對位次序。
其實,可能隨意連接(以PCB布線方便為準),因為軟件可以控制移位送出的數據順序,以配合你的硬件連接方案。
一般教課書上,為了說明方便,是按最好的排序方法講解的。實際應用不一定是這樣的。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩国产一区二区三区 | 影音先锋中文字幕在线观看 | 国产电影一区 | 91短视频网址 | 小草久久久久久久久爱六 | 国产综合精品一区二区三区 | 久久亚洲一区 | 日韩一级 | 亚洲精品一区中文字幕乱码 | 亚洲精品中文字幕 | 欧美日韩一区二区在线观看 | 一区二区免费看 | 亚洲第一网站 | 成在线人视频免费视频 | 国产成人精品福利 | 青春草91| 日韩第一夜 | 美女爽到呻吟久久久久 | 久久久久久免费免费 | 欧美成视频 | 精品欧美一区二区三区久久久 | 在线观看电影av | 风间由美一区二区三区在线观看 | 国产成人一区二区三区电影 | 日韩精品免费在线观看 | 国产精品毛片在线 | www亚洲一区| 一区精品视频在线观看 | 国产精品一区二区三区在线 | 日韩欧美在线播放 | 日韩欧美一区二区三区 | 综合九九 | 国产一区电影 | 色吧色综合 | 久久久久久99 | 欧美福利网站 | 欧美八区 | 精品福利一区二区三区 | 中文在线观看视频 | 91不卡在线 | 欧美日本韩国一区二区 |