?? 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 + -