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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3225|回復: 12
收起左側

關于STC單片機控制HC595的問題

[復制鏈接]
ID:590194 發表于 2019-9-18 09:08 | 顯示全部樓層 |閱讀模式
本人做了個3串的HC595然后 關于代碼  真的搞不明白...
有人有現成的帖子嗎?
網上看了這個帖子  但是 不明白
1個是 HC595的通訊控制是2進制的嗎?那么01001010   01010101 10101010 對應的指示燈的16進制
是0x4A55AA 這么寫嗎?
temp=0x4A55AA
具體怎么改?
這么改沒效果啊 還是1個個的滅燈
原帖 小白 不知到怎么弄 有例子的嗎??

單片機源程序如下:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit Sh_cp=P5^4;
sbit Ds=P3^3;
sbit St=P3^2;
sbit Sh_cp1=P1^0;
sbit Ds1   =P1^1;
sbit St1   =P1^2;
uchar temp;
uchar temp1;
void In_Data(void)
{
  unsigned char i;
  for(i=0;i<8;i++)
  {
   Sh_cp=0;
   _nop_();_nop_();
   temp<<=1;Ds=CY;
   Sh_cp=1;
   _nop_();_nop_();
   Sh_cp=0;
   _nop_();_nop_();
  }
}
void Out_Data(void)
{
  St=0;
  _nop_();_nop_();
  St=1;     //上升沿送到鎖存器
  _nop_();_nop_();
  St=0;            //鎖存顯示
}
void In_Data1(void)
{
  unsigned char i;
  for(i=0;i<8;i++)
  {
   Sh_cp1=0;
   _nop_();_nop_();
   temp1<<=1;Ds1=CY;
   Sh_cp1=1;
   _nop_();_nop_();
   Sh_cp1=0;
   _nop_();_nop_();
  }
}
void Out_Data1(void)
{
  St1=0;
  _nop_();_nop_();
  St1=1;     //上升沿送到鎖存器
  _nop_();_nop_();
  St1=0;            //鎖存顯示
}
void DelayMS(unsigned int ms)
{
unsigned char i;
while(ms--)
for(i=0;i<120;i++);
}
void main()
{
   uchar i,j;
while(1)
{
  for(j=2;j>0;j--)
  {       temp1=j;
     In_Data1();
       Out_Data1();
   for(i=0;i<8;i++)
   {
    temp=1<<i;
     In_Data();
       Out_Data();
       DelayMS(1000);
   }
   // DelayMS(2000);
     }
}
}
?
回復

使用道具 舉報

ID:149144 發表于 2019-9-18 15:29 | 顯示全部樓層
我做過兩塊的 有仿真,可以給你參考一下
回復

使用道具 舉報

ID:462827 發表于 2019-9-18 16:08 | 顯示全部樓層
你定義是uchar temp吧
temp=0x4A55AA 這樣寫能對?幾個字節了你知道不?
回復

使用道具 舉報

ID:158375 發表于 2019-9-18 17:36 | 顯示全部樓層
主要是看看清除 HC595 手冊即可,程序只是具體的實現。
回復

使用道具 舉報

ID:141497 發表于 2019-9-18 23:54 | 顯示全部樓層
樓主請認真看一下595的時序圖,分成三個字節傳輸三次,之后再鎖存片選,可達到目的,你的數據定義是8位的,不能temp=0x4A55AA這樣寫,可以分成:0x4a,ox55,0xaa三次傳輸。希望我的回答能對你有所幫助!
回復

使用道具 舉報

ID:613370 發表于 2019-9-19 00:41 | 顯示全部樓層
雖然看不懂 感覺很厲害.
回復

使用道具 舉報

ID:213173 發表于 2019-9-19 06:42 | 顯示全部樓層
給你改寫成一次發送3個字節的示例,1T的MCU需要加短延時,12T的51不需要加短延時。 無標題.jpg

  1. #include<reg52.h>
  2. #include<intrins.h>

  3. sbit Ds=P1^0;//串行數據輸入端 14腳
  4. sbit Sh=P1^1;//移位寄存器時鐘輸入端 11腳
  5. sbit St=P1^2;//存儲寄存器時鐘輸入 12腳
  6. sbit Mr=P1^3;//主復位端,低電平復位 10腳

  7. void DelayMS(unsigned int ms)
  8. {
  9.         unsigned char i;
  10.         while(ms--)
  11.                 for(i=0;i<120;i++);
  12. }

  13. void In_Data(unsigned char a,b,c)
  14. {
  15.         unsigned char i,j;
  16.         j=a;
  17.         for(i=0;i<8;i++)
  18.         {
  19.                 j<<=1;
  20.                 _nop_();_nop_();
  21.                 Ds=CY;
  22.                 _nop_();_nop_();
  23.                 Sh=0;
  24.                 _nop_();_nop_();
  25.                 Sh=1;
  26.         }
  27.         j=b;
  28.         for(i=0;i<8;i++)
  29.         {
  30.                 j<<=1;
  31.                 _nop_();_nop_();
  32.                 Ds=CY;
  33.                 _nop_();_nop_();
  34.                 Sh=0;
  35.                 _nop_();_nop_();
  36.                 Sh=1;
  37.         }
  38.         j=c;
  39.         for(i=0;i<8;i++)
  40.         {
  41.                 j<<=1;
  42.                 _nop_();_nop_();
  43.                 Ds=CY;
  44.                 _nop_();_nop_();
  45.                 Sh=0;
  46.                 _nop_();_nop_();
  47.                 Sh=1;
  48.         }
  49.         St=0;
  50.         _nop_();_nop_();
  51.         St=1;
  52. }

  53. void main()
  54. {
  55.         Mr=0;
  56.         DelayMS(1);
  57.         Mr=1;
  58.         In_Data(0x4A,0x55,0xAA);
  59.         while(1);
  60. }
