赞
踩
:八位行输入/串行并进行输出移位寄存器与锁存器3态输出高性能硅栅CMOS,74HC595芯片是在单片机系统中常用的芯片之一,他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片,使用74HC595可以节约单片机的I/O口资源,用3个I/O就可以控制4个数码管显示,以此类推使用几个74HC595就可以控制其数量乘以4的数码管,它还具有一定的驱动能力,所以说74HC595芯片的应用非常广泛
2-FMQ-1(蜂鸣器) 3-JDQ-1(继电器) 4-DSCS(时钟芯片片选) 6-LED-E(流水灯)
这四个输出引脚所对应的十六进制打开值
先使得RESET为高电平,当输入一个值时,当SHIFT CLOCK有时钟上沿(就是有个低电平到高电平的转换),还要有当LATCH所连接的LATCH CLOCK有时钟上沿且所连接的OUTPUT ENABLE为低电平才能使得输入的值和我们输出的值一样
- #include<reg52.h>
- sbit duanxuan=P2^5;//数码管驱动芯片74Hc573段选
- sbit wiexuan=P2^6;//数码管驱动芯片74Hc573位选
- sbit DATA_A_595 = P1^0; //74HC595 串行数据输入引脚
- sbit SHIFT_CLOCK_595 = P1^4; //74HC595 移位寄存器时钟信号输入引脚
- sbit LATCH_CLOCK_595 = P2^3; //74HC595 锁存器时钟信号输入引脚
- typedef signed char int8; //8位有符号字符型
- typedef signed int int16; //16位有符号整型
- typedef signed long int32; //32位有符号长整型
- typedef unsigned char uint8; //8位无符号字符型
- typedef unsigned int uint16; //16位无符号整型
- typedef unsigned long uint32; //32位无符号长整型
- void main(void)
- {
- while(1)
- {
- duanxuan=0;
- wiexuan=0;
- P0=0xc0;//数码管段码显示0
- duanxuan=1;//段选
- duanxuan=0;
-
- duanxuan=0;
- wiexuan=0;
- P0=0x01;//数码管段码显示0
- wiexuan=1;
- wiexuan=0;
- }
-
- }
- void write_byte_74hc595(uint8 dat) //给595芯片写一字节数据函数
- {
- uint8 i;
- for(i=0;i<8;i++)
- {
- DATA_A_595 =(dat<<i)&0x80; //74HC595 串行数据输入引脚
- SHIFT_CLOCK_595 = 0; //74HC595 移位寄存器时钟信号输入引脚
- SHIFT_CLOCK_595 = 1; //74HC595 移位寄存器时钟信号输入引脚
-
- }
- LATCH_CLOCK_595 = 0; //74HC595 锁存器时钟信号输入引脚
- LATCH_CLOCK_595 = 1; //74HC595 锁存器时钟信号输入引脚
- }
-
- void delay(uint16 x_ms) //延迟 x_ms*1 毫秒
- {
- uint16 i,j;
- for(i=x_ms;i>0;i--)
- for(j=114;j>0;j--);
-
- }

注释了的几行代码是跳过74HC595芯片来驱动继电器
剩余的代码是通过74HC595芯片来驱动继电器
- #include<reg52.h>
- typedef signed char int8; //8位有符号字符型
- typedef signed int int16; //16位有符号整型
- typedef signed long int32; //32位有符号长整型
- typedef unsigned char uint8; //8位无符号字符型
- typedef unsigned int uint16; //16位无符号整型
- typedef unsigned long uint32; //32位无符号长整型
- sbit jdq=P2^0;//继电器IO口
- sbit DATA_A_595 = P1^0; //74HC595 串行数据输入引脚
- sbit SHIFT_CLOCK_595 = P1^4; //74HC595 移位寄存器时钟信号输入引脚
- sbit LATCH_CLOCK_595 = P2^3; //74HC595 锁存器时钟信号输入引脚
- void delay(uint16 x_ms);
- void write_byte74hc595(uint8 dat);
- void main()
- {
- while(1)
- {
- //方法一 跳过595芯片 直接io口驱动
- // jdq=1;//继电器IO口
- // delay(1000);
- // jdq=0;
- // delay(1000);
- //方法二595芯片驱动
- write_byte74hc595(0x08);//继电器输入高电平工作 0x0B和蜂鸣器
- delay(1000);
- write_byte74hc595(0x00);//继电器输入低电平停止
- delay(1000);
- }
- }
- void write_byte74hc595(uint8 dat)
- {
- uint8 i;
- for(i=0;i<8;i++)
- {
- DATA_A_595=(dat<<8)&0x80 ;
- SHIFT_CLOCK_595 =0;
- SHIFT_CLOCK_595 =1;
- }
- LATCH_CLOCK_595 =0;
- LATCH_CLOCK_595 =1;
- }
- void delay(uint16 x_ms) //延迟 x_ms*1 毫秒
- {
- uint16 i,j;
- for(i=x_ms;i>0;i--)
- for(j=114;j>0;j--);
-
-
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。