📄 1638.h
字号:
#define uchar unsigned char
#define uint unsigned int
#define DIO_1 GPIO_WriteHigh(GPIOB, GPIO_PIN_2) //PB2
#define DIO_0 GPIO_WriteLow(GPIOB, GPIO_PIN_2)
#define CLK_1 GPIO_WriteHigh(GPIOB, GPIO_PIN_1) //PB1
#define CLK_0 GPIO_WriteLow(GPIOB, GPIO_PIN_1)
#define STB_1 GPIO_WriteHigh(GPIOB, GPIO_PIN_0) //PB0
#define STB_0 GPIO_WriteLow(GPIOB, GPIO_PIN_0)
#define DIO_IN GPIO_Init(GPIOB, GPIO_PIN_2, GPIO_MODE_IN_FL_IT)
#define DIO_OUT GPIO_Init(GPIOB, GPIO_PIN_2, GPIO_MODE_OUT_PP_HIGH_FAST)
#define DIO_STATE GPIO_ReadInputData(GPIOB)&0x04
void Delay(u16 nCount)
{
/* Decrement nCount value */
while (nCount != 0)
{
nCount--;
}
}
void TM1638_Write(uchar dat)//发送一个字节。先发送低位
{
uchar i;
DIO_OUT; //DIO 设为输出口
for(i=0;i<8;i++)//拉低,给数据,拉高,再拉低,给数据,拉高
{
CLK_0;
if(dat&0x01)//取低位
DIO_1;
else DIO_0;
Delay((u16)10);
dat>>=1;
Delay((u16)10);
CLK_1;
}
}
void Write_COM(unsigned char cmd) //发送命令字
{
STB_0;
TM1638_Write(cmd);
STB_1;
}
void Write_DATA(uchar add,uchar DATA) //指定地址写入数据
{
Write_COM(0x44);//设置为写数据,普通模式
STB_0;
TM1638_Write(0xc0|add);
TM1638_Write(DATA);
STB_1;
}
uchar TM1638_Read(void) //读寄存器、、、、、、、、、、、
{
uchar i,temp=0;
DIO_IN;
for(i=0;i<8;i++)
{
temp>>=1;
CLK_0;
if(DIO_STATE)
temp|=0x80;
CLK_1;
}
DIO_OUT;
return temp;
}
void init_TM1638(void)//初始化1638
{
unsigned char i;
Write_COM(0x8A);//亮度,开显示
Write_COM(0x40); //写 数据命令 01000000,,写数据到缓存,地址自动增加,普通模式
STB_0;
TM1638_Write(0xc0);//写地址命令 11000000 起始地址
for(i=0;i<16;i++)
TM1638_Write(0x00);//清空显存
STB_1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -