TM1629A驱动程序

网上看了很多1629驱动程序,很乱,下载了几个整合了一下,下面的程序还没有烧录到开发板里面测试,程序已经做好了,但是这个方案老板不做了,所以只能在这里放着了,留着以后用吧

void TM1629A_Write( unsigned char wr_data)
{
unsigned char i;
for(i=0;i<8;i++)
{
TM1629_CLK_LOW();
if(wr_data&0x01)
TM1629_DIO_HIGH();//需要传送的数据的低位为“1”,则把“DIO”清零
else
TM1629_DIO_LOW();//需要传送的数据的低位为“0”,则把“DIO”置高
TM1629_CLK_HIGH();
wr_data>>=1;
}
}

void Clear_TM1629B(void)
{
unsigned char i;
TM1629_STB_LOW();
TM1629A_Write(0xc0); // 11000000 设置显示地址从0开始
for(i=0;i<16;i++)
TM1629A_Write(0x00); // 所有显示为灭
TM1629_STB_HIGH();
}

void Write_COM(unsigned char cmd) //发送命令字
{
TM1629A_Write(cmd);
}


void init_TM1629B(void)
{
TM1629_CLK_HIGH(); // 上拉TM1629B通信时钟引脚
TM1629_STB_HIGH(); // 上拉TM1629B通信片选引脚
TM1629_DIO_HIGH(); // 上拉TM1629B通信数据引脚
Clear_TM1629B();
}

void convert2(void)
{
unsigned char i,j,s,tmp,count,index;
uint8_t ucLowercase;
unsigned char ucIndex;

count = 0x01;
s=0x01;
for(i=0;i<16;i++)
{
if((LED[i]>='a')&&(LED[i]<='z')||((LED[i]>='A')&&(LED[i]<='Z')))
{
ucLowercase = CapitalToLowercase(LED[i]);
if(NO == IsLowercase(ucLowercase))
{
return;
}

ucIndex = ucLowercase-'a';
tmp = CODE_char[ucIndex ]; //1-16个seg需要显示的数字
}
else
{
tmp = CODE_num[ LED[i] ]; //1-16个seg需要显示的数字
}
for(j = 0;j<8;j++)
{
if(i<8)
{
index = 2*j; //偶地址
}
else
{
index=2*j+1; //奇地址
}
if((tmp&count)==count)
{
DspBuf[index] = DspBuf[index] | (s);
}
else
{
DspBuf[index] = DspBuf[index] & (~s);
}
if(count==0x80)
{
count=0x01;
}
else
{
count <<= 1;
}
}
if(s==0x80) s=0x01;
else s <<= 1;
}
}

/*将所要传输的数据显示在led上*/
void Display(void) {
unsigned char i;

convert2();
TM1629_STB_HIGH(); //通讯开始前通讯端口全部初始化为“1”
TM1629_DIO_HIGH(); //打开数据线 //释放DIO为输入
TM1629_CLK_HIGH();//拉低时钟

TM1629_STB_LOW();//保证“STB”为低电平,程序不依赖于之前端口的状态
Write_COM(0x40); // 01000000准备写数据到显示寄存器,普通模式,自动地址增加
TM1629_STB_HIGH();

delay_ms(10);
TM1629_STB_LOW();
TM1629A_Write(0XC0); // 传输起始地址

for(i = 0; i < 16; i++) /* 传输数据*/
{
TM1629A_Write(DspBuf[i]);
}
TM1629_STB_HIGH();

delay_ms(10);
TM1629_STB_LOW();
Write_COM(0x85); // 最亮 10001111 设置消光脉冲12/16 显示开
// delay_ms(20);
TM1629_STB_HIGH();

}

猜你喜欢

转载自www.cnblogs.com/Tearsly/p/10789787.html