|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
数字钟[ZT]. J9 Q0 r+ G4 j' Q7 Q' m B+ q
1. 实验任务 6 M+ F) |* P) X7 J0 }2 G _
(1. 开机时,显示12:00:00的时间开始计时; |: r6 m- Z0 U7 W! D4 `
(2. P0.0/AD0控制“秒”的调整,每按一次加1秒;
9 e* w+ n: B2 N0 C; R4 x1 E(3. P0.1/AD1控制“分”的调整,每按一次加1分; , t( O, G7 n) C8 Z5 |/ D
(4. P0.2/AD2控制“时”的调整,每按一次加1个小时;
8 X$ C8 }2 y1 x2. 电路原理图 1 V4 k1 ^; b( U: m
) F$ Y; O' W! ?8 M N0 X+ N, `
* f& J" T H: o- }$ E
3 H" M! B9 _2 L
, i) q' O+ j/ T9 Y7 Y5 V
图4.20.14 c3 \5 D$ B0 x# `: c$ Q
3. 系统板上硬件连线 " m6 c- W" H' ^3 d, D/ x
(1. 把“单片机系统”区域中的P1.0-P1.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上;
. e ^0 s+ k5 _. u1 J3 {5 _(2. 把“单片机系统:区域中的P3.0-P3.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上; 3 ]( _2 y9 S8 [2 {* e
(3. 把“单片机系统”区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线连接到“独立式键盘”区域中的SP3、SP2、SP1端口上; - Q+ n1 V+ _% H7 m( w' A. U s
4. 相关基本知识
+ C- c/ A4 n* b# N& d(1. 动态数码显示的方法
5 s( l+ V/ y3 @ S1 c2 j+ b1 t9 Q(2. 独立式按键识别过程
8 {& |! x* ?8 _- v6 h/ n8 r(3. “时”,“分”,“秒”数据送出显示处理方法
1 q+ Z4 ]+ _" H) l7 n: p5. 程序框图 7 `6 D2 U: q; h+ j
6. 汇编源程序
3 u) ~: a) o) q; m5 r2 s LSECOND EQU 30H
6 T( P+ x7 M' r9 l+ ^' HMINITE EQU 31H ' A/ a" X7 f* H/ v' y
HOUR EQU 32H
- K& [. J6 P/ ]+ v, P! r& G2 sHOURK BIT P0.0 7 m8 n) b" n0 K2 K/ Q$ U5 z# A
MINITEK BIT P0.1 + Q: \% @9 N' A/ t5 I
SECONDK BIT P0.2
/ I; R- c5 Q# ~1 ~DISPBUF EQU 40H " @) I7 c/ u. L- {
DISPBIT EQU 48H 0 v- X/ G2 ^* r) Z2 t: U7 K/ ?6 F$ V
T2SCNTA EQU 49H 9 }9 k/ R; k- Y5 y$ t4 ?! N9 f
T2SCNTB EQU 4AH $ X7 p. m5 P7 A) `4 \
TEMP EQU 4BH * M: y6 u% _) W/ O! X) k6 q
ORG 00H
T O7 r5 q6 q$ A- @- |9 tLJMP START
/ p4 D2 n" G3 _' S: t2 `; I/ V( u pORG 0BH 3 c, Q. U2 l* Q7 S
LJMP INT_T0 - t- p0 ^& X6 Z8 _5 u
START: MOV SECOND,#00H
. J1 u- Y/ G. _( L0 R. b2 L# @. CMOV MINITE,#00H ' u) f" S* Z: J7 [" z9 o3 t
MOV HOUR,#12
7 a4 B# ~1 R5 n3 h6 V4 q0 l4 SMOV DISPBIT,#00H # d h. H$ p7 w3 C- Z' P0 X
MOV T2SCNTA,#00H
' N2 Y- c3 F/ p( W( gMOV T2SCNTB,#00H 4 I/ Y: u Y% S7 P3 T3 D+ m5 ]
MOV TEMP,#0FEH
" j* ?1 y/ a, k) y/ M4 W& Q) NLCALL DISP 3 d/ \$ C/ U* `3 J1 W
MOV TMOD,#01H , b3 P* v4 H4 f& I. W
MOV TH0,#(65536-2000) / 256 * i$ x; l7 a3 D5 @( h
MOV TL0,#(65536-2000) MOD 256
# L- V% [9 `/ A1 F0 M2 X# X; oSETB TR0
1 v- C$ ^; N) _- |( {0 V HSETB ET0
+ ]. _2 e$ r6 s& ?SETB EA " F1 o+ Y* |, Y: `# @
WT: JB SECONDK,NK1 - {7 K" o0 I" b, S7 @
LCALL DELY10MS 7 y5 }6 p& G& z- ~6 e
JB SECONDK,NK1 9 \/ B5 v- S# s, n, g
INC SECOND
1 S+ w- B8 d" O' S5 y/ NMOV A,SECOND % R3 v6 X+ k- b
CJNE A,#60,NS60
5 S( j( G. T" ]3 G7 XMOV SECOND,#00H % i, U. g& z9 A: s. N
NS60: LCALL DISP
- {8 I* L. a) \5 c/ V3 ^JNB SECONDK,$ ) B& V- U7 j& E- b% E
NK1: JB MINITEK,NK2 4 x: p0 A5 }; S- t# x# s B1 m
LCALL DELY10MS 4 Z) v# X- k9 ]* |1 U5 r/ U
JB MINITEK,NK2
$ m( D5 S. k) T: dINC MINITE
) n' [$ L* l; f7 y H! t; {2 NMOV A,MINITE
1 Z; E* ~- z+ k) j# lCJNE A,#60,NM60 5 o( ~- g5 D7 u3 }
MOV MINITE,#00H / m; L; m* V$ s. E4 B
NM60: LCALL DISP . C: E& X2 `% E7 x& g% k4 A
JNB MINITEK,$ 2 ~) D2 v S" D( a2 q
NK2: JB HOURK,NK3
; N/ A& _, z2 B/ @; DLCALL DELY10MS 7 l0 a7 F' t% } R- b5 l! R. i
JB HOURK,NK3 6 z. Q# |- U; X6 T: x9 m
INC HOUR
6 l. d, k& D/ i, bMOV A,HOUR
0 E3 z% M$ g6 [1 V& s" P, x' ]CJNE A,#24,NH24
+ K1 W0 j2 Y5 ]MOV HOUR,#00H 8 |8 Z; C2 a# p- r: \4 V
NH24: LCALL DISP 5 m' O* i. I- x ?( D5 C+ J8 G% [$ E
JNB HOURK,$
" u! P" k! ?3 F' h5 KNK3: LJMP WT ! L0 n9 Z Q7 j2 |
DELY10MS:
* i; K; G: h- XMOV R6,#10
8 M9 o: p7 [ V* qD1: MOV R7,#248
4 n$ c1 m, J1 w7 {# @+ tDJNZ R7,$
% o3 K# d, z& GDJNZ R6,D1 5 ~% C0 y' ~& @# n9 G5 ?3 f$ b
RET
) d0 V" f, |5 y* f' }# ]DISP:
! I6 u2 V( M- J& uMOV A,#DISPBUF ' O& k, n5 s! z' g6 v
ADD A,#8 ( [) w$ ]) x* W; V& U' ]
DEC A
% e* [! h# t: C, C ~MOV R1,A
: I. B4 J- w" @MOV A,HOUR
+ r+ J* K4 {8 b4 ^# ZMOV B,#10 ; }0 G @ |5 j9 N
DIV AB 9 P; `! z4 G( O: }2 F
MOV @R1,A & @2 A/ S/ a- P/ X) i0 U
DEC R1 ( X- {8 c1 f+ [" F7 P
MOV A,B 0 V! i2 A3 l4 F
MOV @R1,A
6 J! p+ O- r: n$ i. i5 QDEC R1 2 K( u5 r; U6 h1 r" s+ P
MOV A,#10 ! k$ ?8 ?! ?0 H' i2 S4 A
MOV@R1,A % l4 b/ j2 }' Q. y9 B6 o; `
DEC R1 # S z. t3 [: g
MOV A,MINITE
3 R" @! m V: I8 q$ Z6 bMOV B,#10
* b& m- f* B L7 C: _DIV AB 6 p. ]" K2 }2 l
MOV @R1,A 7 T; @9 I5 O! r# i$ t" ~; r2 T
DEC R1
% K6 J8 ^. Y5 J, [MOV A,B 6 [0 @! F( \& k( U: f) @- |
MOV @R1,A
3 F5 X* q6 d" c* S: f( gDEC R1
3 g: P, ]9 [# QMOV A,#10 % W7 u6 V. P1 v; n
MOV@R1,A # k4 [# F) J' z0 }1 o& Z0 v! _
DEC R1
/ ~* q+ R$ t$ N) Y( o9 DMOV A,SECOND * `5 ]3 j( k$ m# o5 h0 ~
MOV B,#10 2 ~" R: c& v. {& u' X5 u
DIV AB 7 V4 |( B2 V! R8 ^ I P( N2 d
MOV @R1,A
" w9 G* n- }$ n: j5 n0 eDEC R1
8 h6 A4 q; f o3 p: o6 eMOV A,B
! I; A- _; H+ n4 T7 b( DMOV @R1,A
5 m+ q: f5 _# X* F3 hDEC R1 . q* B6 ^9 C7 Z, }' }" ?9 U$ ~6 b
RET
) @% N o. i7 p: z$ ~INT_T0: : F" g& P3 l. n: |3 m' A
MOV TH0,#(65536-2000) / 256 - F- }1 o5 T8 a$ m6 h* ~2 G( D" v4 V
MOV TL0,#(65536-2000) MOD 256
5 C+ F, X; B9 P6 NMOV A,#DISPBUF 7 M7 P8 q [5 s+ l. ]3 V$ {: y& L
ADD A,DISPBIT
; z( m, y" `2 c; `MOV R0,A
2 [6 Q$ E# J" |3 b M* kMOV A,@R0
% V: _1 y& N- v$ I3 uMOV DPTR,#TABLE . ]3 o% P2 H/ T1 l7 m+ ~4 a
MOVC A,@A+DPTR
; [8 Y7 t; y) _MOV P1,A
+ L! h) @+ \3 HMOV A,DISPBIT
% q/ b/ k# o7 ~1 ]" XMOV DPTR,#TAB - y x+ X" {7 a: }0 O" d7 T, z
MOVC A,@A+DPTR
5 }4 w! g9 n4 h% X! T' cMOV P3,A % k, H8 L% l- g8 o3 y: \
INC DISPBIT
3 }* [, D; [5 l. P* PMOV A,DISPBIT 6 C( R# R6 Q- n6 |/ Y
CJNE A,#08H,KNA
5 j$ L; ?0 z' iMOV DISPBIT,#00H
8 V/ H4 Y: k' F4 }* w! Y- HKNA: INC T2SCNTA
5 i; W& E' ^7 [! i" l" e; ?9 i# WMOV A,T2SCNTA 9 |9 f& ^* H& f2 Y9 H* u
CJNE A,#100,DONE 3 Z& u: [$ R0 z0 C
MOV T2SCNTA,#00H
9 n) c/ Q# J' n% uINC T2SCNTB + r7 H1 M7 S8 X* `" E
MOV A,T2SCNTB
) V0 y3 `* y0 x* mCJNE A,#05H,DONE
+ u+ O0 c" j: t' j* g# f5 `MOV T2SCNTB,#00H
3 U- V/ f" |: x1 tINC SECOND
( I o8 m! A$ Z: C$ K+ a, l8 |MOV A,SECOND 6 E; U$ O0 ^: Y* A# l) W
CJNE A,#60,NEXT , ]4 G9 I. p9 f7 k7 P G; q/ f
MOV SECOND,#00H + f! K# Y: {1 D1 \& Q& ^
INC MINITE
; v% s3 }( T$ O: D; \( w6 M+ VMOV A,MINITE # y/ G+ r8 }+ e* T. X$ O
CJNE A,#60,NEXT - x* @7 r0 h& {- T1 y/ R
MOV MINITE,#00H , ~% s; c D9 `) v' ~* Y
INC HOUR 0 s0 U3 W% ~( U/ ]
MOV A,HOUR , n2 b7 ~! E: }. z6 \) [% i# J
CJNE A,#24,NEXT
5 ^5 O( Y* u9 w8 @* eMOV HOUR,#00H % s8 h6 D/ p* F2 h: J$ y$ a% m
NEXT: LCALL DISP ( G' v/ m+ z/ o6 V) P
DONE: RETI
# l, Y& E5 @ k6 G( {TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H % C$ s" |2 T7 f" [+ U
TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH 0 m: Z2 O& b* ^3 A, G- m1 N% Y
END 5 T9 I) q" P# K: h
7. C语言源程序 8 Y3 K; S- s7 e5 c. b
#include
7 s! D. W, t2 c5 `' r' Zunsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f, ; L) ]' }0 a! Q0 c
0x66,0x6d,0x7d,0x07, $ }) D" ?9 t% C6 y0 [6 b
0x7f,0x6f,0x77,0x7c, 9 @7 \, [0 I2 I7 K1 [" s7 [
0x39,0x5e,0x79,0x71,0x00}; ; s( u0 z- O ~& K, @
unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
' h( O) Z' M" n3 [5 i( A0xef,0xdf,0xbf,0x7f};
" K; T/ p- u, S3 lunsigned char dispbuf[8]={0,0,16,0,0,16,0,0}; % L# x( ]% _$ o# ]
unsigned char dispbitcnt;
* |% Z0 F' [$ x) E+ W- w4 @: iunsigned char second;
7 m2 g. y3 ?1 v& Y9 c8 f+ a* cunsigned char minite; ! `' K* y/ v! l% t x" |
unsigned char hour; 4 g1 O; D( r% p# j8 m9 ^
unsigned int tcnt; " [) Q0 j Z; [* k
unsigned char mstcnt;
* l8 R0 a! R6 P8 g7 B! ~7 cunsigned char i,j; - @8 Z5 ~) Y' K, h3 p* ?7 ^
void main(void) 4 G' ?) \1 v0 M2 J
{ 6 j: L @& G% [/ |6 G6 ?3 k
TMOD=0x02;
/ d# Z& d! `% H6 }) U# \- ?TH0=0x06;
. w6 W# N8 G' BTL0=0x06;
, w# g; {. F" d8 ETR0=1;
% Q# e4 w3 y9 ~9 Q2 [6 U" QET0=1;
0 W3 b8 J2 K- K* S. tEA=1; - [$ ^ e/ M( T% g" a$ U
while(1) $ H8 {! i) n. u! B0 {# j
{
% o. x9 d' ?2 J0 t* @8 \if(P0_0==0)
+ x# B! Y) @3 B, z* `{
/ U i& ^- }; c. _5 u. D; x! @* lfor(i=5;i>0;i--) " P# j) i, u- D. E/ T$ t) m. [2 N
for(j=248;j>0;j--); 6 P, W$ a$ b3 u
if(P0_0==0) ; t# L: f6 P3 E# R& Q. U$ F
{ ' S9 n- E$ P2 X- F
second++;
M. v7 L! b9 K1 r0 T2 z9 Zif(second==60) ( h, y S" `6 l9 m0 ~
{ ; m( D @. G2 _* }6 l/ ^; H
second=0; * g4 O5 [0 N! R* `* S
} / u* e/ o( i+ S5 l% g
dispbuf[0]=second%10; : g% u$ g0 P/ W+ D5 i! B
dispbuf[1]=second/10;
1 {, \- @* S' @# q5 Q* Mwhile(P0_0==0); 3 ]/ R: M6 c4 D) d# K1 s. Z8 w$ W. t' M
} ! g# b/ g$ j; f
}
/ }2 j3 N- Y( Y" Iif(P0_1==0) 1 O6 B1 j. Y7 l- c
{ " d6 t% _1 b& |4 T3 y# u& @& o
for(i=5;i>0;i--)
! ]5 i" Q' ]. r: X( {for(j=248;j>0;j--);
3 T( h0 r" C" M; F: Yif(P0_1==0) 1 K% J7 ~: h# T p( E' S5 j# Y
{
- V' d- H. t/ lminite++;
1 r8 ~! c4 @$ \! ` A4 Eif(minite==60)
" T0 C$ X; C) p* U{ ! E* p& Z# x3 a
minite=0;
* u% C* [" q- W$ z) |5 f8 x}
0 `1 M* e7 }$ a" r& J( w+ N' D+ Edispbuf[3]=minite%10; 9 W$ h; L$ \* v' u( \: K J
dispbuf[4]=minite/10; 6 K! J+ ~+ ?2 F! L9 P
while(P0_1==0);
0 y* n% p; V- K3 s9 I6 i} & s6 N: \3 D( l5 A7 D4 D7 [% [
}
/ z9 j$ f' `* }0 T- A! N" o/ Sif(P0_2==0) " W& v7 A) q. s) n0 b& y, l: ]0 \
{
9 U* p2 Z7 w Sfor(i=5;i>0;i--) " t' R4 {+ C: U
for(j=248;j>0;j--); / U9 D; P% k" D* Q" W
if(P0_2==0) 7 |. t9 y+ ~7 u: D1 N7 K
{
q% |) D6 U7 qhour++;
$ _- \( V; [$ y$ ~+ Qif(hour==24) ) R$ X1 P( E0 X* O3 {/ }& ]5 N
{ ' H! `. X+ J! n0 ]( i7 a5 @
hour=0;
8 l$ T! Q" G8 ~' _} . ?' U& ~# o, l+ U
dispbuf[6]=hour%10;
) B1 M# m3 W+ U8 idispbuf[7]=hour/10;
9 r; g# b( v. [- W, mwhile(P0_2==0);
) g# s( I' c5 c p, E! c$ z7 p- g} 9 ]) S( b' O/ x6 ?0 r1 }, o @
} 7 |- W- }3 [& p E9 _: X
}
m _/ n5 B+ e$ d# P) z$ W}
0 [, d( L3 {+ X- b& t7 ^# Jvoid t0(void) interrupt 1 using 0
- G. o- O; P/ u3 e/ b{ t3 p# z9 u" Z$ `% Z" z" c
mstcnt++;
8 ^$ p! N1 W/ j. Fif(mstcnt==8) ! v' a) ]+ O3 v
{
' Q; v9 c8 L4 J( e7 N( xmstcnt=0;
8 A/ \2 X b6 Q5 a7 L( CP1=dispcode[dispbuf[dispbitcnt]]; . R# @! |. V( I" a8 g8 y
P3=dispbitcode[dispbitcnt];
* a N: U6 Q6 g- U. Fdispbitcnt++; # t. {5 H9 s' F% K( Y
if(dispbitcnt==8)
8 z/ L1 o- G d9 s{ " m8 Y* r' W( N6 z
dispbitcnt=0;
* p3 W- ~9 s" J}
" C" M: p3 [/ e; |- D}
1 S. K/ K' j0 q# t2 U) Htcnt++;
+ w1 h5 h1 O& C5 ]8 T& o- \if(tcnt==4000)
" H8 D) c7 e$ `+ i{ 3 S. a I5 U1 ?+ f% G# W [# }; S: Z
tcnt=0;
, {0 A7 i+ ~8 m) usecond++;
5 }; c( c6 y1 X8 {. }; V; Gif(second==60) * i t% _9 n3 T
{
; I& W' `( Y, u1 _& Osecond=0;
: L5 G* v; Y3 P0 n7 m3 j( Ominite++; . `( u7 q$ F! `$ S; X/ D
if(minite==60)
V0 l0 |6 g, j0 A{ " h/ s4 J/ `+ O+ ]. b: I
minite=0;
. B6 f0 \( r5 i& Z" L7 x( C; w) ohour++; 9 \0 `6 p8 l% v) q5 C5 B$ T/ e
if(hour==24)
5 }4 r" V) Y7 U) q) N{ 9 f9 i8 }+ m! y0 j1 H7 z: G |0 [
hour=0; ; U( M K4 o! R5 ^
} 7 V$ i4 m, h! r+ V* p; J* g
} . C* Y& w& c$ [5 Q9 i+ P7 W5 E
} 6 r, R1 o( k, G6 H$ D! a
dispbuf[0]=second%10;
, u: O: q& a+ @$ k3 V. T9 h3 s: gdispbuf[1]=second/10; - V8 u0 t4 w3 l$ V7 K3 J9 t2 w
dispbuf[3]=minite%10;
6 A( k* }. Z' D* m' N6 M: N* ^dispbuf[4]=minite/10;
* t6 I& p& v3 J, H' W6 r# N, rdispbuf[6]=hour%10; 0 p/ b" F/ k/ y( S1 ?; Q5 d
dispbuf[7]=hour/10; 0 x! w- Z- i# G
} 3 R ?" e; w$ R* W E
} |
 手机扫码浏览
|