資源簡介
TM1637數碼管arduino庫文件解決了四位數碼管接線多,程序長的問題,對于開發者是一個很好的入門程序,程序能做很多方面的進化,時鐘、計數器、溫度顯示器等等?。。?img width=510 src=http://www.sh-liguang.com/pic/62536.jpg />
代碼片段和文件信息
//??Author:?avishorp@gmail.com
//
//??This?library?is?free?software;?you?can?redistribute?it?and/or
//??modify?it?under?the?terms?of?the?GNU?Lesser?General?Public
//??License?as?published?by?the?Free?Software?Foundation;?either
//??version?2.1?of?the?License?or?(at?your?option)?any?later?version.
//
//??This?library?is?distributed?in?the?hope?that?it?will?be?useful
//??but?WITHOUT?ANY?WARRANTY;?without?even?the?implied?warranty?of
//??MERCHANTABILITY?or?FITNESS?FOR?A?PARTICULAR?PURPOSE.??See?the?GNU
//??Lesser?General?Public?License?for?more?details.
//
//??You?should?have?received?a?copy?of?the?GNU?Lesser?General?Public
//??License?along?with?this?library;?if?not?write?to?the?Free?Software
//??Foundation?Inc.?51?Franklin?St?Fifth?Floor?Boston?MA??02110-1301??USA
extern?“C“?{
??#include?
??#include?
??#include?
}
#include?
#include?
#define?TM1637_I2C_COMM1????0x40
#define?TM1637_I2C_COMM2????0xC0
#define?TM1637_I2C_COMM3????0x80
//
//??????A
//?????---
//??F?|???|?B
//?????-G-
//??E?|???|?C
//?????---
//??????D
const?uint8_t?digitToSegment[]?=?{
?//?XGFEDCBA
??0b00111111????//?0
??0b00000110????//?1
??0b01011011????//?2
??0b01001111????//?3
??0b01100110????//?4
??0b01101101????//?5
??0b01111101????//?6
??0b00000111????//?7
??0b01111111????//?8
??0b01101111????//?9
??0b01110111????//?A
??0b01111100????//?b
??0b00111001????//?C
??0b01011110????//?d
??0b01111001????//?E
??0b01110001?????//?F
??};
TM1637::TM1637(uint8_t?pinClk?uint8_t?pinDIO)
{
//?Copy?the?pin?numbers
m_pinClk?=?pinClk;
m_pinDIO?=?pinDIO;
//?Set?the?pin?direction?and?default?value.
//?Both?pins?are?set?as?inputs?allowing?the?pull-up?resistors?to?pull?them?up
????pinMode(m_pinClk?INPUT);
????pinMode(m_pinDIOINPUT);
digitalWrite(m_pinClk?LOW);
digitalWrite(m_pinDIO?LOW);
BL(3);//如果不設置默認中間亮度,解決不先設置亮度無法顯示
}
void?TM1637::BL(uint8_t?brightness)//0-7級亮度
{
m_brightness?=?brightness+8;
start();
writeByte(TM1637_I2C_COMM3?+?(m_brightness?&?0x0f));
stop();
}
void?TM1637::setSegments(const?uint8_t?segments[]?uint8_t?length?uint8_t?pos)
{
????//?Write?COMM1
start();
writeByte(TM1637_I2C_COMM1);
stop();
//?Write?COMM2?+?first?digit?address
start();
writeByte(TM1637_I2C_COMM2?+?(pos?&?0x03));
//?Write?the?data?bytes
for?(uint8_t?k=0;?k? ??writeByte(segments[k]);
??
stop();
}
void?TM1637::Num(int?num?bool?leading_zero?uint8_t?length?uint8_t?pos)
{
uint8_t?digits[4];
const?static?int?divisors[]?=?{?1?10?100?1000?};
bool?leading?=?true;
for(int8_t?k?=?0;?k?4;?k++)?{
????int?divisor?=?divisors[4?-?1?-?k];
int?d?=?num?/?divisor;
if?(d?==?0)?{
??if?(leading_zero?||?!leading?||?(k?==?3))
????digits[k]?=?encodeDigit(d);
??????else
????digits[k]?=?0;
}
else?{
digits[k]?=?encodeDigit(d);
num?-=?d?*?divisor;
leading?=?false;
}
}
setSegments(digits?+?(4?-?length)?length?pos);
}
void?TM1637::bitDelay()
{
delayMicrosecond
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4029??2016-11-12?14:11??TM1637\examples\TM1637\TM1637.ino
?????文件???????7632??2014-07-09?05:48??TM1637\LICENSE
?????文件???????1392??2014-07-09?05:48??TM1637\README.md
?????文件???????4715??2016-11-12?11:39??TM1637\TM1637.cpp
?????文件???????2942??2016-11-12?10:54??TM1637\TM1637.h
?????目錄??????????0??2016-11-12?14:17??TM1637\examples\TM1637
?????目錄??????????0??2016-11-12?14:17??TM1637\examples
?????目錄??????????0??2016-11-12?13:53??TM1637
-----------?---------??----------?-----??----
????????????????20710????????????????????8
評論
共有 條評論