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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1868|回復: 10
收起左側

我根據74hc595手冊 寫了個單片機程序 但是出現了問題 希望大家能給我點幫助

[復制鏈接]
ID:688261 發表于 2020-2-25 16:37 | 顯示全部樓層 |閱讀模式
流水燈是共陽極的 所以仿真運行的時候  實驗現象:流水燈會全亮一會 然后 就變得全滅了 然后就不再變化了


問題: 我寫的程序要求的是 亮滅亮滅 然后再流水 為什么 就只亮滅了一次 就不再變化了呢

各位大佬能指導下我嘛

單片機程序如下:

#include <reg52.h>
#include <intrins.h>
#include <delayms.h>

#define uchar unsigned char
#define uint unsigned int

uchar led_buff;

sbit DS1=P2^6;
sbit ST_CP1=P1^7;
sbit SH_CP1=P2^5;

void led8_Init();
void led8();

void led_sendbyte(uchar byte);
void led_595();



void main(void)
{
    led8_Init();
    while(1)
    {
        led8();
    }
}

void led8()  //流水燈
{
led_sendbyte(led_buff);
led_595();
led_buff=_crol_(led_buff,1);
delayms(500);
}

void led8_Init()  //初始化流水燈
{
led_sendbyte(0xff);
led_595();
delayms(500);
led_sendbyte(0x00);
led_595();
delayms(500);
led_sendbyte(0xff);
led_595();
delayms(500);
led_buff=0xfe;
}
void led_sendbyte(uchar byte) //傳輸8位數據
{
uchar i,num;
num=byte;
for(i=0;i<8;i++)
{
  if(num&0x80)
   DS1=1;
  else
   DS1=0;
  SH_CP1=0;
  _nop_();_nop_();
  SH_CP1=1;
  num=num<<1;
}
}
void led_595() // 啟動傳輸
{
ST_CP1=0;
_nop_();_nop_();
ST_CP1=1;
}


回復

使用道具 舉報

ID:213173 發表于 2020-2-25 21:40 | 顯示全部樓層
程序要求的是 亮滅亮滅 然后再流水
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. //#include <delayms.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int

  6. sbit DS1=P2^6;
  7. sbit ST_CP1=P1^7;
  8. sbit SH_CP1=P2^5;

  9. uchar code table[]={
  10.                 0xfe,0xfd,0xfb,0xf7,
  11.                 0xef,0xdf,0xbf,0x7f};

  12. void delay(uint z)
  13. {
  14.         uchar x;
  15.         while(z--)           //1ms延時程序
  16.         for(x=120;x>0;x--);
  17. }
  18. void led_sendbyte(uchar byte) //傳輸8位數據
  19. {
  20.         uchar i,num;
  21.         num=byte;
  22.         for(i=0;i<8;i++)
  23.         {
  24.                 if(num&0x80)
  25.                         DS1=1;
  26.                 else
  27.                         DS1=0;
  28.                 SH_CP1=0;
  29.                 _nop_();_nop_();
  30.                 SH_CP1=1;
  31.                 num=num<<1;
  32.         }
  33.         ST_CP1=0;
  34.         _nop_();_nop_();
  35.         ST_CP1=1;
  36. }

  37. void main(void)
  38. {
  39.         uchar i;
  40.         for(i=0;i<2;i++)
  41.         {       
  42.                 led_sendbyte(0x00);
  43.                 delay(500);
  44.                 led_sendbyte(0xff);
  45.                 delay(500);
  46.         }
  47.         while(1)
  48.         {
  49.                 for(i=0;i<8;i++)
  50.                 {       
  51.                         led_sendbyte(table[i]);
  52.                         delay(500);
  53.                 }
  54.         }
  55. }

復制代碼
回復

使用道具 舉報

ID:235200 發表于 2020-2-26 00:55 | 顯示全部樓層
把 led8_Init();放進while循環中就會有了

void main(void)
{
  uchar k;
    while(1)
    {
        led8_Init();     //亮滅
        led8_Init();     //亮滅
       for (k=0;k<8;k++)    //流水
        led8();
    }
}
回復

使用道具 舉報

ID:679425 發表于 2020-2-26 09:16 | 顯示全部樓層
把 led8_Init();放進while循環中就會有了
回復

使用道具 舉報

ID:164602 發表于 2020-2-26 09:54 | 顯示全部樓層
初始化595,只要一次led_sendbyte(0x00)就可以了,一定要先用。當然,如果這樣led燈亮了,就要初始化led燈,再來一次led_sendbyte(0xff)就好了。
回復

使用道具 舉報

ID:688261 發表于 2020-2-26 13:49 | 顯示全部樓層
昨天經過實驗 發現是因為我把keil運行模式改成了large 我仿真時用的AT89c52而寫程序用的是STC 所以出現了問題 我把能放進code里面的數組都放進去了 把運行模式調回了small 現在已經能成功運行了 謝謝大家
回復

使用道具 舉報

ID:575020 發表于 2020-2-26 15:33 | 顯示全部樓層
我要51啦 發表于 2020-2-26 13:49
昨天經過實驗 發現是因為我把keil運行模式改成了large 我仿真時用的AT89c52而寫程序用的是STC 所以出現了問 ...

發張電路原理圖看看,共同學習一下。
回復

使用道具 舉報

ID:688261 發表于 2020-2-26 21:46 | 顯示全部樓層
電路圖

595三個引腳接在io口上

595三個引腳接在io口上
回復

使用道具 舉報

ID:679425 發表于 2020-2-27 08:37 | 顯示全部樓層
把 led8_Init();放進while循環中就會有了
回復

使用道具 舉報

ID:575020 發表于 2020-2-27 18:34 | 顯示全部樓層

temp.c(4): warning C318: can't open file 'delayms.h'

在網上看別的文檔說8和13腳接地,10和16腳接VCC。但是一般原理圖里都缺少2個腳。
回復

使用道具 舉報

ID:575020 發表于 2020-2-27 19:29 | 顯示全部樓層
樓主代碼,我這缺少#include <delayms.h>文件,
自己畫了個原理圖做了個實物,用2樓代碼通過了,先全部閃2下,然后再依次按順序閃亮,
主要想學習控制數碼管,但是現在控制led燈還是搞不太明白,還要繼續努力學習啊!
在網上看好多74hc595的教學視頻,好多都是用arduino單片機降解的,:(

順便問一下,好多芯片介紹說某引腳接高或低電平有效時,如果不想用單片機控制,直接接+5V電源或負極可以么?
IMG_20200227_174028.jpg

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费在线观看黄色av | 亚洲精品区 | 欧美日韩国产一区 | 国产成人精品网站 | 久久国产精品色av免费观看 | 成人不卡| 亚洲国产激情 | 免费日韩av | 一区二区三区中文字幕 | 欧美亚洲视频在线观看 | 有码在线| 久久成人精品 | 日韩三极 | 香蕉超碰 | 中文字幕免费视频 | 国产99久久精品一区二区永久免费 | h视频在线观看免费 | 日韩成人免费视频 | 亚洲午夜小视频 | 国产精品久久影院 | 成人在线精品 | 国产色 | 一区欧美 | 国产精品无码久久久久 | 在线欧美一区二区 | 在线视频亚洲 | 久久av网 | 欧美福利久久 | 美女高潮网站 | 日韩不卡视频在线 | 精品国产乱码久久久久久牛牛 | 国产一区视频在线 | 欧美一级片a | 亚洲日韩中文字幕一区 | 日本三级线观看 视频 | 国产91久久久久蜜臀青青天草二 | 美女国产一区 | 国产日韩欧美二区 | 国产精品3区 | 激情欧美一区二区三区中文字幕 | 91精品中文字幕一区二区三区 |