你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

#模块驱动例程#1.战舰以及战舰MINI板驱动TM1637数码模块

[复制链接]
秋水之下 发布时间:2015-11-27 10:28
本帖为密码帖 ,请输入密码 
赞 收藏 2 评论25 发布时间:2015-11-27 10:28

举报

25个回答
秋水之下 回答时间:2015-11-27 10:41:06
/******************************Copyright (c)***********************************
; Y. {# f2 f1 Z5 e2 a*                Jiangsu Zhihai Electronic Technology Co., Ltd.4 n/ `6 Y4 |' T. M3 ~. z" G, r
*                      Research & Development Department/ S: M6 d) ]5 {9 i
*
% y& c/ |& m! a6 f/ }( L% a4 Y1 V*                                                                                                        www.smarthealth-tech.com
+ M9 x/ ~' J* A) ]1 |  p*
5 U( m+ z9 U1 x, F4 A& ]( M-------------------------------------------------------------------------------
2 g3 ^( {, [' Q; P. t5 |* D3 E9 H* @file    TM1637.h
- r. C1 z6 T. G+ W5 f* @author  GU DONGDONG
6 v. `9 o8 V* {. F9 D' z* @date    2015-11-25  ) f- P* L% c2 T* l) ~
*******************************************************************************/- ?9 c8 T* i/ G" L. a9 r" Q
#include "TM1637.h"8 ?' f' t; `( v
#include "delay.h"4 Q9 D" ?" `7 e9 X5 k
/** Write multiple bits in an 8-bit device register.* j* V5 {. b, o* Y. T; a: a8 u+ O. x
* @param slaveAddr I2C slave device address( \1 R) E0 K, ^5 H
* @param regAddr Register regAddr to write to4 @- U& w& r" s
* @param bitStart First bit position to write (0-7)& v) r- Q0 R) I  v" w7 [" @, P
* @param length Number of bits to write (not more than 8)- ?3 W. J6 X% c' D0 y0 B
* @param data Right-aligned value to write% ~% P! x+ f2 e: h1 z
*/5 G" s( ]) M! j  v5 A( _; j, N
void TM1637_Delay_us(unsigned  int Nus)
6 t  n  }9 ]* Q+ y6 j. S# K4 }{
6 e$ B2 V/ x8 @. ?+ l" Z for(;Nus>0;Nus--)
6 z7 M+ s# e, m4 u' |9 p4 o        {3 ^/ \, A5 b2 a3 K5 q& z- |. s9 J1 z
          __nop();+ ?5 D6 u/ n6 F. \
                 __nop();* `- l/ x. J+ y3 v1 B
                __nop();
5 F: C6 x* W% A( e                __nop();
/ F; N8 A) {% D4 b. _% a% U                __nop();# Z# N: R6 W* k& F( v! Z% \) |6 U
                __nop();2 c$ c# f) M, R* J
                __nop();
' x; Y7 N4 I6 X                __nop();4 S8 y- A6 s& y1 g( m. c8 |
                __nop();
' E* e& C  \" c. `2 F+ z                __nop();6 V! @! N8 G0 p+ p+ _
                __nop();5 a# v8 p% M" z" ~2 [: h8 G# T
        }
  _( J9 y3 G' Z" ], v}
' r" e: ~' ^( \5 l7 `) x//#define TM1637_CLK_Low()    GPIO_ResetBits(GPIOC,GPIO_Pin_2)   
: r- q. h& o' d9 f0 s. B. o, l//#define TM1637_CLK_High()   GPIO_SetBits(GPIOC,GPIO_Pin_2)2 B# C* D" ?5 F. H1 r) K, n0 S  y
//#define TM1637_DIO_Low()    GPIO_ResetBits(GPIOC,GPIO_Pin_3)   
. r4 E7 M8 o- Z//#define TM1637_DIO_High()   GPIO_SetBits(GPIOC,GPIO_Pin_3)
/ B5 ?. {2 i) |: ]7 _9 a0 Lvoid TM1637_Start(void)
8 t! T7 d& j" P5 h* L" l{
1 }$ t$ Q% h/ ~* W        TM1637_DIO_OUT(); # O" D/ A. |+ [
  TM1637_CLK = 1;& s9 {# e7 R' I# ]2 X  I0 {: ]
        TM1637_DIO = 1;1 u" p' b- {' O/ ^0 n! T5 @
        delay_us(2);1 X& I" z: L5 X! |) @
        TM1637_DIO = 0;
5 ~0 u( u% F" }- C0 V& o}; F+ Z, n) Z: I) g5 Z
void TM1637_Ack(void)
0 @+ m, P) M, P{
: Q8 o- Y: h, n        TM1637_DIO_IN();
$ e% _2 o: k) _$ g0 R9 i& J  TM1637_CLK = 0;
- w( e& e" r! J        TM1637_Delay_us(5);
1 W4 N, `0 Q& H. G% [! B! R        while(TM1637_READ_DIO);
1 J( k+ [( O  [7 S; U) s        TM1637_CLK = 1;
3 T8 u% {. L3 p+ G1 y4 N$ I+ N9 d        delay_us(2);
$ c1 P4 r6 u- u7 |$ k# y4 q" ^8 v        TM1637_CLK = 0;- {" q- F2 s/ U" Y2 ]
}+ p8 E+ @) s" i+ H4 x2 s. r
void TM1637_Stop(void)
- F$ r: e& K7 i# p( m* h9 f{' a$ V9 E- n# S, ^6 P$ p0 n5 w% [, k$ r
        TM1637_DIO_OUT();
3 n+ p* E' _( i- D& x        TM1637_CLK = 0;
3 k1 V, ]9 ?" c( [. G# Q        delay_us(2);- l; k* \! _2 i* B/ Z3 q* o+ |; {
        TM1637_DIO = 0;2 y# K* _& j0 q' N% X! i; R4 w
        delay_us(2);2 p) [! d% H) }; r( i
        TM1637_CLK = 1;
2 T0 O. U% G5 R: ~  V- x" k2 ?$ `3 }        delay_us(2);3 t8 n6 s" w5 k) M- g' Q
        TM1637_DIO = 1;2 P% ?1 q( W3 ?2 q% f
}9 V8 x4 b6 p- A/ \& h4 N7 O
void TM1637_WriteByte(unsigned char oneByte)% G9 U2 j+ g( _( n; h
{
5 p3 m5 z! @1 v unsigned char i;. x9 h/ j1 l& F) D
        TM1637_DIO_OUT(); 9 q  @& C. Y2 i
        for(i=0;i<8;i++)
' g" E% j) d$ [! _4 R0 n6 h        {! N; Z( f5 e1 `& E" A" d0 j9 {2 @
         TM1637_CLK = 0;2 U% C! }/ X7 ]3 D" p6 M! w. E
                if(oneByte&0x01)6 x9 ~# u/ r1 @. j
                {
0 k7 @4 i- y$ x+ O. U$ o. y                        TM1637_DIO = 1;0 p3 c8 Z" D% p
                }
, z0 a$ m& l/ |7 W8 _* @                else
1 |& q; J9 q! K& a                {
& Q8 q. y' `7 K1 a' v                        TM1637_DIO = 0;
0 m  y; z7 n8 \4 E* ~# o1 ~8 ~' F                }0 \' H1 T3 a, E( \( H. |
                delay_us(3);
7 w& M3 R" z2 B/ l. h$ E" A                oneByte=oneByte>>1;
! }$ ~7 m0 D' n- w5 T) f3 o                TM1637_CLK = 1;9 E! y8 V1 ?& R
                delay_us(3);
( a5 }1 p# H3 A        }
* P: I. Z3 O( `& o}7 _& r  U  b0 p+ [" t7 [

, F4 K. L2 F& g4 `% e) w6 kunsigned char TM1637_ScanKey(void)+ W- f9 @2 {8 P" h: ~/ r( b! N
{& i: A* ~, t  n& t
        unsigned char reKey,i;
/ T, F( H0 w. U) ]6 ]0 Z        TM1637_Start();6 Q) y+ s9 I2 E2 w
        TM1637_WriteByte(0x42);! ~. a: M& e: z9 o& E
        TM1637_Ack();/ h6 q+ x+ q: z+ x$ Q) R1 r) V
        TM1637_DIO = 1;
