⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 595.c

📁 AVR 门锁的程序 包含与模块通讯 密码按键
💻 C
字号:
#include "Include.h"

//硬件连接
//595 RCK PA5
//595 CLK PA6
//595 DATA PA7

//Power PC0

#define SetCLK();	{PORTA|=0x40;}
#define ClrCLK();	{PORTA&=0xBF;}
#define SetRCK();	{PORTA|=0x20;}
#define ClrRCK();	{PORTA&=0xDF;}
#define SetData();	{PORTA|=0x80;}
#define ClrData();	{PORTA&=0x7F;}


unsigned char DisPlayWord[3]={0xFF,0xFF,0xFF};//595显示数组


void HC595On(void)
{
        PORTC|=1<<PC0;
}

void HC595Off(void)
{
        DisPlayWord[0]=0xFF;
        DisPlayWord[1]=0xFF;
        DisPlayWord[2]=0xFF;
        Refresh595();
        PORTC&=0xFE;
}

//595初始化
void HC595Init(void)
{
        //设置PC0为输出
        DDRC|=1<<PC0;

        HC595On();//打开595

	//设置PA5 PA6 PA7为输出
	DDRA|=0xE0;

	//设置PC0为输出
	DDRC|=0x01;

        Refresh595();//更新595
}

void CLKPulse(void)
{
	ClrCLK();
	SetCLK();
	ClrCLK();
}

void RCKPulse(void)
{
	ClrRCK();
	SetRCK();
	ClrRCK();
}

void SendCharTo595(unsigned char sdata)
{
	unsigned char i;
	unsigned char volatile t;
	for(i=0;i<8;i++)
	{
		t=sdata<<i;
		t=t>>7;
		if(1==t)
		{
			SetData();
		}
		else
		{
			ClrData();
		}
		CLKPulse();
	}
}

//更新595
void Refresh595(void)
{
        SendCharTo595(DisPlayWord[0]);
        SendCharTo595(DisPlayWord[1]);
        SendCharTo595(DisPlayWord[2]);
        RCKPulse();
}

void Test595(void)
{
        HC595Init();
        while(1) {;}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -