文档库 最新最全的文档下载
当前位置:文档库 › TM1640程序

TM1640程序

001
有人玩过TM1640吗,来看看程序有错吗。
------
玩过TM1650,TM1640官网上有例程应该。。


#include
#include


#define uint unsigned int
#define uchar unsigned char

sbit sda=P1^0; //TM1640时钟线
sbit scl=P1^1; //TM1640数据线
uchar date[16] = {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};

//*************************************************************
//*********START***********************************************
void start() //1640开始
{
//scl=0;
sda=1;
_nop_();
_nop_();
scl=1;
_nop_();
_nop_();
sda=0;
_nop_();
_nop_();
scl=0;
_nop_();
_nop_();
}



//**************************************************************
void stop() //1640结束
{
scl=0;
_nop_();
_nop_();
sda=0;
scl=1;
_nop_();
_nop_();
sda=1;
_nop_();
_nop_();
scl=1;
_nop_();
_nop_();
}




//***********************************************************
void write(uchar date) //1640写字节
{
uchar i,aa;
aa=date;
//sda=0;
//scl=0;
for(i=0;i<8;i++)
{
scl=0;
if(aa&0x01)
{
sda=1;
_nop_();
_nop_();
}
else
{
sda=0;
_nop_();
_nop_();
}
scl=1;
_nop_();
aa=aa>>1;
}
//scl=0;
//sda=0;
}




//**************向TM1640发送显示数据***************************
/*void send(uchar date1)
//void send()
{
uchar ii;
start();
write(0x40); //设置数据,地址加1模式
stop();

start();
write(0xC0);
for(ii=0;ii<16;ii++)
{
write(date1);
}
stop();

start();
write(0x8f); //控制显示,开显示,脉冲宽度为14/16
stop();

}
*/

void send()
{
uchar i;
start();
//write(0x40); //设置数据,地址加1模式
write(0x44); //固定地址模式
stop();

start();
write(0x00);
write(0xff);
stop();

start();
write(0x01);
write(0x01);
stop();

start();
write(0x02);
write(0x01);
stop();

start();
write(0x03);
write(0x01);
stop();


start();
write(0x04);
write(0x01);
stop();

start();
write(0x05);
write(0x01);
stop();

start();
write(0x06);
write(0x01);
stop();




start();
write(0x8f); //控制显示,开显示,脉冲宽度为14/16
stop();

}


//**********************************************************

**
void delay(uint z) //延时子程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=487;y>0;y--);
}





void main()
{
while(1)
{
send();
}
}
======

相关文档