: M+ R/ ~2 d& L# B0 r1 F        TM1637_DIO_IN(); & |& ]1 m5 Q6 u6 l/ ~; P7 S) ^4 V
        for(i=0;i<8;i++)
. s, b8 o+ z+ t% C7 ~0 L        {3 f* \, d! S. ^& d
          TM1637_CLK = 0;1 m2 K$ K7 N" I# P
                reKey=reKey>>1;- r9 @1 }4 Y6 _3 l
                delay_us(30);. Y8 Q* O! h; C0 ?& ?
                TM1637_CLK = 1;3 P" R9 U8 t' P6 d
                if(TM1637_READ_DIO)
6 J( u1 @" B/ E* y0 ?- Z                {2 W* S' R- s9 h
                  reKey=reKey|0x80;
. f& L& e# w5 {, y                }
$ I2 c: N& p* N' w# Q                else* S( t0 q4 n2 _  ~0 n
                {# \5 K5 A4 p  ^+ g4 c
                  reKey=reKey|0x00;+ N: S- d. ]6 m/ z* D
                }
9 O4 N9 i, X- G8 G8 X: A* ]                delay_us(30);6 b! c4 b8 H8 W( q
        }/ a' _: ~  F- C
  TM1637_Ack();
( Q0 l6 v  I# ]0 T; q        TM1637_Stop();& C6 G; M9 l1 A# n. j. l2 A) v: R
        return(reKey);1 H$ G$ {- C3 ^7 E- [8 S
}5 O0 b& B  n3 J! E! q; l
void TM1637_NixieTubeDisplay(void)* i4 P- r  \5 o
{
9 k) G9 W+ N1 Z1 G* T, ^0 y        unsigned char i;6 l1 u6 F  |: I9 E+ X
        TM1637_Start();
3 M3 F! u% S6 g  d) @( L" q5 m- \/ i        TM1637_WriteByte(0x40);
7 U/ s4 y& O- N) m9 A5 h" L        TM1637_Ack();
: U; Y2 C3 v' g        TM1637_Stop();
( a: t$ i$ f4 V$ y, T& F1 Z3 ~2 o        TM1637_Start();4 p/ L: g7 u' j2 L: k
        TM1637_WriteByte(0xC0);
+ q4 `! }1 ]7 u/ g: a8 H: F7 }. c        TM1637_Ack();
4 V. |! j9 H/ l8 E$ l               
" `- z) B9 H# t+ m: t        for(i=0;i<6;i++)
: x' m0 {  z7 s' K* v        {
0 C/ |* i: ?  g' O1 N! _7 M0 a- G                TM1637_WriteByte(0xff);
( L4 I6 p6 J( ?3 r% s" F                TM1637_Ack();1 _3 [( b$ l* _/ _' J' V* M
        }
) q. G8 |4 E5 g. B, l        TM1637_Stop();1 {1 O, @5 m$ W# a# [% _- Q
        TM1637_Start();+ }1 b% F# p% ^& [0 w
        TM1637_WriteByte(0x8f);
: n, q8 g6 |5 e& u7 ]) Z& e4 b6 N" D        TM1637_Ack();
5 x( j. r/ J5 H8 u, B! G8 J/ r% _        TM1637_Stop();) Z" X) C! ^6 w6 x, Y
}9 e: Q( @% g5 H0 u) I3 O/ S7 ^

