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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3775|回復: 16
收起左側

單片機+兩個74hc595驅動LED程序實在搞不懂了 求大神幫忙

[復制鏈接]
ID:718523 發表于 2021-3-22 13:00 | 顯示全部樓層 |閱讀模式
      兩個74hc595串聯的不是就有16個輸出腳了嗎?想讓它輸出10個0和6個1也就是0000000000111111我的程序如下,但是是錯的求大神指正。

單片機源程序如下:
  1. #include<reg52.h>
  2. #include <intrins.h>
  3. #define  NOP() _nop_()  /* 定義空指令 */

  4. //SPI IO
  5. sbit MOSIO =P3^4;
  6. sbit R_CLK =P3^5;
  7. sbit S_CLK =P3^6;
  8. void HC595SendData(unsigned char SendVal);//向595發送數據

  9. main()
  10. {
  11. HC595SendData(0x00);//初始化595使他為高電平 讓LED處于熄滅狀態  
  12.   HC595SendData(0xfc00);//1111110000000000  
  13. }

  14. void HC595SendData(unsigned char SendVal)
  15. {  
  16.   unsigned char i;               
  17.   for(i=0;i<8;i++)
  18.    {
  19.         if((SendVal<<i)&0x80) MOSIO=1;
  20.         else MOSIO=0;                                   

  21.         S_CLK=0;
  22.         NOP();        
  23.         NOP();
  24.         S_CLK=1;        
  25.    }
  26.         
  27.   R_CLK=0;
  28.   NOP();   
  29.   NOP();
  30.   R_CLK=1;

  31. }
復制代碼

像代碼中的藍字我把8改成16過,把80改成800和8080過都不起作用,請問要怎么改呢才能輸出本文開頭提的問題呢?注:這個程序在一片595中使用是可以的。



回復

使用道具 舉報

ID:718523 發表于 2021-3-22 15:01 | 顯示全部樓層
我嘗試著接在8段3位的數碼管上
A-DP=Qa-Qh
DIG1-DIG3=Qb-Qd
程序改成
  1. HC595SendData(0x08); //00001000
  2. HC595SendData(0xf9);//11111001
復制代碼

我覺得它應該是DIG3這一個管里右邊顯示1,結果它顯示111(DIG1-DIG3都是右邊的1)
回復

使用道具 舉報

ID:844772 發表于 2021-3-22 15:39 | 顯示全部樓層
unsigned char SendVal,char不是只有8位嗎?你傳16位給它是什么意思啊?
回復

使用道具 舉報

ID:332444 發表于 2021-3-22 15:51 | 顯示全部樓層
串聯的595送2次8位數據即可.
回復

使用道具 舉報

ID:275826 發表于 2021-3-22 15:59 | 顯示全部樓層
把if((SendVal<<1)&0x80) MOSIO=1;
回復

使用道具 舉報

ID:718523 發表于 2021-3-22 16:29 | 顯示全部樓層

沒看懂什么意思
回復

使用道具 舉報

ID:718523 發表于 2021-3-22 16:31 | 顯示全部樓層
glinfei 發表于 2021-3-22 15:39
unsigned char SendVal,char不是只有8位嗎?你傳16位給它是什么意思啊?

請問這個應該怎么寫呢?
回復

使用道具 舉報

ID:275826 發表于 2021-3-22 16:34 | 顯示全部樓層

要仔細看,跟原來的差別
回復

使用道具 舉報

ID:123289 發表于 2021-3-22 16:46 | 顯示全部樓層
與硬件的接法有關:
1、兩個595串接,即一個DATA輸入,則用16個CLK,達成目的,這時DATA端當以序輸入10個0、6個1。
1、兩個595并接,即有兩個DATA輸入,DATA1、DATA2,則用8個CLK,達成目的,這時DATA1端當以序輸入8個0,DATA2端當以序輸入兩個0、及6個1。
回復

使用道具 舉報

ID:718523 發表于 2021-3-22 16:58 | 顯示全部樓層
yzwzfyz 發表于 2021-3-22 16:46
與硬件的接法有關:
1、兩個595串接,即一個DATA輸入,則用16個CLK,達成目的,這時DATA端當以序輸入10個0 ...

是串連的請問我的程序需要改哪里呢?
回復

使用道具 舉報

ID:213173 發表于 2021-3-22 17:01 | 顯示全部樓層
forest415 發表于 2021-3-22 16:31
請問這個應該怎么寫呢?

