找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

我根据74hc595手册 写了个单片机程序 但是出现了问题 希望大家能给我点帮助

查看数: 1816 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-2-25 16:37

正文摘要:

流水灯是共阳极的 所以仿真运行的时候  实验现象:流水灯会全亮一会 然后 就变得全灭了 然后就不再变化了 问题: 我写的程序要求的是 亮灭亮灭 然后再流水 为什么 就只亮灭了一次 就不再变化了呢 ...

回复

ID:575020 发表于 2020-2-27 19:29
楼主代码,我这缺少#include <delayms.h>文件,
自己画了个原理图做了个实物,用2楼代码通过了,先全部闪2下,然后再依次按顺序闪亮,
主要想学习控制数码管,但是现在控制led灯还是搞不太明白,还要继续努力学习啊!
在网上看好多74hc595的教学视频,好多都是用arduino单片机降解的,:(

顺便问一下,好多芯片介绍说某引脚接高或低电平有效时,如果不想用单片机控制,直接接+5V电源或负极可以么?


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:679425 发表于 2020-2-27 08:37
把 led8_Init();放进while循环中就会有了
ID:575020 发表于 2020-2-26 15:33
我要51啦 发表于 2020-2-26 13:49
昨天经过实验 发现是因为我把keil运行模式改成了large 我仿真时用的AT89c52而写程序用的是STC 所以出现了问 ...

发张电路原理图看看,共同学习一下。
ID:688261 发表于 2020-2-26 13:49
昨天经过实验 发现是因为我把keil运行模式改成了large 我仿真时用的AT89c52而写程序用的是STC 所以出现了问题 我把能放进code里面的数组都放进去了 把运行模式调回了small 现在已经能成功运行了 谢谢大家
ID:164602 发表于 2020-2-26 09:54
初始化595,只要一次led_sendbyte(0x00)就可以了,一定要先用。当然,如果这样led灯亮了,就要初始化led灯,再来一次led_sendbyte(0xff)就好了。
ID:679425 发表于 2020-2-26 09:16
把 led8_Init();放进while循环中就会有了
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: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. }

复制代码

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表