TM1629A资料

时间:2016-04-06 14:38:38
【文件属性】:

文件名称:TM1629A资料

文件大小:416KB

文件格式:PDF

更新时间:2016-04-06 14:38:38

资料

LED数#include #include #define ulong unsigned long #define uchar unsigned char #define _Nop() _nop_() sbit T_CLK = P1^0; sbit T_IO = P1^1; sbit T_RST = P1^2; sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; sbit DA_in_port = P0^2; sbit CLK_port = P0^1; sbit Latch_port = P0^0; uchar data time_data[8]={0x00,0x57,0x16,0x00,0x00,0x00,0x00,0x00}; uchar code shum[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71, 0x40}; uchar code shha[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar shu1,shu2,shu3,shu4,shu5,shu6,shu7,shu8; void W1302(uchar ucAddr, uchar ucDa)//写1字节 { uchar i; //写地址 T_RST=0; T_CLK=0;//增加 T_RST=1; ACC=ucAddr; for(i=8;i>0;i--) //修改了 { T_IO=ACC0; //修改了,这里不能用ACC^0,要在前面定义 T_CLK=1; T_CLK=0; ACC=ACC>>1; } //写数据 ACC=ucDa; for(i=8;i>0;i--) //修改了 { T_IO=ACC0; //修改了,这里不能用ACC^0,要在前面定义 T_CLK=1; T_CLK=0; ACC=ACC>>1; } T_CLK=1; T_RST=0; } uchar R1302(uchar ucAddr) //读1字节 { uchar i; ACC=ucAddr; T_RST=0; T_CLK=0; T_RST=1; for(i=8;i>0;i--) //修改了 { T_IO=ACC0; //修改了,这里不能用ACC^0,要在前面定义 T_CLK=1; T_CLK=0; ACC=ACC>>1; } for(i=8;i>0;i--) //修改了 { ACC=ACC>>1; ACC7=T_IO; T_CLK=1; T_CLK=0; //修改了 } T_CLK=1; T_RST=0; return(ACC); } void Set1302(uchar *pClock) { uchar i; uchar ucAddr = 0x80; W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/ for(i =7; i>0; i--) { W1302(ucAddr,*pClock); /* 秒 分 时 日 月 星期 年 */ pClock++; ucAddr +=2; } W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/ } void Get1302(uchar ucCurtime[]) { uchar i; uchar ucAddr = 0x81; for (i=0; i<7; i++) { ucCurtime[i] = R1302(ucAddr);/*格式为: 秒 分 时 日 月 星期 年 */ ucAddr += 2; } } void HC595_Data_Send() { uchar ab,i,daH,hang; for(ab=0;ab<8;ab++) { switch(ab) { case 0: daH=shum[shu1]; break; case 1: daH=shum[shu2]; break; case 2: daH=shum[shu3]; break; case 3: daH=shum[shu4]; break; case 4: daH=shum[shu5]; break; case 5: daH=shum[shu6]; break; case 6: daH=shum[shu7]; break; case 7: daH=shum[shu8]; break; } hang=shha[ab]; Latch_port = 0; /*HC595锁定输出,避免数据传输过程中,屏数据变化从而显示闪烁*/ CLK_port = 0; for(i=0;i<8;i++) { if((daH&0x80;)!=0) DA_in_port = 1; else DA_in_port = 0; CLK_port = 1; CLK_port = 0; daH <<= 1; } for(i=0;i<8;i++) { if((hang&0x80;)!=0) DA_in_port = 1; else DA_in_port = 0; CLK_port = 1; CLK_port = 0; hang <<= 1; } Latch_port = 1; /*允许HC595数据输出到Q1-Q8端口*/ Latch_port = 0; /*锁定HC595数据输出*/ } } void main() { Set1302(time_data); while(1) { Get1302(time_data); shu8=time_data[0]; shu7=time_data[0]/10; shu6=16; shu5=time_data[1]; shu4=time_data[1]/10; shu3=16; shu2=time_data[2]; shu1=time_data[2]/10; HC595_Data_Send(); } } 码管驱动


网友评论

  • 这是TM1629A的说明书,在天微网站上就可以下载。这里需要47分,太扯了!