- t  A- Q6 D6 G( l  t, qvoid TM1637_Init(void)5 o! G. F- n7 Y7 i% H. [
{
# X. K4 b/ J1 A& M, W7 |! _6 @; ^
GPIO_InitTypeDef  GPIO_InitStructure;5 ?" B0 B& W" B0 g4 i: O
       
- T7 h% c. m6 Z! h+ b- v! Q RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);         
7 \4 ?8 ]9 S' M" L( d' k/ q        ! g, }0 Z( M# y) P( R
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;                                  4 E2 M5 R  h+ L: V
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                   
$ x+ }4 o- P: J. A: A GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         
: N% M8 C! N, t4 X0 O GPIO_Init(GPIOC, &GPIO_InitStructure);                                          
+ Z; j. x5 v* N9 J
- r7 y# i! {1 z# E}5 R6 ~( Z4 Z3 P' ^6 u

  t' [. u  t+ q/******************************Copyright (c)***********************************: d. P) U7 c: ?( h' I
*                Jiangsu Zhihai Electronic Technology Co., Ltd.
6 N; w' q  c2 v1 F& N# w*                      Research & Development Department
, x9 ~; p8 G7 c( D2 i*$ c: C& ?2 H' f$ g6 k" X& g) L
*                                                                                                        www.smarthealth-tech.com' j2 F" p5 U. I, P& z& h
*
3 q5 k, O- ?) P: I* B4 F  `/ P% H0 t-------------------------------------------------------------------------------
) b5 j: Z% U  B, W* @file    TM1637.h
7 d& S0 I8 p/ O# @' T* @author  GU DONGDONG
& L( j; B* U' o0 f; x; X! K! R( m* @date    2015-11-25  8 X& ~) f5 u% ^4 ~. D# L8 X
*******************************************************************************/
% b1 V* B( X3 h5 P9 F6 x9 d: I#ifndef TM1637_H5 T- p0 ?7 d7 f' @: N& s' R9 M
#define TM1637_H  s3 M6 `7 x1 {- V) |

