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

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

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

举报

25个回答
秋水之下 回答时间:2015-11-27 10:41:06
/******************************Copyright (c)***********************************
0 U6 V3 k/ W; m*                Jiangsu Zhihai Electronic Technology Co., Ltd.
9 P$ b9 I! |* e  b# m9 G7 K2 J*                      Research & Development Department8 c+ W- Q1 c. R( B
*
9 o3 ?! g# N( C0 g! Q*                                                                                                        www.smarthealth-tech.com* f! {' P. q6 k
*7 L% ]+ p; `$ I( C. Q, U% o
-------------------------------------------------------------------------------, J; b6 L8 j" ^
* @file    TM1637.h: v8 Z! ^5 l* X/ `: h0 B' L0 o
* @author  GU DONGDONG
8 v- Q. ?3 v9 m  h' U3 |* @date    2015-11-25    _* J4 M/ O% u) Z# P
*******************************************************************************/4 {) A0 m, x2 R0 i+ }9 p" R
#include "TM1637.h"' w8 Q# k  u3 m0 Z. `3 l% ]- H
#include "delay.h"
5 h$ C( ^2 G% O) h' @. Q7 k/** Write multiple bits in an 8-bit device register.7 \5 m. ^( ~5 [6 L" o9 d
* @param slaveAddr I2C slave device address0 X) L" B% H. A5 B& I
* @param regAddr Register regAddr to write to" }+ d# i3 B# q6 g
* @param bitStart First bit position to write (0-7)
( G" H, x2 B. @& |6 ^' @ * @param length Number of bits to write (not more than 8)- _; k1 N  B* a' E7 E, d% m- b
* @param data Right-aligned value to write* R7 N2 a: v9 k( V
*/8 F" y  Y# x0 h: w$ z
void TM1637_Delay_us(unsigned  int Nus)
$ t6 s( o9 Z& G0 [{- C6 U5 ^$ T6 O+ Y! ~+ w" L/ `
for(;Nus>0;Nus--)
" l" Y1 ]* h7 z6 @+ q        {
- K1 J0 f4 m* j7 k4 Q2 S  L          __nop();( R" ^% `! k$ n, I$ `0 S
                 __nop();$ @" y( [: [6 T) b
                __nop();
3 d) |5 \; W+ d; y7 D( h                __nop();* Q# I3 Q$ ~- e- i; G0 C
                __nop();6 `" p& O2 E, N- @' A! x, |0 J+ f
                __nop();
) I. K& _7 e" r2 I% t- A' p' T                __nop();5 z# g6 T% C0 I, F  W' S
                __nop();
& k# Z" i' K: j6 Q9 P! s) V                __nop();( p+ a. @9 J6 |$ T$ Z3 @
                __nop();
$ k: L9 t  f! e/ B% Y* ?3 o7 m                __nop();- b- o' _; U* E) x& j8 D6 w* j2 M
        }0 I  j* a; N) r6 _
}3 w  i2 g6 d# F8 ^% Y; x# ]. l7 N
//#define TM1637_CLK_Low()    GPIO_ResetBits(GPIOC,GPIO_Pin_2)   ! F6 F/ A% E5 v) S- x' D2 C- x
//#define TM1637_CLK_High()   GPIO_SetBits(GPIOC,GPIO_Pin_2)
# ^$ @5 O( N) T2 f5 g9 B//#define TM1637_DIO_Low()    GPIO_ResetBits(GPIOC,GPIO_Pin_3)   
& R0 q$ z- D2 Y; h+ M: n//#define TM1637_DIO_High()   GPIO_SetBits(GPIOC,GPIO_Pin_3)
3 ~  p. l1 `, s+ y( \void TM1637_Start(void)7 ~; ^8 X* }" B' K4 e4 \
{
  P. G0 |4 `9 e0 s- ~! k        TM1637_DIO_OUT();
0 P  ~" E0 ~! ?/ Y  TM1637_CLK = 1;
% S1 H7 p5 Z8 O8 D1 X) I/ j        TM1637_DIO = 1;8 D8 e' i. o1 _
        delay_us(2);! E8 C! n" W! W0 D' U# p
        TM1637_DIO = 0;) ^" D' u- _; ^0 C$ B0 ?
}
; k1 h% _4 r8 v' ~* R' z7 p( \void TM1637_Ack(void)
' V) O+ ~, Z1 K0 `. I{& z# C2 L( Y% E$ T/ j" @
        TM1637_DIO_IN(); 3 ?5 l& u  J2 j- |# {2 O6 l: L
  TM1637_CLK = 0;
7 e1 W" v/ d) x1 i& E        TM1637_Delay_us(5);% r' W6 k2 U3 w/ f' n) u' I# Y
        while(TM1637_READ_DIO);( \( {$ G0 o9 j7 ?
        TM1637_CLK = 1;5 G) y( ?6 S) c) z  h6 y; Y
        delay_us(2);
0 ?4 }! k; i# j; ]$ I* J$ r        TM1637_CLK = 0;
$ w: d/ i* @7 r2 S% j% j}# i% G5 G$ c5 P/ a- k' p3 ]) x  t' P
void TM1637_Stop(void)
; m0 C5 j0 a: ?* z{
  o  w- O1 Q" ^        TM1637_DIO_OUT();
* Y# f- z3 G9 W* Z) @        TM1637_CLK = 0;1 ^0 K& [( u  [! m& }0 x6 Z, P1 o
        delay_us(2);0 S) ?$ X. x. Z& w% r3 p) Q
        TM1637_DIO = 0;
" v( o3 b- _( e; w, e7 G        delay_us(2);0 k$ L; a) a& p7 n) P7 d5 @
        TM1637_CLK = 1;
0 e7 R# A4 I4 b8 Z        delay_us(2);* u3 B/ O- z1 L5 g8 ?
        TM1637_DIO = 1;
0 v7 q' L, v( i% T1 V& ?}
( K6 w5 }8 W* l" Qvoid TM1637_WriteByte(unsigned char oneByte)
0 s7 V% O/ o8 R) [/ G. a  x: Z: @9 t{/ F. F, E; G) V$ K1 k, q; f0 P
unsigned char i;2 u8 ^0 R& L! x/ o% b1 n; B5 f
        TM1637_DIO_OUT(); 6 ?/ t8 h0 L7 F( l  s- `/ F* ^( S
        for(i=0;i<8;i++)
, g" R6 U. D( U1 |        {
! z$ d/ _, u) y2 E         TM1637_CLK = 0;' L- [/ ^0 E3 X8 W5 ~/ ^5 |# p
                if(oneByte&0x01); ?8 W1 `6 f8 b7 O# T2 G) F/ m
                {$ S! X, H7 F" l7 y
                        TM1637_DIO = 1;
; E" j- O' @3 x1 [2 y                }
: _4 F+ O, G( p* j( [" p                else
: z5 v' A/ B8 _                {
  z$ M1 ?* H; A- ^& w% }                        TM1637_DIO = 0;
6 v. G  C" ^" T  o  [                }
, y0 p9 L3 Z8 y8 z                delay_us(3);
* \& ]: Y0 ~/ P6 @3 U                oneByte=oneByte>>1;
/ G- p) W- u$ t+ x                TM1637_CLK = 1;+ r6 w0 J5 J2 B/ g, x  b$ m
                delay_us(3);& E" t: {) Q1 m" q5 Q
        }
0 J6 C: O' a+ M, y3 a}
! d( `8 p* Y3 _1 d! V/ P! P7 Y# Y- B$ j/ Y
unsigned char TM1637_ScanKey(void)4 d, q0 G" J: c, ?% g0 |
{( `" L- n5 k  d, ^3 l7 q
        unsigned char reKey,i;
3 u9 d4 v% t  ]/ b; s        TM1637_Start();8 f* g8 B( ]. b3 M3 ^
        TM1637_WriteByte(0x42);8 z, P6 C! G* K$ ]
        TM1637_Ack();
9 s$ e( c7 h* o% m7 V4 X+ t        TM1637_DIO = 1;2 \$ g* z! X1 {7 Z8 S, }
        TM1637_DIO_IN(); * v* D/ X& w! d6 Y2 W
        for(i=0;i<8;i++)7 i+ Y6 y4 K9 P
        {
) i( i; l* W. x& S& U; P5 V          TM1637_CLK = 0;
1 I6 a; R- @' J& Y+ K+ u( P                reKey=reKey>>1;
; M; t5 v. s# V: J! C                delay_us(30);
# V5 ~3 [5 w6 \# x+ q9 c# X0 B& [1 I                TM1637_CLK = 1;
' k( i; H0 ?0 P- l                if(TM1637_READ_DIO)7 ]( V2 W9 U' |& g4 j9 m0 t
                {) Z3 T$ c3 O% b) f) }5 ^8 z' E/ B
                  reKey=reKey|0x80;
9 x2 \6 |" G( H" v6 j                }0 d7 V% D7 z) A& r' |* v; M* ]8 e
                else
$ A7 C$ J* o$ G" R7 d# }  I8 o                {
( x) e3 h/ ?9 {- |( o+ I$ W8 |                  reKey=reKey|0x00;! \9 Q2 S  ^/ Y% h: w
                }
! }! W; [+ @/ [5 b                delay_us(30);  P) E1 S' l' w/ {7 Q9 P
        }
5 k' x+ p! S/ J5 v( E. g  TM1637_Ack();! X; `; U/ q8 [3 H$ a2 ]
        TM1637_Stop();' u) ], `  h/ A0 W) \  K) y* y
        return(reKey);$ ^3 @1 l3 T. \, z3 e' F) L
}
: E) D% ?9 D0 `: a+ Y* Wvoid TM1637_NixieTubeDisplay(void)/ n% `; h0 j8 `; Q: T9 l
{
: P: F* N- ?5 v6 y        unsigned char i;
  C% @3 }0 D+ S) w5 v2 ~        TM1637_Start();4 `, l+ r3 e1 S% W( i/ v! l- \
        TM1637_WriteByte(0x40);
6 e1 R! @! u* f; X0 i/ X8 @        TM1637_Ack();! T! |5 ]4 x, E9 \* ?
        TM1637_Stop();
6 }* W# l+ W& U) p        TM1637_Start();! A3 E4 C8 z8 W( x, W
        TM1637_WriteByte(0xC0);
