74HC595芯片的IO扩展(串转并)实验(包含硬件原理和软件编程解析和代码)

简介: 74HC595芯片的IO扩展(串转并)实验(包含硬件原理和软件编程解析和代码)
#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
//特殊管脚寄存器的对应一般不可变
sbit rCLK=P3^5;//移位寄存器时钟输入---注:RCLK已被reg52.h定义使用,需要重新定义
sbit SRCLK=P3^6;//存储寄存器时钟输入
sbit SER=P3^4;//串行数据输入
#define LEDDZ_COL_PORT    P0    //点阵列控制端口
//使用矩阵控制点阵LED点亮  
//如0x01是最后一行点亮,其他不亮,则最后一行是1,其他是0,此时是00000001,十六进制是0x01
u8 ghc595_buf[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void delay_10us(u16 ten_us)//微秒级延时函数
{
    while(ten_us--);    
}
void delay_ms(u16 ms)//毫秒级延时函数
{
    u16 i,j;
    for(i=ms;i>0;i--)
        for(j=110;j>0;j--);
}
//芯片通过移位寄存器时钟和存储寄存器(函数hc595_write_data)实现0x01 0x02 0x04 0x08 0x10等(用ghc595_buf代替)点亮灯的操作
//串行数据输入:先转化为字节,并1位1位存储在SER(串行数据输入),后通过SRCLK(移位存储器)在0-1变化产生上升沿传递给RCLK(存储寄存器)
void hc595_write_data(u8 dat)
{
    u8 i=0;
    for(i=0;i<8;i++)//循环8次即可将一个字节写入寄存器中,因为1.2.3等都是1bit,8字节,需要1字节1字节的移动
    {
        SER=dat>>7;//从高位到低位存储
        dat<<=1;//将低位移动到高位
//形成0-1的变化,创造上升沿,才能传递给存储寄存器
        SRCLK=0;
        delay_10us(1);//需要延时函数给存储寄存器反应时间
        SRCLK=1;
        delay_10us(1);
    }
    rCLK=0;
    delay_10us(1);
    rCLK=1;//存储寄存器完成数据输出    
}
void main()
{    
    u8 i=0;
    LEDDZ_COL_PORT=0x00;//将LED点阵列全部设置为0,即LED阴极为低电平,形成电势差,才能点亮led
    while(1)
    {        
        for(i=0;i<8;i++)
        {    
            hc595_write_data(0x00);//消影---消除前面寄存器缓存数据,使肉眼更清晰
            hc595_write_data(ghc595_buf[i]);//写入新的数据
            delay_ms(500);//延时500ms----也可以用另一个延时函数,只是数值会比较大,u16不满足    
        }                                    
    }        
}

b5a9f50fb6e84d0cb7b37c2103c3025e.png

5e838d52085145e59a78ab620d0db974.png


相关文章
|
2天前
|
数据采集 异构计算
LabVIEW编程LabVIEW开发高级数据采集技术 操作数字IO 例程与相关资料
LabVIEW编程LabVIEW开发高级数据采集技术 操作数字IO 例程与相关资料
40 22
|
2天前
|
数据采集 人工智能 异构计算
LabVIEW编程LabVIEW开发 PXI-6259多功能IO模块 例程与相关资料
LabVIEW编程LabVIEW开发 PXI-6259多功能IO模块 例程与相关资料
【51单片机】烧写教程:将代码下载到单片机中(图示&解析)
【51单片机】烧写教程:将代码下载到单片机中(图示&解析)
|
10天前
|
C++ 数据格式
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]
|
11天前
|
C++
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
|
11天前
|
Serverless C++ 容器
【期末不挂科-C++考前速过系列P5】大二C++实验作业-多态性(3道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P5】大二C++实验作业-多态性(3道代码题)【解析,注释】
|
11天前
|
C++ 芯片
【期末不挂科-C++考前速过系列P4】大二C++实验作业-继承和派生(3道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P4】大二C++实验作业-继承和派生(3道代码题)【解析,注释】
|
11天前
|
编译器 C++
【期末不挂科-C++考前速过系列P3】大二C++第3次过程考核(20道选择题&12道判断题&2道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P3】大二C++第3次过程考核(20道选择题&12道判断题&2道代码题)【解析,注释】
|
11天前
|
C++
【期末不挂科-C++考前速过系列P2】大二C++第2次过程考核(20道选择题&10道判断题&3道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P2】大二C++第2次过程考核(20道选择题&10道判断题&3道代码题)【解析,注释】
|
12天前
|
存储 数据安全/隐私保护 C++
【期末不挂科-C++考前速过系列P1】大二C++第1次过程考核(3道简述题&7道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P1】大二C++第1次过程考核(3道简述题&7道代码题)【解析,注释】

推荐镜像

更多