51单片机做的74HC595驱动控制LED

时间:2025-03-07 15:42:20
  • #include<>
  • #include<>

  • sbit SRCLK=P3^6;
  • sbit RCLK=P3^5;
  • sbit SER=P3^4;
  • void Hc595SendByte(unsigned char dat);
  • void Delay10ms(unsigned int ) ;
  • void main()
  • {
  •         unsigned char ledNum;
  •         ledNum=0xfe;
  •         while(1)
  •         {
  •                 Hc595SendByte(ledNum);
  •                 ledNum=_cror_(ledNum,1);
  •                 Delay10ms(50);
  •         }        
  • }
  • /*******************************************************************************
  • * 函数名         : Hc595SendByte(unsigned char dat)
  • * 函数功能                   : 想74H595发送一个字节的数据
  • * 输入           : 无
  • * 输出                  : 无
  • *******************************************************************************/
  • void Hc595SendByte(unsigned char dat)
  • {
  •         unsigned char a;
  •         SRCLK=0;
  •         RCLK=0;
  •         for(a=0;a<8;a++)
  •         {
  •                 SER=dat>>7;
  •                 dat<<=1;

  •                 SRCLK=1;
  •                 _nop_();
  •                 _nop_();
  •                 SRCLK=0;        
  •         }

  •         RCLK=1;
  •         _nop_();
  •         _nop_();
  •         RCLK=0;
  • }
  • /*******************************************************************************
  • * 函数名         : Delay10ms
  • * 函数功能                   : 延时函数,延时10ms
  • * 输入           : c
  • * 输出                  : 无
  • *******************************************************************************/
  • void Delay10ms(unsigned int c)   //误差 0us
  • {
  •     unsigned char a,b;
  •     for(;c>0;c--)
  •         for(b=38;b>0;b--)
  •             for(a=130;a>0;a--);
  • }