网站大量收购闲置独家精品文档,联系QQ:2885784924

TM1637驱动数码管.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TM1637驱动数码管

TM1637是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU数字接口,数据锁存器,LED高压驱动,键盘扫描等电路。 采用功率CMOS工艺,显示模式(8段×6位),支持共阳数码管输出,键扫描(8×2bit),增强型抗干扰按键识别电路,辉度调节电路(占空比8级可调),两线串行接口(CLK,DIO),振荡方式:内置RC振荡(450Khz+-5%),内置上电复位电路,内置自动消隐电路。 引脚功能: 当传输数据时,当SCL高电平时,DIO由高变低则代表开始信号,当SCL高电平时,DIO由低变高则代表停止信号,只有当SCL低电平时DIO上的数据才可以发生改变,在SCL高电平时DIO上的数据要保持不变,此时数据发送出去,当正确传输8位数据后TM1637会第九个时钟在DIO管脚上给出一个ACK信号,把DIO拉低。传输时序类似于I2C通信。传输数据是低位在前高位在后。 传输过程: 下面仅是数码管驱动程序:(注有待改进) 驱动的下面这种数码管,普通也行,只是看不到1s的闪烁效果。 /******************************* **** Describe: TM1673控制芯片,可以设置时间的倒计时(定时不准,可以自己校准),四个数码管0xc0,0xc1,0xc2,0xc3 **** Time: 2015.05.14 **** Author: zys ********************************/ #include reg52.h #includeintrins.h sbit CLK = P0^0; //时钟信号 sbit DIO = P0^1; //数据/地址数据 //共阴极数码管 unsigned char code SEGData[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//1-9 unsigned char code SEGDataDp[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //有小数点只用于地址0xc1 unsigned char dpFlag = 0; //控制第二个数码管的dp的显示 void TM1637_start( void ); void TM1637_stop( void ); void TM1637_write1Bit(unsigned char mBit); void TM1637_write1Byte(unsigned char mByte); void TM1637_writeCammand(unsigned char mData); void TM1637_writeData(unsigned char addr, unsigned char mData); void time_set(char hour, char min); void time_judge( void ); void time_display( void ); void timer0_init( void ); void delay_140us( void ); void delay_1ms(unsigned int i); unsigned int countTime = 0; unsigned char time, sec; struct { char shi; char ge; }Hour; struct { char shi; char ge; }Min; /*********************************************************** ***** ***** 主函数 ***** ***********************************************************/ void main( void ) { timer0_init(); time_set(5, 0); //设置5小时倒计时 while(1) { time_display(); //显示时间 if(countTime = 10) { dpFlag = 0; } else if(countTime = 20) { dpFlag = 1; } else { countTime = 0; time_judge(); } } } /*****************************************************

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档