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

📄 digitled_cc_74ls164.c

📁 用KEIL开发的出租车计费系统
💻 C
字号:
/**************************************************************************
  
					74LS164 Digit LED Display Driver
  
	File Name:		DigitLED_CC_74LS164.c
	Author:			Lin Qian
	Created:		2008/05/08
	Modified:		NO
	Revision:		1.0
	Description:	74LS164驱动共阴极数码管.

***************************************************************************/

#define __DigitLED_CC_74LS164
#include "INC\\main.h"
#undef __DigitLED_CC_74LS164


// 向74LS164写入单字节 ******************************
#if x74LS164_SendOneByte_en

// 数码管解码表
uchar code DIS_TAB[]=
	{//	 0		 1		 2		 3		 4
		0xfc,	0x60,	0xda,	0xf2,	0x66,
	//	 5		 6		 7		 8		 9
		0xb6,	0xbe,	0xe0,	0xfe,	0xf6,
	//	 A		 b		 C		 d		 E		 F		 
		0xee,	0x3e,	0x9c,	0x7a,	0x9e,	0x8e,
	//	 -		 .		(空)
		0x02,	0x01,	0x00,
	};

void x74LS164_SendOneByte (uchar info, bit point)
// info: 需要写入的字符.
// point: 是否显示小数点.
{
	uchar tmp, i; 
	
	tmp = DIS_TAB[info];	// 取字符解码
	
	if( point )		// 小数点处理
		tmp |= 	DIS_TAB[17];

	for( i=0; i<8; i++ )	// 向74LS164串行写入显示数据.
    {
		tmp >>= 1;
		CLK = 0;
		DAT = CY;
		CLK=1;
	}
}
#endif

// 将显示缓冲区数据发往数码管显示 ******************************
#if x74LS164_SendDigitLED_en
void x74LS164_SendDigitLED (void)
// 注:	(1) 数码管位从左往右编号:0, 1, 2, 3, ...
//		(2) 单片机采用P2.0~P2.3进行位选.
{
	static digit = 0;
	
	//--- 段选 ---
	if( digit == 2 )
		x74LS164_SendOneByte(DispBuf[digit], POINT);	// 发送数码管显示, 并显示小数点
	else
		x74LS164_SendOneByte(DispBuf[digit], NO_POINT);	// 发送数码管显示, 不显示小数点
	
	//--- 位选 ---
	P2 &= 0xf0;		// P2.0~P2.3清零
	P2 |= ~(1 << digit) & 0x0f;		// 置位选

	if( ++digit >= LED_DIGIT_LENGTH )
		digit = 0;
}
#endif
//************************************************************

⌨️ 快捷键说明

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