📄 digitled_cc_74ls164.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 + -