打印

请教!程序如何修改为(LED灯自下而上的流动)

[复制链接]
1229|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 zhijie428 于 2014-2-19 21:51 编辑


#include<reg51.h>           //51芯片管脚定义头文件
#include<intrins.h>         //内部包含延时函数 _nop_();
#include<STRING.H>  
#define uchar unsigned char
#define uint  unsigned int
sbit  SDATA_595=P2^1;         //串行数据输入
sbit  SCLK_595 =P2^0;          //移位时钟脉冲
sbit  RCK_595  =P2^2;           //输出锁存器控制脉冲

uchar temp;

/********************************************************/
/*                                                                                                            */
/* 延时子程序                                                                                            */
/*                                                                                                            */
/********************************************************/
void delay(int ms)
{
   int k;
   while(ms--)
   {
     for(k=0; k<50; k++)
     {
      _nop_();
      _nop_();
      _nop_();
      _nop_();
     }
   }
}
/********************************************************/
/*                                                                                                            */
/*将显示数据送入74HC595内部移位寄存器                                                   */
/*                                                                                                            */
/********************************************************/
void WR_595(void)
{
     uchar j;

     for (j=0;j<8;j++)
     {
      temp=temp<<1;


      SDATA_595=CY;     //发送74HC595一位串行数据

      SCLK_595=1;                     //上升沿发生移位
       _nop_();
       _nop_();
      SCLK_595=0;
     }
     SDATA_595=1;
}


/********************************************************/
/*                                                                                                            */
/*将移位寄存器内的数据锁存到输出寄存器并显示                                             */
/*                                                                                                            */
/********************************************************/

void OUT_595(void)
{
    RCK_595=0;
    _nop_();
    _nop_();
    _nop_();
   RCK_595=1;                       //上升沿将数据送到输出锁存器
    _nop_();
    _nop_();
    _nop_();
    RCK_595=0;

}
void main()

{

SCLK_595=0;
  
RCK_595=1;

   while(1)
    {
      
        temp=0x80;         //取显示数据
        WR_595();
       OUT_595();
        delay(800);
        temp=0x40;         //取显示数据
        WR_595();
       OUT_595();
        delay(800);
        temp=0x20;         //取显示数据
        WR_595();
       OUT_595();
        delay(800);
        temp=0x10;         //取显示数据
        WR_595();
       OUT_595();
        delay(800);
        temp=0x08;         //取显示数据
        WR_595();
       OUT_595();
        delay(800);
        temp=0x04;         //取显示数据
        WR_595();
       OUT_595();
        delay(800);
        temp=0x02;         //取显示数据
        WR_595();
       OUT_595();
        delay(800);
        temp=0x01;         //取显示数据
        WR_595();
       OUT_595();
        delay(800);
}
}

相关帖子

沙发
zhijie428|  楼主 | 2014-2-18 21:33 | 只看该作者
实现自下而上的点亮。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

11

帖子

1

粉丝