#include "TM1628.h"
#define DIO_H HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15, GPIO_PIN_SET)
#define DIO_L HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15, GPIO_PIN_RESET)
#define CLK_H HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14, GPIO_PIN_SET)
#define CLK_L HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14, GPIO_PIN_RESET)
#define STB_H HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13, GPIO_PIN_SET)
#define STB_L HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13, GPIO_PIN_RESET)
uint8_t const ucTabBrightness[]={
0x80,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f
};//显示亮度表
uint8_t const ucTabCode[]=
{
0x3F, // 0
0x06, // 1
0x5B, // 2
0x4F, // 3
0x66, // 4
0x6D, // 5
0x7D, // 6
0x07, // 7
0x7F, // 8
0x6F, // 9
0xFF,//全亮
0x00,//全灭
};
void WriteByte(uint8_t w_data) //写一字节数据
{
uint8_t i;
for(i=0;i<8;i++)
{
if(w_data&0x01)
DIO_H;
else
DIO_L;
CLK_L;
__nop();
__nop();
__nop();
__nop();
__nop();
__nop();
CLK_H;
__nop();
__nop();
w_data=w_data >> 1;
}
}
//发送控制命令
void send_command(uint8_t com)
{
STB_H;
__nop();
__nop();
__nop();
__nop();
__nop();
STB_L;
WriteByte(com);
}
//== 数码管显示 flag :1->TM1628芯片1显示 2->TM1628芯片2显示
//== Brighttness :亮度调节 级别 0-8
void TM1628_Display() //写多字节数据
{
uint8_t i,data;
send_command(0x03);//设置显示模式,7位10段模式
send_command(0x40);//设置数据命令,采用地址自动加1模式
// send_command(0x44);
send_command(0xc8);//设置显示地址,从00H开始
// send_command(0xc0|(data));
// WriteByte(Svalue);
// send_command(0xc0|(data+1));
// WriteByte(0);
for(i=0;i<7;i++) //7个地址
{
WriteByte(ucTabCode[i]);
WriteByte(0);
}
WriteByte(0x8f); //开显示,亮度为10/16
STB_H;
}
void DisplayTest(void)
{
TM1628_Display();
} |