0 P* j2 i* v8 }" G- S#include "sys.h"6 _/ ]0 q& ^4 h: {' g

4 F% I2 |/ t# k! g#define TM1637_CLK           PCout(2)  * [  n+ n7 J( I% d1 t) F
#define TM1637_DIO           PCout(3)  
" {; f. @+ k! q: P#define TM1637_READ_DIO      PCin(3) 2 n+ W% j) E' s8 e4 n! R
8 r" j/ {" {9 t4 J$ ~: l
//IO方向设置
2 @: f9 D( }4 U5 {0 @7 k1 h#define TM1637_DIO_IN()     {GPIOC->CRL&=0XFFFF0FFF;GPIOC->CRL|=8<<12;}
* R; o- E) p5 z! I5 c- n0 a#define TM1637_DIO_OUT()    {GPIOC->CRL&=0XFFFF0FFF;GPIOC->CRL|=3<<12;}
# }0 M: m! Z2 Q4 r- a' @9 o  Y
6 C" ~7 E$ N# f. N. r
- m5 O& G2 T- svoid TM1637_Delay_us(unsigned  int Nus);
8 E5 w# }8 Y8 b8 qvoid TM1637_Start(void);! e! }7 M% {  o
void TM1637_Ack(void);5 ^0 A( i  I4 |* H6 e
void TM1637_Stop(void);
6 N$ c2 c3 `  V. zvoid TM1637_WriteByte(unsigned char oneByte);) z$ V9 r" J( F4 j* ]  c
unsigned char TM1637_ScanKey(void);
# o% a5 r7 E8 w2 Cvoid TM1637_NixieTubeDisplay(void);
. J' V# r: a: X6 k0 z6 \7 J8 D8 H9 Y1 x; w! p/ Z8 z2 K* |
void TM1637_Init(void);( a# K) Z" |3 ~( q+ r* V
void TM1637LED_Init(void);
: |* ~" d" T3 \
0 A, ]7 ^2 U+ X* X/ l( [  V  @#endif
2 A% S2 c5 F5 H8 F
0 x/ J! E" \6 L, [) Y/ h& C1 e
, P5 R5 Y! B# O: G5 B6 s. L# ]& i# p$ p- D: a# F7 [( g
秋水之下 回答时间:2015-11-30 10:45:59
ts2000 发表于 2015-11-28 09:146 H( P, z7 b$ }$ A- l. ~% Q# q1 }
什么东西,还要搞个密码
  h7 w3 [0 y, E- L, c
板子是山寨某原子的,不敢贴出图片和视频。我板子是绿油的,原版是蓝油的一眼看出山寨气息啊,(*^__^*) ……  y4 m& h' `- r  B5 L/ y
$ X- i7 B7 Y* E7 s
和战舰MINI和新战舰V3上面通用的IO具体看程序里面定义。
2 _  }: _& B: p- G; r2 V7 k' g5 P" u/ x1 c" F& F
。。。。。
6 e* F) n- \* u: x) M+ e0 o+ ?, `
* j8 `4 G0 ?4 d8 R9 q就一个视频和图片,不看也罢
秋水之下 回答时间:2015-11-30 10:45:26
mark0668 发表于 2015-11-28 00:08
& d/ Y, i) q7 Y% s8 E6 w哪里来的密码...