數據類型unsigned int
  1. #include<reg52.h>
  2. #include <intrins.h>
  3. #define  NOP() _nop_()  /* 定義空指令 */

  4. //SPI IO
  5. sbit MOSIO =P3^4;
  6. sbit R_CLK =P3^5;
  7. sbit S_CLK =P3^6;
  8. void HC595SendData(unsigned int SendVal);//向595發送數據

  9. main()
  10. {
  11. //        HC595SendData(0x00);//初始化595使他為高電平 讓LED處于熄滅狀態  
  12.         HC595SendData(0x003f);//0000000000111111  
  13.         while(1);
  14. }

  15. void HC595SendData(unsigned int SendVal)
  16. {  
  17.   unsigned char i;               
  18.   for(i=0;i<16;i++)
  19.    {
  20.         if((SendVal<<i)&0x8000) MOSIO=1;//由高位到低位傳送
  21.         else MOSIO=0;                                   

  22.         S_CLK=0;
  23.         NOP();        
  24.         NOP();
  25.         S_CLK=1;        
  26.    }
  27.         
  28.   R_CLK=0;
  29.   NOP();   
  30.   NOP();
  31.   R_CLK=1;
  32. }
復制代碼
回復

使用道具 舉報

ID:718523 發表于 2021-3-22 17:23 | 顯示全部樓層
wulin 發表于 2021-3-22 17:01
數據類型unsigned int

這個程序第二片595全部都是高電平
回復

使用道具 舉報

ID:213173 發表于 2021-3-22 19:08 | 顯示全部樓層
forest415 發表于 2021-3-22 17:23
這個程序第二片595全部都是高電平

無標題.jpg
回復

使用道具 舉報

ID:68800 發表于 2021-3-22 22:15 | 顯示全部樓層
#include<reg52.h>
#include <intrins.h>
#define  NOP() _nop_()  /* 定義空指令 */

//SPI IO
sbit MOSIO =P3^4;
sbit R_CLK =P3^5;
sbit S_CLK =P3^6;
void HC595SendData(unsigned char SendVal);//向595發送數據

main()
{HC595SendData(0xfc);//11111100先發第二片的從左往右移 入 左邊第一位在第二片的q7
  HC595SendData(0x00);//00000000  第一片的數據
}

void HC595SendData(unsigned char SendVal)
{  
  unsigned char i;               
  for(i=0;i<8;i++)
   {
        if((SendVal<<i)&0x80) MOSIO=1;
        else MOSIO=0;                                   

        S_CLK=0;
        NOP();        
        NOP();
        S_CLK=1;        
   }
        
  R_CLK=0;
  NOP();   
  NOP();
  R_CLK=1;

}
回復

使用道具 舉報

ID:332444 發表于 2021-3-23 10:02 | 顯示全部樓層
發送2次8位數據,可看到下面的數據往上移動. 錄像14_轉.gif
回復

使用道具 舉報

ID:126591 發表于 2021-3-23 18:06 | 顯示全部樓層
unsigned char SendVal這個怎么不是unsigned short呢
回復

使用道具 舉報

ID:884042 發表于 2021-3-24 19:15 | 顯示全部樓層
forest415 發表于 2021-3-22 16:31
請問這個應該怎么寫呢?

unsigned char SendVal把它改成int型也就是unsigned int SendVal
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人网 | 一区二区在线观看免费视频 | 久久久久久国产 | 九九九久久国产免费 | 国产日韩久久久久69影院 | 免费观看av | 国产精品久久久久久久模特 | 国产中文字幕在线观看 | 亚洲精品一区二三区不卡 | 四虎成人精品永久免费av九九 | 亚洲免费一区二区 | 成人性生交大片免费看r链接 | 免费观看av | 成人免费视频久久 | 欧美日韩三级 | 国产在线aa | 黄色片免费看视频 | 视频一区在线 | 日韩中文字幕区 | 欧美一级二级视频 | 欧美日韩视频在线播放 | 国产精品久久久久免费 | 日韩欧美在线一区 | 日本精品免费在线观看 | 日韩一区二 | 在线91| 午夜久久久 | 色资源在线视频 | 天天舔天天 | 精品欧美一区二区三区精品久久 | 国产精品视屏 | 99在线视频观看 | 一区二区三区四区视频 | 黄色网毛片 | 日韩有码在线播放 | 日本大片在线播放 | 国产视频不卡一区 | 精品久久久久久久久久久久久久 | 久久国产精品无码网站 | 毛片a级| 欧美二区三区 |