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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機74HC595循環點亮LED 運行起來會有不止一個LED亮起來?

查看數: 2764 | 評論數: 8 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2023-5-30 14:03

正文摘要:

單片機通過74HC595控制8個LED循環點亮,按照D16-D15-D14......D9依次循環,每次亮一個。仿真看著沒問題,實物運行起來會有不止一個LED亮起來,學藝不精,找了很久沒找到問題根源,還請大佬指點迷津。 單片機型號STC ...

回復

ID:1080867 發表于 2023-5-31 23:10
188610329 發表于 2023-5-31 17:20
存在的問題是,你還沒完成下降,就開始上升了。不知道你用的什么單片機,如果1T 的單片機, RCLK = 0; 到 ...

在 RCK=0;  RCK=1之間插入多個_nop_()也不起作用; 單片機是STC89C52,595供電電壓是5V,萬用表實際測下來是4.97V
ID:624769 發表于 2023-5-31 17:20
Cqzm 發表于 2023-5-30 22:55
你好,我照著你的改了下代碼,進入HC595_Send()函數時就將RCK拉低,八位寫完后在拉高RCK,能正常運行了。 ...

存在的問題是,你還沒完成下降,就開始上升了。不知道你用的什么單片機,如果1T 的單片機, RCLK = 0; 到 RCLK =1; 之間,你最少要插入 5個 _nop_();   如果你的 595是 3V供電的話,你甚至需要 插入12個_nop_(); 才夠。
ID:1080867 發表于 2023-5-31 14:47
pcf2000 發表于 2023-5-31 09:43
SER=byte>>7;    這句代碼是什么意思,串行輸出不該是一位一位輸出的嗎,你移動7位,高位的數據直接出位, ...

數據是串入并出的,這句是在往移位寄存器里面寫入的
ID:1081090 發表于 2023-5-31 13:51
提醒樓主一個冷知識:不同廠家的595芯片,對鎖存和ENABLE的邏輯要求不完全相同,你看下你使用的595芯片對應的手冊就明白了。
ID:123289 發表于 2023-5-31 10:37
1、要點,先關閉OE,這樣數據的切換就不會閃動,因為這時不顯示(暗,消影)。
2、給出串行數據;
3、要點:等數據穩定后,再給出移位脈沖信號上沿。
4、待輸出穩定后,打開OE,放出數據。
所謂穩定,也就是插入幾個NOP指令的事。
硬件上要注意,CLK信號,復位信號要做防護,不能受到干擾。

ID:245053 發表于 2023-5-31 09:43
本帖最后由 pcf2000 于 2023-5-31 09:51 編輯

SER=byte>>7;    這句代碼是什么意思,串行輸出不該是一位一位輸出的嗎,你移動7位,高位的數據直接出位,就用0補位了,就出現LED燈亮了,
記住,你的電路是0電平點亮LED燈,要實現每次只一只LED點亮,595的輸出每次必須只有一位輸出為0
改為 :SER=byte>>1;    即可
ID:1080867 發表于 2023-5-30 22:55
wulin 發表于 2023-5-30 16:40
程序沒有什么明顯問題,仿真成功不等于實物就能成功。把595驅動代碼調整一下試試。

你好,我照著你的改了下代碼,進入HC595_Send()函數時就將RCK拉低,八位寫完后在拉高RCK,能正常運行了。 修改前HC595_Send()這個函數里面,寫入八位后RCK給一個上升沿這種做法為啥不對呢?l兩者看起來差不多啊,存在什么問題。

void HC595_Write(unsigned char dat)
{
    unsigned char i;
    RCK=0;
    for(i=0;i<8;i++)
    {
        SCK=0;
        SER=dat>>7;
        dat<<=1;
        SCK=1;
        _nop_();
    }
    RCK=1;
}
ID:213173 發表于 2023-5-30 16:40
程序沒有什么明顯問題,仿真成功不等于實物就能成功。把595驅動代碼調整一下試試。
  1. #include<reg52.h>
  2. #include<intrins.h>

  3. sbit RCK=P3^5;  // Pin12  輸出鎖存控制脈沖
  4. sbit SER=P3^4;  // Pin14  串行數據輸入
  5. sbit SCK=P3^6;  // Pin11  移位脈沖

  6. void HC595_Send(unsigned char byte);
  7. void Delay();

  8. void main()
  9. {
  10.         unsigned char i;
  11.         unsigned char buffer[8]={0X7F,0XBF,0XDF,0XEF,0XF7,0XFB,0XFD,0XFE};
  12.         SCK=0;       
  13.         RCK=0;
  14.         while(1)
  15.         {
  16.                 for(i=0;i<8;i++)                //循環點亮單個LED
  17.                 {
  18.                         HC595_Send(buffer[i]);
  19.                         Delay();
  20.                 }
  21.         }
  22. }

  23. /*驅動HC595*/
  24. void HC595_Send(unsigned char byte)
  25. {
  26.         unsigned char i;
  27.         for(i=0;i<8;i++)//寫入移位寄存器
  28.         {
  29.                 SER=byte>>7;
  30.                 SCK=1;
  31.                 _nop_();
  32.                 SCK=0;
  33.                 byte<<=1;
  34.         }       
  35.         RCK=1;        //鎖存時鐘產生上升沿更新輸出
  36.         _nop_();
  37.         RCK=0;
  38. }

  39. /*延時*/
  40. void Delay()                //@12.000MHz
  41. {
  42.         unsigned char i, j, k;
  43.         _nop_();
  44.         i = 8;
  45.         j = 154;
  46.         k = 122;
  47.         do
  48.         {
  49.                 do
  50.                 {
  51.                         while (--k);
  52.                 } while (--j);
  53.         } while (--i);
  54. }
復制代碼

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品日韩一区二区 | 欧美偷偷操 | 免费一级黄色录像 | 成人羞羞国产免费视频 | 在线看91| 在线观看的av | 国产成人免费视频网站高清观看视频 | 色婷婷综合久久久中字幕精品久久 | 国产欧美视频一区二区 | 91视频在线看 | 一区二区精品 | 国产区视频在线观看 | 欧美黄色片 | 亚洲精品久久久一区二区三区 | 婷婷成人在线 | 日本a视频 | 午夜精品久久久久久久久久久久久 | 欧美xxxx性xxxxx高清 | 国产精品久久久久久亚洲调教 | 97成人在线 | 欧美日韩综合一区 | 日本天堂视频在线观看 | 色婷婷综合久久久久中文一区二区 | 国产精品欧美一区二区 | 欧美精品一 | 一区二区在线不卡 | 一级欧美一级日韩片 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 中文字幕欧美一区 | 亚洲国产精久久久久久久 | 久久久欧洲 | 精品一区二区久久久久久久网精 | 国产一区二区精品在线 | 亚洲三区在线观看 | 嫩草视频在线免费观看 | 久久最新网址 | 狠狠爱视频| av久久| 91传媒在线观看 | 国产一区二区三区四区 | av福利网站|