74HC595串转并模块使用代码例子 (并口接交通灯)

#include "reg51.h"
#include "intrins.h"

// QA1~8接交通灯

sbit SER = P3^4;  // 74HC595串行数据
sbit RCK = P3^5;  // 74HC595存储寄存器时钟
sbit SCK = P3^6;  // 74HC595移位寄存器时钟

typedef unsigned char u8;


void HC595(u8 serialData)
{
	int i;
	u8 tempData;

	RCK = 0;
	SCK = 0;

	for (i = 0; i < 8; ++i)
	{
		tempData = serialData >> i;
		SER = tempData & 0x01;
		_nop_();
		SCK = 1;  // 上升沿移位
		_nop_();
		SCK = 0;
	}	
	_nop_();
	RCK = 1;   // 上升沿并口发出8位数据
	_nop_();
}

void Delay(int i)
{
	while (i--);
}


void main()
{
	u8 array[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
	while (1)
	{
		int i;
		for (i = 0; i < 8; ++i)
		{
			HC595(~array[i]); // led是低电平点亮,所以取反
			Delay(1000 * 500);
		}
	}		
}

 

你可能感兴趣的:(单片机)