搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
! ?2 `& ^ {8 B! w7 L2 i6 B
- T& O; i) e0 L6 \2 t9 g t) n/ |8 e: L' p3 o
3 ~/ K" x. u6 a; l @/ t; n
9 g' E( o! b& b2 |! r+ E) M9 T v+ ^$ u5 F' V+ o" t' [& y
3 L9 [" W4 l7 T1 u5 Z
demo 的代码在这里
8 N; N8 V' R+ q. U0 D2 G! U/ s; u) X5 R& R$ K
4 d- c. r8 m" |( l#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器3 o9 k2 e" q9 {2 |
. j3 M5 F0 V8 z# f8 ]+ @% L G& qsbit yData = P2^0;5 z* U2 L5 a* y2 M! H" r3 R. H
sbit yDLEN = P2^2;
9 p! r% z3 J" X% C tsbit yCLK = P2^1;9 C$ [: v3 ^& {4 C( y% l
const int dailyCount = 200;
5 B+ l* x) y4 A" b3 l0 a
% z y: ~7 g O1 p, v% R& Y* `' P
5 H) \8 C2 V$ [) z, i1 ^$ B8 u: y2 ]2 L/ y) U
void delay(unsigned int i)& b' n, u7 ~6 F! H
{
2 t, m% ?2 F. r; L while(i--);
8 w" p7 ^! B' Z, ~4 X4 i}! l- w7 u& Z# i7 ]5 ~
- W# I0 y4 x. l4 V
; D# W7 l, z- W8 Y: a1 svoid disp(unsigned int num )0 L4 Y9 P' x4 z. E L
{; ~& X3 U+ M( v; x4 _
unsigned char i ;
9 c7 N" Y3 t( S$ `. b
0 E. @1 p" A u8 W unsigned char dispA[20];
9 E8 Y( V5 r& O$ J unsigned char dispB[20];
3 q' A- r) h+ C0 u$ w
* \$ Z6 M6 T+ |/ Q R unsigned char num1;
7 i" t5 o5 n3 G. ]; b- Q; r, H unsigned char num2;
5 X% N. H3 }1 g" \$ R unsigned char num3;/ g, k" ~' j5 s: N% g( `
unsigned char num4;
# Y q- ]% s: @# x P" P unsigned char segR[10] ; //右5 m6 K8 b% u7 s. }) H0 P5 h
unsigned char segL[10]; //左' R0 b3 S& u0 _8 u/ Y8 c( B' C
! `) o9 c! D: ^) h
//左
% y" F$ Y& _5 L [5 N segL[0] = 0x12;, _8 @! t8 {. a, H0 Z' X1 Y- s
segL[1] = 0xFA;
9 X8 `% n% U) i8 g segL[2] = 0x0E;
% l& b, ?# u1 l5 `1 P$ o segL[3] = 0x2A;
6 e/ i4 i8 j; P/ r, p1 q8 ^ segL[4] = 0xE2;
e3 | \! h z l1 \8 \& d$ d segL[5] = 0x63;. H" M4 w: N. Z& l
segL[6] = 0x2A;: ~7 e& K& k/ J
segL[7] = 0x7A;' t: F& U, b, A; s' t1 x) O8 B
segL[8] = 0x02;6 H$ F$ V: ]- r7 L; B
segL[9] = 0x22;6 ^% ^" e0 @* F6 z3 z
3 C3 ^" X7 M: f4 s 7 Q# x2 f/ p0 G r8 }
) ?' Q$ s8 B( i3 {% l6 n2 d) v7 \
//右! S' k# x* T5 l0 @# v
segR[0] = 0x88;
+ i0 T0 q- S0 s; @5 C8 F8 N5 O segR[1] = 0xEB;
4 d' v5 V; [1 d segR[2] = 0x85;/ d @8 t, b7 v
segR[3] = 0x83;! U2 u# d, j' g
segR[4] = 0xE2;: z4 C P- y! i9 w3 b' `7 a4 x
segR[5] = 0x92;
+ b( N5 j0 m7 i/ ?2 o segR[6] = 0x90;
5 b" {: o0 ~1 ~/ [8 Z/ A segR[7] = 0xCB;( T7 L) @& p! @" K- i0 f' D1 O
segR[8] = 0x80;; ]* g2 h4 x3 f0 U' N; U: K
segR[9] = 0x82;
: p( T2 y5 d' u# J9 d) N. C2 A9 O' T# w- m
/ J7 k2 }6 `, N
num1=num /1000;
& [7 }; z3 e( e5 ^; {, D0 R num2=(num /100)%10;;
/ A- j7 X3 Z! s5 w0 U$ X" X num3=(num /10)%100;;;
1 e* w* x3 t, O( F; d" S. k; g num4=num%10;
' n' ~; V; P! _/ O! k- d
0 U9 d) x7 ~' E- H; G6 ]+ j' w% q
8 Z: Y I- s5 t3 F; {3 H% f2 k% i7 Q) q: N4 q( h
+ V# G) u- F. p. ]' e6 j- Z
dispA[0] = 0;# A4 U; ?( g, T: D! [( C; ?6 @
dispB[0] = 0;2 H0 M/ D$ A3 x
1 O. s1 X9 E/ {3 Z4 C3 I0 ]* Y. k
6 m* q9 c/ h& T, V for (i=0;i<8;i++)
7 V" c" B8 E6 s& {4 f+ _/ W {
+ i* K$ e& I3 Y( ? i9 _ dispA[i+1] = (segR[num2]>>i)&0x01;
/ A8 O2 Q1 [: V dispB[i+1] = (segR[num1]>>i)&0x01; ; R- [8 x% I0 @0 m3 D' j
( ~, ^( I3 l0 M% [3 q9 }
dispA[i+9] = (segL[num4]>>i)&0x01;, ~: \$ z& Q2 l* E' F
dispB[i+9] = (segL[num3]>>i)&0x01;
4 `2 @9 {/ a: `3 M, {6 N4 E5 ? }+ m4 U8 O7 o9 V0 ]5 \
3 ] H, f2 g& l2 b1 K. J* k; r M
5 Q* b) e* b% ^+ H1 ?/ ^! z
; q V2 U: D' f2 |& y dispA[17] = 1;
# A' n2 X! T7 j: S7 V1 V6 w( s dispB[17] = 0;
2 Y& R6 w, E( q/ d& b/ G+ g6 x1 g$ A3 I% o. d4 {4 o( k- g
dispA[18] = 0;
7 b7 H/ O# ~, t5 ? dispB[18] = 0;8 B" V# U# U4 O
0 w3 E- K% x. g dispA[19] = 0;7 Z0 J% y# B0 |# r% W& l4 s9 ^9 Z
dispB[19] = 0;
! [* Q% c. }7 z1 V8 c# t' z2 f G# ?& u7 Z* A
yCLK = 1;
( I' H a" q' F6 ]0 w) [9 B7 y* m. L I- R; n" p, C
2 h9 o% b5 B% A8 i
! o- W2 a' A1 Q# ]* h for (i = 0;i<20;i++)# o& q/ u5 ^3 g
{
2 @* u* [1 s# E, j- W/ y yCLK = 1;5 A! x/ M/ V$ b
yData = dispA;" t/ I, y; S9 \# i8 I/ b" h8 n
delay(2);
" S: C0 _ I" Z% O8 c if(i>17)* Q0 \2 b1 V. O& R& E: V0 |
{yDLEN=0;}5 Z- W# k1 @: v) o+ ?/ f
else
! {# `: P2 L& c# A& t {yDLEN=1;}
6 |+ p l3 F- x5 F* n
3 f' y ^; N! q" ~ Z0 f delay(dailyCount);. L p& H: @& k' x
yCLK = 0 ;5 \* b# C2 s, k/ r
delay(dailyCount);
4 O6 x( `! X H/ |/ u7 E: q }
/ w* H! B ^' A2 c
$ _( W. z! ~2 P# ]7 g9 e( v/ Q yCLK=0;
, {7 ^( O( `& z3 Z$ Z1 v yData=0;, G5 w: n) r" ^
yDLEN=0;# v0 E, w. o+ n4 E, T
delay(dailyCount*10);0 q$ r& [! b/ ?4 {7 d8 W
6 `8 l- z( j% c! P% }! D, o! j( G; ~4 @4 h9 x
* C1 I9 R: ^+ W3 m7 b7 Z
for (i = 0;i<20;i++)
, n/ f( C& ~4 o; j; s( c1 W! H {! S* {; d% n5 A3 Z
yCLK = 1;
* `0 _$ M+ {& J% E yData = dispB;! o8 L, s. L! w" E: N/ ^ L8 y
delay(dailyCount/10);# D$ F. s3 u! u _. ^( n" h& E
if(i>17)) l/ a. Y) ~; [4 U0 u
{yDLEN=0;}5 M# q5 U2 n$ m- y7 ~% @
else
5 E/ m9 _3 t9 g' j: a: G {yDLEN=1;}; T& q Y K% O) b4 a: K( [
, N2 R4 |- h0 T$ N delay(dailyCount);
# l2 T, ]4 W: v1 ] yCLK = 0 ;5 _& [# E0 u% v2 R( [
delay(dailyCount);) Q: A8 t( M" p% l( L1 W7 q! t
}
t" |; \8 l/ {1 ^' Z! P* ?
$ s' T2 O/ _8 x. f yCLK=0;
& H! X! F% h) u yData=0;
% {8 Q3 d! @% |+ o& p5 k- b0 a% j yDLEN=0;7 I( B" v8 z7 `6 r9 Z) m
delay(dailyCount*10);6 j* c# Z4 I I/ M7 [4 `
}
$ g$ q6 @( @: f% h; n6 ^& `
& |. c2 _; ^* b5 q' f; _: K+ J: x) @$ ?; w" e3 I
. t, f2 X- v- ]; P7 s' P/ G' l4 |
) X& ^* [/ H. C6 M+ X% Dvoid main() K# F( x7 r) t" ~' |9 S
{
- p. D# L$ H4 h5 A$ ?0 w8 a& t$ z while(1)+ q B7 v, l7 u6 t3 A" d
{( E6 W3 L/ `% i) O7 T: Y
delay(4000);
+ q5 ]" B+ J& Y+ P$ b' h disp(0);, U) u& U/ X# w3 @1 Z7 V4 X
}
# q! F( m& P3 E1 d4 i4 o/ i( V}
7 k% N% [7 c# m6 ^) p( L9 ^; a: ^! G+ U0 ?6 i. _; |- M
& I% o, C. K4 l; O2 k
|