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

📄 bc7281.c

📁 智能水表程序 来着互联网
💻 C
字号:
//-----------------------------------------------------------------------------
// bc7281.c
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include <reg52.h>
#include <intrins.h>
#include "main/main.h"
#include "cpu/cpu.h"
#include "ext/bc7281.h"
#include "misc/general.h"
#include "config/config.h"
//-----------------------------------------------------------------------------
// Function Prototype
//-----------------------------------------------------------------------------
void bc7281_Write_Byte ( char c );
void bc7281_Set (void);
void bc7281_Flash_Digital ( char dign );
void bc7281_Column1_OnOff ( bit f );
void bc7281_Dig5DP_OnOff  ( bit f );
void bc7281_Display_Dig ( long dig, long t );
//-----------------------------------------------------------------------------
// bc7281 Write Byte Routines
//-----------------------------------------------------------------------------
void bc7281_Write_Byte ( char c )
{
	char i, j;	bit pick;

	bc7281_CLK = LOW;
	bc7281_CLK = HIGH;	
	i = 0x0A;	j = 0xFF;	pick = 1;
	do {
		Clear_Dog;	
		do {
			if ( bc7281_DATA == LOW ) pick = 0;
		} while ( --j && pick );
	} while ( --i && pick );
	if ( pick )
	{	
			#if DISP_WARN
		Speaker_Beep ();
			#endif
		return; 
	}

	bc7281_CLK = LOW;
	bc7281_CLK = HIGH;	
	Clear_Dog;
	j = 0xFF;	pick = 1;
	do {
		if ( bc7281_DATA == HIGH ) pick = 0;
	} while ( --j && pick );
	if ( pick )
	{	
			#if DISP_WARN
		Speaker_Beep ();
			#endif
		return; 
	}

	for ( i = 8; i > 0; i-- )
	{	
		if ( c & MSB )
			bc7281_DATA = HIGH;
		else
			bc7281_DATA = LOW;
		bc7281_CLK = LOW;
		bc7281_CLK = HIGH;	
		c <<= 1;
		for ( j = 13; j > 0; j-- ) _nop_ ();
	}
	bc7281_DATA = HIGH;
	for ( j = 4; j > 0; j-- ) _nop_ ();
	return;
}
//-----------------------------------------------------------------------------
// bc7281 Set All DP Off Routines
//-----------------------------------------------------------------------------
void bc7281_Set (void)
{
    char i;
    char buf[] = DP0_7;

	bc7281_Write_Byte ( WorkMode_Reg );
	bc7281_Write_Byte ( SCN | INV ); 
	bc7281_Write_Byte ( FlashRate_Reg );
	bc7281_Write_Byte ( FLASH_RATE );
    for ( i = 0; i < DIG_N; i++ )
	{
		bc7281_Write_Byte ( SegmAddr_Reg );
		bc7281_Write_Byte ( SD | buf[i] );
	}
}
//-----------------------------------------------------------------------------
// bc7281 Flash Digital On/Off Routines
//-----------------------------------------------------------------------------
void bc7281_Flash_Digital ( char dign )
{
	bc7281_Write_Byte ( FlashSwitch_Reg );
	bc7281_Write_Byte ( dign );
}
//-----------------------------------------------------------------------------
// bc7281 Column1 On/Off Routines
//-----------------------------------------------------------------------------
void bc7281_Column1_OnOff ( bit f )
{
	bc7281_Write_Byte ( DecodeCol1_Reg );
	if ( f == ON )
		bc7281_Write_Byte ( COL1_ON );
	else 
		bc7281_Write_Byte ( COL1_OFF );   
}
//-----------------------------------------------------------------------------
// bc7281 DP On Routines
//-----------------------------------------------------------------------------
void bc7281_Dig5DP_OnOff ( bit f )
{
	bc7281_Write_Byte ( SegmAddr_Reg );
	if ( f == ON )
		bc7281_Write_Byte ( DIG5DP_ON );
	else 
		bc7281_Write_Byte ( DIG5DP_OFF );
}
//-----------------------------------------------------------------------------
// bc7281 Dislay Digtial Routines
//-----------------------------------------------------------------------------
void bc7281_Display_Dig ( long dig, long t )
{
	char i, buf;

	for ( i = 0; i < DIG_N; i++ )
	{
		buf = ( dig >> (( DIG_N - 1 - i ) * 4 )) & 0x0F;
		bc7281_Write_Byte ( DecodeBCD_Reg );
		bc7281_Write_Byte ((( i << 4 ) & 0xF0 ) | buf );
	}
	if ( t ) Delay ( t );
}

⌨️ 快捷键说明

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