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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3225|回復(fù): 12
收起左側(cè)

關(guān)于STC單片機(jī)控制HC595的問題

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

單片機(jī)源程序如下:
#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);
     }
}
}
?
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:158375 發(fā)表于 2019-9-18 17:36 | 顯示全部樓層
主要是看看清除 HC595 手冊(cè)即可,程序只是具體的實(shí)現(xiàn)。
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

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

  3. sbit Ds=P1^0;//串行數(shù)據(jù)輸入端 14腳
  4. sbit Sh=P1^1;//移位寄存器時(shí)鐘輸入端 11腳
  5. sbit St=P1^2;//存儲(chǔ)寄存器時(shí)鐘輸入 12腳
  6. sbit Mr=P1^3;//主復(fù)位端,低電平復(fù)位 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. }
復(fù)制代碼




回復(fù)

使用道具 舉報(bào)

ID:590194 發(fā)表于 2019-9-19 07:14 來自觸屏版 | 顯示全部樓層
51jia 發(fā)表于 2019-9-18 23:54
樓主請(qǐng)認(rèn)真看一下595的時(shí)序圖,分成三個(gè)字節(jié)傳輸三次,之后再鎖存片選,可達(dá)到目的,你的數(shù)據(jù)定義是8位的, ...

關(guān)鍵是怎么傳輸給595  沒搞明白 希望大師指點(diǎn)
回復(fù)

使用道具 舉報(bào)

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

好的挖 能發(fā)給我看下嗎 萬分感謝啊
回復(fù)

使用道具 舉報(bào)

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

樓主看7樓回帖
回復(fù)

使用道具 舉報(bào)

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

我去,大神,一語驚醒夢(mèng)中人!我總算明白為什么要<<=1了前面的for8 是為了堆8個(gè)二進(jìn)制數(shù)字過去 明白了 多謝
回復(fù)

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

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

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


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

/*-------------------------74HC595串行轉(zhuǎn)并行控制IO------------------------------------------------*/
void HC595_SIO(unsigned char Data)    // 74HC595串行發(fā)送
{
   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;               //關(guān)鎖存
   SIO_RCK = 1;               //開鎖存
}
void SerialIO_fun(unsigned char Data[])  
{
  HC595_SIO(atoi(Data));
}
/*-------------------------End-----------------------------------------------------------------------*/
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕在线第一页 | 欧美视频精品 | 日日干日日操 | 亚洲精彩视频在线观看 | 羞羞免费网站 | 国产女人与拘做视频免费 | 一区二区三区视频在线观看 | 在线资源视频 | 久久夜视频| 国产一区二区三区亚洲 | 欧美一极视频 | 99福利视频导航 | 91视频18 | 日本精品网站 | 中文字幕一区在线观看视频 | 国产精品美女久久久久久免费 | 日韩欧美三级在线 | 99精品网 | 日韩欧美在线观看 | 久久亚洲国产 | 免费视频一区二区 | 91久久久久久久久久久久久 | 夜夜骑天天干 | 女人牲交视频一级毛片 | 午夜久久久 | 日日夜夜狠狠操 | 色爱区综合 | 欧美色性| 日本在线播放一区二区 | 日韩精品一区在线 | 蜜桃综合在线 | 成年人视频免费在线观看 | 亚洲欧洲激情 | 成人国产一区二区三区精品麻豆 | 一区视频 | 亚洲免费在线 | www久久久 | 9191成人精品久久 | 欧美亚洲国产日韩 | 国产毛片毛片 | 免费观看羞羞视频网站 |