2。5元某寶上淘的模組
只有五個介面
尺寸夠大
TM1628是封裝起來的
驅動點亮的效果,很漂亮,不錯DIY模組
驅動定義
#include
sbit DIO=P2^5; //資料輸入/輸出
sbit CLK=P2^6; //時鐘輸入
sbit STB=P2^7; //片選
unsigned char code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; //共陰 寫1點亮段
void TM1638_Write(unsigned char DATA)//寫資料函式
{
unsigned char i;
for(i=0;i<8;i++)
{
CLK=0;
if(DATA&0X01)
DIO=1;
else
DIO=0;
DATA>>=1;
CLK=1;
}
}
unsigned char TM1638_Read(void) //讀資料函式
{
unsigned char i;
unsigned char temp=0;
DIO=1; //設定為輸入
for(i=0;i<8;i++)
{
temp>>=1;
CLK=0;
if(DIO)
temp|=0x80;
CLK=1;
}
return temp;
}
void TM1638_Write_COM(unsigned char cmd)//傳送命令字
{
STB=0;
TM1638_Write(cmd);
STB=1;
}
void TM1638_Write_DATA(unsigned char add,unsigned char DATA)//指定地址寫入資料
{
TM1638_Write_COM(0x44);
STB=0;
TM1638_Write(0xc0|add);
TM1638_Write(DATA);
STB=1;
}
//TM1638初始化函式
void TM1638_init(void)
{
unsigned char i;
TM1638_Write_COM(0x8b); //亮度 (0x88-0x8f)8級亮度可調
TM1638_Write_COM(0x40); //採用地址自動加1
STB=0;
TM1638_Write(0xc0); //設定起始地址
for(i=0;i<16;i++) //傳送16個位元組的資料
TM1638_Write(0x00);
STB=1;
}
void main(void)
{
unsigned char i;
TM1638_init(); //初始化TM1638
for(i=0;i<8;i++)
TM1638_Write_DATA(i<<1,0x00); //初始化暫存器
while(1)
{
TM1638_Write_DATA(0,table[1]); //左第一位數字
TM1638_Write_DATA(2,table[2]); //第二位數字
TM1638_Write_DATA(4,table[3]); //第三位數字
TM1638_Write_DATA(6,table[4]); //第四位數字
TM1638_Write_DATA(8,0xff); //符號
TM1638_Write_DATA(10,0xff); //符號
TM1638_Write_DATA(12,0xff); //符號
TM1638_Write_DATA(14,0xff); //符號
}
}