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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2987|回復: 12
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
本人做了個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);
     }
}
}
?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
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 手冊即可,程序只是具體的實現。
回復

使用道具 舉報

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

使用道具 舉報

6#
ID:613370 發表于 2019-9-19 00:41 | 只看該作者
雖然看不懂 感覺很厲害.
回復

使用道具 舉報

7#
ID:213173 發表于 2019-9-19 06:42 | 只看該作者
給你改寫成一次發送3個字節的示例,1T的MCU需要加短延時,12T的51不需要加短延時。

  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. }
復制代碼




回復

使用道具 舉報

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

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

使用道具 舉報

9#
ID:590194 發表于 2019-9-19 08:27 | 只看該作者
cuihaodianzi 發表于 2019-9-18 15:29
我做過兩塊的 有仿真,可以給你參考一下

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

使用道具 舉報

10#
ID:213173 發表于 2019-9-19 09:30 | 只看該作者
sq8422779 發表于 2019-9-19 07:14
關鍵是怎么傳輸給595  沒搞明白 希望大師指點

樓主看7樓回帖
回復

使用道具 舉報

11#
ID:590194 發表于 2019-9-19 21:23 來自手機 | 只看該作者
wulin 發表于 2019-9-19 06:42
給你改寫成一次發送3個字節的示例,1T的MCU需要加短延時,12T的51不需要加短延時。

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

使用道具 舉報

12#
ID:590194 發表于 2019-9-19 21:26 來自手機 | 只看該作者
wulin 發表于 2019-9-19 09:30
樓主看7樓回帖

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

使用道具 舉報

13#
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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区视频在线播放 | 81精品国产乱码久久久久久 | 亚洲欧美国产视频 | 91性高湖久久久久久久久_久久99 | 国产精品久久视频 | 青青草网站在线观看 | 欧美a级成人淫片免费看 | 国产精品伦一区二区三级视频 | 99精品一区二区 | 视频一二三区 | 日韩看片 | 久久在线 | 亚洲欧美日韩在线 | 久久久国产一区二区三区 | 国产午夜精品视频 | 在线视频中文字幕 | 亚洲日本免费 | 国产精品久久久久久52avav | 成人免费淫片aa视频免费 | 日韩欧美亚洲 | 亚洲永久入口 | 亚洲欧洲精品在线 | 热99视频 | 夜夜操天天操 | 日韩区| 最新国产福利在线 | 国产午夜av片 | 成人在线观看网址 | 色婷婷久久久久swag精品 | av超碰| 狠狠骚 | 精品国产欧美一区二区三区成人 | 欧美激情 亚洲 | 国产激情偷乱视频一区二区三区 | 99久久婷婷国产综合精品电影 | 嫩草影院网址 | 国产超碰人人爽人人做人人爱 | h视频免费观看 | 五月婷婷丁香 | 欧美8一10sex性hd | 日韩一区二区三区在线看 |