" ~! w  |; n8 Z; C3 n4 A4 l$ x' R板子是山寨某原子的,不敢贴出图片和视频。我板子是绿油的,原版是蓝油的一眼看出山寨气息啊,(*^__^*) ……/ {$ O; H: A8 T4 f
. I* M" n+ w0 T- b
和战舰MINI和新战舰V3上面通用的IO具体看程序里面定义。
秋水之下 回答时间:2015-11-27 10:34:03
一些附件分享 000.jpg 6666.jpg
. K  }0 Y- ?# A1 \
4位0.36寸共阳数码管(带时钟点、不带小数点)引脚图-请忽略图中尺寸.jpg.jpg

TM系列集成电路产品手册(第二版).pdf

下载

4.75 MB, 下载次数: 108

数码管驱动芯片规格书-TM1637_V2[1].1.pdf

下载

411.9 KB, 下载次数: 105

4-Digit Display v0.9b原理图.pdf

下载

76.31 KB, 下载次数: 95

秋水之下 回答时间:2015-11-27 10:37:51
例程两个一个基于正点原子新战舰,一个基于战舰MINI。
& t# E3 _6 B2 u$ }+ @

新战舰拓展实验1_TM1637_数码管控制.rar

下载

2.14 MB, 下载次数: 617

ALIENTEK MINISTM32 _TEST1_ TM1637.rar

下载

2 MB, 下载次数: 377

秋水之下 回答时间:2015-11-27 10:45:48
模块图。。。8 S% @1 z; ]9 _+ ]1 z$ F6 X

1

1

11

11
奋斗逼 回答时间:2015-11-27 10:47:39
感谢分享
, X5 S; {" g+ {
秋水之下 回答时间:2015-11-27 10:51:38
奋斗逼 发表于 2015-11-27 10:47+ W5 x/ `$ w! @) U4 U
感谢分享
7 w! t; ~4 ]5 e8 R; N
以后陆续把出了正点原配以外的一些模块驱动列出来
射阳河 回答时间:2015-11-27 11:06:27
:l谢谢分享正需要
埃斯提爱慕 回答时间:2015-11-27 18:38:48
提示: 作者被禁止或删除 内容自动屏蔽
风子 回答时间:2015-11-27 21:35:48
密码是什么鬼
mark0668 回答时间:2015-11-28 00:08:06
哪里来的密码...
小小超 回答时间:2015-11-28 09:14:30
什么东西,还要搞个密码
alles_ok>>0_0<< 回答时间:2015-11-29 14:37:11
密码是什么?
秋水之下 回答时间:2015-11-30 10:44:30
风子 发表于 2015-11-27 21:35
, I- {1 {2 s2 ?密码是什么鬼
+ Z# |0 H% `" J% G$ r
板子是山寨某原子的,不敢贴出图片和视频。我板子是绿油的,原版是蓝油的一眼看出山寨气息啊,(*^__^*) ……
12下一页

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版