linux数码管实验源代码,SF-EP1C开发板之基于74HC595的数码管实验

74HC595简介

74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SDL输入到内部的8位位移缓存器,并由Q7‘输出,而并行输出则是在LCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。而当OE为高电位,也就是输出关闭时,并行输出端会维持在高阻抗状态。

3eae30c2c5b748e4d28cf8d733b701a3.png

8位串行输入 /8位串行或并行输出 存储状态寄存器,三种状态

74HC595是具有三态输出功能(即具有高电平、低电平和高阻抗三种输出状态)的门电路。输出寄存器可以直接清除。具有100MHz的移位频率。

74HC595驱动静态数码管程序

#include《reg51.h》

#include《intrins.h》

#defineNOP()_nop_()

sbitMOSIO=P3^4;

sbitR_CLK=P3^5;

sbitS_CLK=P3^6;

voiddelay(unsignedinti);

voidHC595SendData(unsignedcharSendVal);

unsignedcharcodeLED7Code[]=

{~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,

~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};

main()

{

unsigned char HC595SendVal;

static u8 LedNumVal=0;

while(1)

{

LedNumVal++;

HC595SendVal=LED7Code[LedNumVal%16];

HC595SendData(HC595SendVal);

delay(200);

}

}

voiddelay(unsignedinti)

{

unsignedintj;

for(i;i》0;i--)

for(j=300;j》0;j--);

}

voidHC595SendData(unsignedcharSendVal)

{

unsignedchari;

for(i=0;i《8;i++)

{

if((SendVal《《i)&0x80)MOSIO=1;

elseMOSIO=0;

S_CLK=0;

NOP();

NOP();

S_CLK=1;

}

R_CLK=0;

NOP();

NOP();

R_CLK=1;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值