復制代碼




回復

使用道具 舉報

ID:590194 發表于 2019-9-19 07:14 來自觸屏版 | 顯示全部樓層
51jia 發表于 2019-9-18 23:54
樓主請認真看一下595的時序圖,分成三個字節傳輸三次,之后再鎖存片選,可達到目的,你的數據定義是8位的, ...

關鍵是怎么傳輸給595  沒搞明白 希望大師指點
回復

使用道具 舉報

ID:590194 發表于 2019-9-19 08:27 | 顯示全部樓層
cuihaodianzi 發表于 2019-9-18 15:29
我做過兩塊的 有仿真,可以給你參考一下

好的挖 能發給我看下嗎 萬分感謝啊
回復

使用道具 舉報

ID:213173 發表于 2019-9-19 09:30 | 顯示全部樓層
sq8422779 發表于 2019-9-19 07:14
關鍵是怎么傳輸給595  沒搞明白 希望大師指點

樓主看7樓回帖
回復

使用道具 舉報

ID:590194 發表于 2019-9-19 21:23 來自觸屏版 | 顯示全部樓層
wulin 發表于 2019-9-19 06:42
給你改寫成一次發送3個字節的示例,1T的MCU需要加短延時,12T的51不需要加短延時。

我去,大神,一語驚醒夢中人!我總算明白為什么要<<=1了前面的for8 是為了堆8個二進制數字過去 明白了 多謝
回復

使用道具 舉報

ID:590194 發表于 2019-9-19 21:26 來自觸屏版 | 顯示全部樓層
wulin 發表于 2019-9-19 09:30
樓主看7樓回帖

其實文中我一直沒搞明白 二進制數據怎么賦值 一看你的立刻明白,其實我文中根本就沒有賦任何數據到temp里,所以里面是0 難怪我測試燈是一個個的亮,一看你的就明白了,我根本就沒有賦值進去
回復

使用道具 舉報

ID:470497 發表于 2019-9-20 10:16 | 顯示全部樓層
PIC 單片機程序,供參考:

#include <stdlib.h>
#include <stdio.h>

#define SIO_CLK RD4
#define SIO_RCK RD5
#define SIO_Data RD6


void SerialIO_init()     //74HC595串行發送初始化
{
  TRISD4 = 0;
  TRISD5 = 0;       
  TRISD6 = 0;    //PORTD 輸出: 不受其他模板影響。輸入: 在上電復位時,這些引腳被配置為數字輸入。
}

/*-------------------------74HC595串行轉并行控制IO------------------------------------------------*/
void HC595_SIO(unsigned char Data)    // 74HC595串行發送
{
   unsigned char i;
    for(i = 0;i < 8;i++)               
    {
           SIO_CLK = 0;              
      if( Data&0x80)
                 {
                   SIO_Data = 1;
                 }   
       else
                 {   
                   SIO_Data = 0;
                 }
       SIO_CLK = 1;         
     Data <<= 1;           
    }
   SIO_RCK = 0;               //關鎖存
   SIO_RCK = 1;               //開鎖存
}
void SerialIO_fun(unsigned char Data[])  
{
  HC595_SIO(atoi(Data));
}
/*-------------------------End-----------------------------------------------------------------------*/
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲狠狠爱 | 日韩精品av一区二区三区 | 偷拍自拍第一页 | 久久99精品视频 | 精品国产99 | 91精品国产91久久久久福利 | 午夜在线免费观看视频 | 范冰冰一级做a爰片久久毛片 | 亚洲国产一区二区三区 | 亚洲高清av在线 | 日韩在线精品 | av一区二区在线观看 | 91亚洲精选 | 亚洲成人黄色 | 亚洲有码转帖 | 日韩中文字幕免费在线观看 | 日本免费视频在线观看 | 国产高清视频 | 性欧美精品一区二区三区在线播放 | 91国自视频 | 亚洲高清视频在线观看 | 久久欧美精品 | av网站免费在线观看 | 中文字幕成人在线 | 99久久精品国产一区二区三区 | 国产精品久久久久久婷婷天堂 | 在线观看www视频 | 成人精品一区二区 | 麻豆精品久久久 | 亚洲一区二区三区在线播放 | 欧美在线观看一区 | 91精品久久久久久久久久入口 | 欧美午夜在线 | 欧美mv日韩mv国产网站91进入 | 日本高清不卡视频 | 免费看日韩视频 | 久久精品 | 九色.com | 巨大黑人极品videos精品 | 男女午夜免费视频 | 日韩中文字幕在线观看视频 |