概述
TM1640 是一種LED(發光二極管顯示器)驅動控制專用電路,內部集成有MCU 數字接口、數據鎖存器、LED 驅動等電路。本產品性能優良,質量可靠。主要應用於電子產品LED顯示屏驅動。採用SOP28的封裝形式。
特性說明
- 採用CMOS工藝
- 顯示模式(8 段×16 位)
- 輝度調節電路(佔空比 8 級可調)
- 兩線串行接口(SCLK,DIN)
- 振盪方式:內置RC 振盪
- 內置上電覆位電路
- 封裝形式:SOP28
管腳定義:
注意,官方文檔顯示可以使用 共陰和共陰接線方式,實際使用當中請務必使用共陰極數碼管,不然程序很難控制.
官方文檔下載
驅動部分程序
#define WRITE_DATA_MODE_Z 0x40 // 地址自動加
#define WRITE_DATA_MODE_G 0x44 // 固定地址
#define START_DATA 0xC0 //
#define DISPLAY_EN 0x8A // 開顯示
#define DISPLAY_DIS 0x80 // 關顯示
// 端口定義
sbit SCLK = P2^7;
sbit DIO = P2^6;
unsigned char DisBuf[16]; // 顯示緩存
unsigned char code ch_table[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
0x77, //"A"
0x7C, //"B"
0x39, //"C"
0x5E, //"D"
0x79, //"E"
0x71, //"F"
0x76, //"H"
0x38, //"L"
0x37, //"n"
0x3E, //"u"
0x73, //"P"
0x5C, //"o"
0x40, //"-"
0x00, //熄滅
};
// 開始
void start()
{
SCLK=1;
_nop_();
_nop_();
DIO=1;
_nop_();
_nop_();
DIO=0;
_nop_();
_nop_();
SCLK=0;
}
void send_data(unsigned char x) //送數據 低位先傳
{
unsigned char i;
for(i=0;i<8;i++)
{
SCLK=0;
_nop_();
_nop_();
DIO=(bit)(x&0x01);
_nop_();
_nop_();
SCLK=1;
x>>=1;
}
SCLK=0;
}
// 結束
void stop()
{
SCLK=0;
DIO=0;
SCLK=1;
DIO=1;
}
void Init_Display()
{
start();
send_data(DISPLAY_DIS); // 關顯示
stop();
start();
send_data(WRITE_DATA_MODE_Z); // 自動地址
stop();
start();
send_data(0x8F); // 開顯示
stop();
}
void Update_Display(void)
{
unsigned char i;
if(Sys_Flag_B.Updata_Display_Flag)
{
Sys_Flag_B.Updata_Display_Flag = false;
start();
send_data(START_DATA); //起始地址
for(i=0;i<16;i++) //送16位數
{
send_data(DisBuf[i]);
}
stop();
}
}
發送前需要轉碼,將 10進制 轉數碼管段碼
for(i=0; i<16; i++)
DisBuf[i] = ch_table[n];
有問題,請留言…
end!