74HC595
单片74HC595驱动程序,实现八个LED灯依次点亮。
/*
频率:100MHz
Q0~Q7并行三态输出端
OE 输出使能端,高电平时,移位寄存器清零,Q0~Q7处于高阻态。
MR 主复位,低电平时,移位寄存器清零。
Q7' 串行出端
OE接低电平,MR接高电平。
*/
#include <STC8H.H>
#include "delay.h"
unsigned char code LED[8] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
sbit HC595_SH_CP = P3^6; //移位寄存器时钟输入
sbit HC595_DS = P3^4; //串行输入端
sbit HC595_ST_CP = P3^5; //存储寄存器时钟输入
void SendByte_74HC595(unsigned char dt)
{
unsigned char i;
unsigned char temp = dt;
HC595_SH_CP = 1;
for(i=0;i<8;i++)
{
HC595_SH_CP = 0; //下降沿采样
HC595_DS = temp&0x80; //高位在前,低位在后
HC595_SH_CP = 1; //上升沿移出
temp <<= 1;
}
HC595_ST_CP = 1; //上升沿输出
}
void main(void)
{
/*准双向口*/
P3M0 = 0x00;
P3M1 = 0x8f;
while(1)
{
unsigned char i;
for(i=0;i<8;i++)
{
SendByte_74HC595(~LED[i]); //灌电流,低电平点亮。
delay_ms(250);
}
}
}