TM1637驱动数码管Word格式文档下载.docx

上传人:b****5 文档编号:20390809 上传时间:2023-01-22 格式:DOCX 页数:13 大小:407.43KB
下载 相关 举报
TM1637驱动数码管Word格式文档下载.docx_第1页
第1页 / 共13页
TM1637驱动数码管Word格式文档下载.docx_第2页
第2页 / 共13页
TM1637驱动数码管Word格式文档下载.docx_第3页
第3页 / 共13页
TM1637驱动数码管Word格式文档下载.docx_第4页
第4页 / 共13页
TM1637驱动数码管Word格式文档下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

TM1637驱动数码管Word格式文档下载.docx

《TM1637驱动数码管Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《TM1637驱动数码管Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。

TM1637驱动数码管Word格式文档下载.docx

#include<

intrins.h>

sbitCLK=P0^0;

//时钟信号

sbitDIO=P0^1;

//数据/地址数据

//共阴极数码管

unsignedcharcodeSEGData[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//1-9

unsignedcharcodeSEGDataDp[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};

//有小数点只用于地址0xc1

unsignedchardpFlag=0;

//控制第二个数码管的dp的显示

voidTM1637_start(void);

voidTM1637_stop(void);

voidTM1637_write1Bit(unsignedcharmBit);

voidTM1637_write1Byte(unsignedcharmByte);

voidTM1637_writeCammand(unsignedcharmData);

voidTM1637_writeData(unsignedcharaddr,unsignedcharmData);

voidtime_set(charhour,charmin);

voidtime_judge(void);

voidtime_display(void);

voidtimer0_init(void);

voiddelay_140us(void);

voiddelay_1ms(unsignedinti);

unsignedintcountTime=0;

unsignedchartime,sec;

struct{

charshi;

charge;

}Hour;

}Min;

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

*****

*****主函数

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

voidmain(void)

{

timer0_init();

time_set(5,0);

//设置5小时倒计时

while

(1)

{

time_display();

//显示时间

if(countTime<

=10)

{

dpFlag=0;

}

else

=20)

dpFlag=1;

countTime=0;

time_judge();

}

}

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

*名称:

voidtime_set(charhour,charmin)

*功能:

设置时间

*输入:

charhour,charmin

*输出:

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

voidtime_set(charhour,charmin)

if((hour<

0)||(min<

0))

hour=0;

min=0;

Hour.shi=hour/10;

Hour.ge=hour%10;

Min.shi=min/10;

Min.ge=min%10;

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

time_judge(void)

判断时间变化

void

voidtime_judge(void)

if(++sec==60)//60秒

{

sec=0;

if((Hour.shi||Hour.ge||Min.shi||Min.ge)&

&

(--Min.ge<

=-1))

Min.ge=9;

if((Hour.shi)||(Hour.ge)&

(--Min.shi<

{

Min.shi=5;

if(Hour.shi&

(--Hour.ge<

{

Hour.ge=9;

if(--Hour.shi<

=-1)

{

Hour.shi=0;

}

}

else

if((!

Hour.shi)&

Hour.ge=0;

}

else

if((!

(!

Hour.ge)&

Min.shi=0;

if(((!

Min.shi))&

(Min.ge<

Min.ge=0;

}

voidtime_display(void)

显示时间

voidtime_display(void)

TM1637_writeCammand(0x44);

TM1637_writeData(0xc0,SEGData[Hour.shi]);

if(dpFlag)

TM1637_writeData(0xc1,SEGDataDp[Hour.ge]);

//小数点标志为1则用小数点那个数组

else

TM1637_writeData(0xc1,SEGData[Hour.ge]);

TM1637_writeData(0xc2,SEGData[Min.shi]);

TM1637_writeData(0xc3,SEGData[Min.ge]);

TM1637_writeCammand(0x8a);

voidTM1637_start(void)

start信号

voidTM1637_start(void)

CLK=1;

DIO=1;

delay_140us();

DIO=0;

CLK=0;

voidTM1637_stop(void)

stop信号

voidTM1637_stop(void)

voidTM1637_write1Bit(unsignedcharmBit)

写1bit

unsignedcharmBit

voidTM1637_write1Bit(unsignedcharmBit)

if(mBit)

DIO=1;

DIO=0;

voidTM1637_write1Byte(unsignedcharmByte)

写1byte

unsignedcharmByte

voidTM1637_write1Byte(unsignedcharmByte)

charloop=0;

for(loop=0;

loop<

8;

loop++)

TM1637_write1Bit((mByte>

>

loop)&

0x01);

//取得最低位

while(DIO==1);

//获得应答位

voidTM1637_writeCammand(unsignedcharmData)

写指令1byte

unsignedcharmData

voidTM1637_writeCammand(unsignedcharmData)

TM1637_start();

TM1637_write1Byte(mData);

//数据

TM1637_stop();

voidTM1637_writeData(unsignedcharaddr,unsignedcharmData)

固定地址写数据1byte

unsignedcharaddr,unsignedcharmData

voidTM1637_writeData(unsignedcharaddr,unsignedcharmData)

TM1637_write1Byte(addr);

//地址

voidtimer0_init()

定时50ms,实际运行中由于指令运行造成的延时,实际时间肯定大于50ms

voidtimer0_init(void)

TMOD=0X01;

TH0=(65535-50000)/256;

TL0=(65535-50000)%256;

ET0=1;

EA=1;

TR0=1;

}

 

voidtimer0_isr()interrupt1

//50ms

//

countTime++;

Delay_1ms(unsignedinti)

延时子程序,延时时间为140us

voiddelay_140us(void)

inti;

for(i=0;

i<

20;

i++)

_nop_();

延时子程序,延时时间为1ms*x

x(延时一毫秒的个数)

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

/*

voidDelay_1ms(unsignedinti)//1ms延时

unsignedcharx,j;

for(j=0;

j<

i;

j++)

for(x=0;

x<

=148;

x++);

*/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1