51单片机74HC164(右移的芯片)的使用

简介: 51单片机74HC164(右移的芯片)的使用

电路图以及代码我都上传到资源里面的有需要的自己去下,都是免费的。我一个学弟问我这个咋用,给他写的顺便分享一下吧哈哈。

目的:

74HC164的使用,74HC164就是一个串入并出的芯片A和B端就是串入数据的接收端,当CLK端来一个上升沿信号后,就会把A和B端接收到的数据传到输出端,即Q0到Q7,每来8个上升沿以后Q0到Q7便会都有数据,我这里为了更清楚的观察到输出端的数据变化连接的是LED,弄懂了输出端的数据变化就可以自己试着把LED改为数码管了。

代码的易错点解释:

void senddata(uint da)
     { 
      uchar num,c;
  num=TAB[da];
      for(c=0;c<8;c++){ 
       CLK=0;
       SDA=num&0x01;
      CLK=1;
  num>>=1;
  }
     }

这是个数据发送函数,CLK是单片机的一个端口,负责产生上升沿信号。SDA也是单片机的一个端口,负责串行数据的写入,每次写入的都是待发送数据的相对最低位。

微信图片_20221012184930.png

    #include<reg51.h>
    #define uint unsigned int
    #define uchar unsigned char
    /*uchar  code  TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};某一类数码管的编码,懂点亮
    LED的含义后,可以试试玩数码管哈哈*/
    uchar  code  TAB[]=
           {
            00000001,00000010,00000100,00001000,
            00010000,00100000,01000000,10000010
            };//流水灯哈哈
     void delay(uchar time);
     void send(uint da);
     sbit CLK=P1^1;
     sbit SDA=P1^0;
     void delay(uchar time )
     {
      uint i,j;
      for(i=0;i<time;i++)
  {
    for(j=0;j<110;j++)
     ;
  }
     }
     void senddata(uint da)
     { 
       uchar num,c;
     num=TAB[da];
       for(c=0;c<8;c++){ 
       CLK=0;
       SDA=num&0x01;
       CLK=1;
     num>>=1;
  }
     }
void main()
{ 
 uchar n;
while(1)
 {
    for(n=0;n<8;n++)
    { 
       delay(200);
       senddata(n);
     delay(200); 
    }
    n=0 ;
 }
}
相关文章
|
存储 C语言 芯片
51单片机&15单片机 时钟芯片DS1302
51单片机&15单片机 时钟芯片DS1302
194 0
|
传感器 编解码 芯片
51单片机驱动步进电机——使用ULN2003芯片
51单片机驱动步进电机——使用ULN2003芯片
321 0
51单片机驱动步进电机——使用ULN2003芯片
|
芯片
复习单片机:直流电机(内含1 直流电机介绍+2 ULN2003 芯片介绍+3 硬件设计+4 软件设计+5原始代码+6. 实验现象)
复习单片机:直流电机(内含1 直流电机介绍+2 ULN2003 芯片介绍+3 硬件设计+4 软件设计+5原始代码+6. 实验现象)
174 0
复习单片机:直流电机(内含1 直流电机介绍+2 ULN2003 芯片介绍+3 硬件设计+4 软件设计+5原始代码+6. 实验现象)
|
存储 缓存 芯片
复习单片机:IO串转并(内含:1. 74HC595 芯片介绍+2. 硬件设计+3. 软件设计+4.原始代码+5. 实验现象)
复习单片机:IO串转并(内含:1. 74HC595 芯片介绍+2. 硬件设计+3. 软件设计+4.原始代码+5. 实验现象)
319 0
复习单片机:IO串转并(内含:1. 74HC595 芯片介绍+2. 硬件设计+3. 软件设计+4.原始代码+5. 实验现象)
|
芯片
复习单片机:动态数码管(1 数码管介绍+2 74HC245 和 74HC138 芯片介绍+3 硬件设计+4 软件设计+5 实验现象)
复习单片机:动态数码管(1 数码管介绍+2 74HC245 和 74HC138 芯片介绍+3 硬件设计+4 软件设计+5 实验现象)
692 0
复习单片机:动态数码管(1 数码管介绍+2 74HC245 和 74HC138 芯片介绍+3 硬件设计+4 软件设计+5 实验现象)
|
存储 编解码 芯片
单片机:ADC模数转换实验(内含ADC介绍+XPT2046芯片介绍+硬件电路设计+软件编程设计+原始代码)
单片机:ADC模数转换实验(内含ADC介绍+XPT2046芯片介绍+硬件电路设计+软件编程设计+原始代码)
653 0
单片机:ADC模数转换实验(内含ADC介绍+XPT2046芯片介绍+硬件电路设计+软件编程设计+原始代码)
|
传感器 编解码 芯片
单片机:DS18B20温度传感器(内含芯片介绍+硬件设计+软件设计+配置环境)
单片机:DS18B20温度传感器(内含芯片介绍+硬件设计+软件设计+配置环境)
246 0
单片机:DS18B20温度传感器(内含芯片介绍+硬件设计+软件设计+配置环境)
|
芯片
单片机:直流电机(内含ULN2003芯片,硬件原理及解析,软件编程及注释)
单片机:直流电机(内含ULN2003芯片,硬件原理及解析,软件编程及注释)
175 0
单片机:直流电机(内含ULN2003芯片,硬件原理及解析,软件编程及注释)
单片机:实现流水灯(用库函数控制LED左移和右移)
单片机:实现流水灯(用库函数控制LED左移和右移)
522 0
单片机:实现流水灯(用库函数控制LED左移和右移)
|
芯片
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(3)
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(3)
600 0
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(3)