: H: Y* U/ O2 k7 A; `        TM1637_Ack();+ A" f3 n2 Y- [
               
& o& q" J- S  T) X  m6 {        for(i=0;i<6;i++)
2 N2 l9 a0 x: z6 |% L  ^  x        {
) \' W) K; Z9 q- o9 ~- n                TM1637_WriteByte(0xff);) N' e) r; X3 Z* v; }
                TM1637_Ack();
4 f% j9 k: y$ Y4 W. |; @# m        }+ C, z  C$ H- j9 J6 K& `( r
        TM1637_Stop();
# |  n  j9 E) F8 o        TM1637_Start();
+ {% p6 ]# n( s% `2 m        TM1637_WriteByte(0x8f);
6 E, V4 ?0 I# D% |- ?: C) U2 B        TM1637_Ack();9 Q' ~: b6 d+ y
        TM1637_Stop();
9 y  [- e: _7 X/ P7 @3 Q}* b/ {0 X/ j% q6 V0 }
% L1 S, W$ m* Z/ j
void TM1637_Init(void)) C) J& h7 U0 a- E$ {
{. U' j5 C! y2 }# j/ {' H
. G7 E. q( z* L9 x$ _
GPIO_InitTypeDef  GPIO_InitStructure;, Y/ L( [/ W8 x/ T/ t# [" x
       
( N# U' E; E2 p% d' w. D. z  l RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);         5 ]) k! `* x0 Z- s. S) [
       
5 @: y- e7 p9 f4 ^ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;                                  1 W* P2 U# \1 k; ]& F/ {
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                   
0 ?$ |9 M6 T1 z* g' F GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         
, r& \+ M4 W; R+ G  c7 S2 w GPIO_Init(GPIOC, &GPIO_InitStructure);                                          
6 m+ ~7 W" A' t. p7 Y+ s, |; Z9 f# D. K
}, J, |/ r9 p6 J/ w6 u9 A$ V
0 i& Z& s+ q2 T, c2 t  S
/******************************Copyright (c)***********************************
+ h* t) ^7 S5 Z2 T: J*                Jiangsu Zhihai Electronic Technology Co., Ltd.
  ~# C- O( s$ y* r) K' _' `*                      Research & Development Department
( v6 i5 ^4 W) {  [6 i*
2 w% z- F) P. a  b*                                                                                                        www.smarthealth-tech.com  R4 Q9 V+ h" B/ B
*) q7 D& I' E0 `1 y9 E- |. Q/ @
-------------------------------------------------------------------------------" N" P7 O. O  I3 M
* @file    TM1637.h
/ z0 V6 I. ~$ n/ b) ]* @author  GU DONGDONG
3 i! x6 Z, Z1 p$ A& J. c* @date    2015-11-25  ' y" e0 u6 V% E+ L( h
*******************************************************************************/- \! K  ?+ F, L; B; F  J
#ifndef TM1637_H
8 n* g: o9 l3 ^0 _#define TM1637_H
( \2 }( D$ `; S& j
' u" P4 i1 z, r' F6 Q9 X" D#include "sys.h"
" i- n( h! e, [) }+ R/ n
" r' x2 d- w! [3 w* ^( p#define TM1637_CLK           PCout(2)  7 G6 T- o# v/ U# l9 K% i! M& b
#define TM1637_DIO           PCout(3)  
0 M0 r1 v7 Y- l* v9 T#define TM1637_READ_DIO      PCin(3)
, z  L+ G& x4 f/ E2 O: i. k1 G  d; A& ]  F& K: X4 h
//IO方向设置
& j+ k! m. z1 s+ t2 C#define TM1637_DIO_IN()     {GPIOC->CRL&=0XFFFF0FFF;GPIOC->CRL|=8<<12;}
  ?, b$ @4 Q: Z) r& s#define TM1637_DIO_OUT()    {GPIOC->CRL&=0XFFFF0FFF;GPIOC->CRL|=3<<12;}
( h( K7 S7 S. U1 R/ K; m2 s
; ]0 {7 V- n& V4 z
! A  T. w* {6 _1 f7 v# jvoid TM1637_Delay_us(unsigned  int Nus); 7 ~, ~3 w/ k  Y3 ^
void TM1637_Start(void);5 R0 j5 w, p( G7 `2 L
void TM1637_Ack(void);
5 t8 f* ?$ }' U6 i7 x. dvoid TM1637_Stop(void);9 l- d  E3 c' `8 ?
void TM1637_WriteByte(unsigned char oneByte);+ p0 o- |9 I. ]
unsigned char TM1637_ScanKey(void);7 @  ^0 M' f% X% f! v
void TM1637_NixieTubeDisplay(void);3 Z4 v" A6 G& n
5 ~5 X" w1 i% B. Z4 A% o7 G
void TM1637_Init(void);
! B" R/ f. i6 N1 M5 @void TM1637LED_Init(void);2 E) u* Q) ?0 }
* j( F9 d: \! @$ |) x+ }) l! B
#endif
; ~) L- F0 ?) S
7 L' D, e; \. o" X% N
. ^6 u& w: D+ m( U" d, j) @4 A8 y: J- q
秋水之下 回答时间:2015-11-30 10:45:59
ts2000 发表于 2015-11-28 09:14. N7 d, C3 t: U
什么东西,还要搞个密码
+ C3 j2 ]) ?! K! }
板子是山寨某原子的,不敢贴出图片和视频。我板子是绿油的,原版是蓝油的一眼看出山寨气息啊,(*^__^*) ……: g: H4 N! w9 t7 V& q$ s' }
6 E& p% {7 b5 |- t* x: D2 w
和战舰MINI和新战舰V3上面通用的IO具体看程序里面定义。
! ?, |& r+ n# M" ^( ~. ]' ]: i4 G! w4 h; U1 d; L0 Z/ u5 `+ \
。。。。。
* Q" T; P" N7 u6 l5 O1 _/ C! f1 c0 p8 m1 d! W
就一个视频和图片,不看也罢
秋水之下 回答时间:2015-11-30 10:45:26
mark0668 发表于 2015-11-28 00:08
  o6 i/ E. Q/ Y6 [) ?0 U! Y哪里来的密码...

; t0 t$ D& j! ^板子是山寨某原子的,不敢贴出图片和视频。我板子是绿油的,原版是蓝油的一眼看出山寨气息啊,(*^__^*) ……
- j" |6 T( L# D8 g/ D) t, ^* @1 H; s8 t/ e" D  `' W2 g$ Z
和战舰MINI和新战舰V3上面通用的IO具体看程序里面定义。
秋水之下 回答时间:2015-11-27 10:34:03
一些附件分享 000.jpg 6666.jpg 4 h% v/ v; d; ^
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。
7 B0 S" ?9 A  j3 E+ N

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

下载

2.14 MB, 下载次数: 617

ALIENTEK MINISTM32 _TEST1_ TM1637.rar

下载

2 MB, 下载次数: 377

秋水之下 回答时间:2015-11-27 10:45:48
模块图。。。0 z  C2 n: a" R+ g- |8 m

1

1

11

11
奋斗逼 回答时间:2015-11-27 10:47:39
感谢分享
; r- O* S( S6 v/ Q
秋水之下 回答时间:2015-11-27 10:51:38
奋斗逼 发表于 2015-11-27 10:47
: g! {8 K% K, t感谢分享

6 C; G* U* o8 Q* e. \7 f9 `- V以后陆续把出了正点原配以外的一些模块驱动列出来
射阳河 回答时间: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:352 D1 i- P# }2 v2 e5 |) |1 p# }
密码是什么鬼

" h0 H" I" o7 H! T  R板子是山寨某原子的,不敢贴出图片和视频。我板子是绿油的,原版是蓝油的一眼看出山寨气息啊,(*^__^*) ……
12下一页

所属标签

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