搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
: f) b- Q# I- T" l9 |! V
$ n* w) _8 \+ z0 R, T* }. u0 H F; ^
# G, H$ U) Y/ Q6 r' B
2 u- e; `& b% E4 x0 x
3 c3 P# I. t3 [8 H4 i2 V+ Q: v$ o
& Y. T& k4 F8 t1 O0 Edemo 的代码在这里
s9 i& u. i/ K% o; e! t2 j3 K& L4 }3 d# w2 f, M
8 N$ v3 U% G, B$ v) n0 `
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
9 w/ F4 D9 |0 K" s# W3 [
$ J: j1 l0 |! Z% R n" Z e) Usbit yData = P2^0;" [; Y/ ~6 q' L- E% E8 B
sbit yDLEN = P2^2;
9 E' o) n4 ~9 m' S' Bsbit yCLK = P2^1;7 w3 F1 R8 C W8 V. \$ `- m( ~( }
const int dailyCount = 200;2 t/ [! i% n3 _' v4 @) p
% K$ I0 \* [$ o4 e- j5 P/ T! z
5 _7 P" l6 c# _% X( A
# {+ M" i7 D2 {0 B3 c \/ Zvoid delay(unsigned int i)
* T: K ?; H+ G4 ~, `3 e{
7 f9 K* @7 U1 ]8 Q$ ]0 R# Q while(i--);
. s0 n6 p. U- a: L: v' @, Z3 h1 v2 Q& K}& Y% ^3 w4 o/ O- E
* d! |- x) R" M; ]8 k) z( ]! H1 T" g/ u4 H# d4 R P. U
void disp(unsigned int num )3 W. V+ U1 l" F/ A1 c. A; o# S3 F
{) q! O( t" J! s
unsigned char i ;
! p! F) P8 j! _2 i8 b- `* T4 U* o, {( X* ^4 p
unsigned char dispA[20];+ V* Z# p: ?# K5 a4 M$ U4 Q
unsigned char dispB[20];9 b* I, _, r# H7 P
; p8 o) [" l {- w) ?! V/ I
unsigned char num1;+ |, l& G$ r8 y/ v$ ` {
unsigned char num2; / O6 n: ~: t1 V2 f! u
unsigned char num3;
! @! S- l* b V- i& U9 R unsigned char num4;: E4 K$ G# d @/ f( v0 I
unsigned char segR[10] ; //右" `" ~9 S, \3 o: F3 v7 y
unsigned char segL[10]; //左6 {0 B* j; X: M( ?: W
& K2 }4 Q# F* [1 ?
//左
: U- ], l" D3 W5 @9 I segL[0] = 0x12;) w7 d$ `, s, c/ s; i e" ^
segL[1] = 0xFA;
. f( I% z8 e7 h4 j. N8 t- v2 S segL[2] = 0x0E;
& @6 Q* y5 M1 [2 x! Y segL[3] = 0x2A;, I$ j, e2 Y) I3 ]
segL[4] = 0xE2;! [2 f3 p' p3 T3 R; u8 n
segL[5] = 0x63; J- v0 T* R5 v3 Q
segL[6] = 0x2A;
" F. ~# f% K+ I: {- U3 b segL[7] = 0x7A;2 B/ W' g5 `) }! M1 {) `
segL[8] = 0x02;# A* a" O4 f& a
segL[9] = 0x22;. b# |) |3 U- ?2 T) t, L% \- V
/ {9 Q8 s. u6 A+ x0 V0 T
0 e, o a2 Q- l5 q6 j* ~3 M% y8 f # x/ W3 ^ W# X& J, J
//右
6 `% M K h" G( V6 Q g! J4 J( g* I segR[0] = 0x88;
; u& M; M) H/ l segR[1] = 0xEB;1 m+ |$ v S* D7 }
segR[2] = 0x85;8 j$ G$ k. k2 L4 L3 ^9 m1 G9 J8 N
segR[3] = 0x83;
# [! l0 x i1 O$ Q segR[4] = 0xE2;2 K9 A3 }9 q0 o' @
segR[5] = 0x92;
2 S8 _0 w: ?2 V0 I# F- O+ m segR[6] = 0x90;+ Z4 X) C7 `" j9 j# ~
segR[7] = 0xCB;
( {, z6 x& q0 G* W4 H segR[8] = 0x80;
; Q( a, d# Q% m$ d+ C6 \& {; h segR[9] = 0x82;
o! i8 f1 i9 y# {! j: z# v
# z6 v) E0 s% q. M5 |- v8 W1 O ! i" {" l, h5 N3 l. p/ f: f+ S8 U
num1=num /1000;4 C2 z. M$ N$ r5 P+ \
num2=(num /100)%10;;
/ s! [: S9 m) |! h; c" b num3=(num /10)%100;;;& A7 U& ], l2 C0 Y# I9 j
num4=num%10;7 _$ ^! ^5 t2 K6 z9 A6 R. G
7 X. p* u6 u, l+ i8 }% J3 q
6 |( V& Y! x% L- ~4 t, ]
) [9 w# t( \! }* g" i2 \* q
4 \$ U% r; t! A' A" [ dispA[0] = 0;
! [6 k8 J( L, L7 D0 S: I dispB[0] = 0;8 j% E+ C0 D; [( A" G) _$ ~
: }0 r4 K- y- y# v$ }. l
5 S$ B D& b) n2 A for (i=0;i<8;i++)
$ l3 E2 I; x2 ]; A$ B {
- l2 N" g. Q& ]4 k8 _7 D dispA[i+1] = (segR[num2]>>i)&0x01;
' J1 W) Y& l2 x8 b/ @ dispB[i+1] = (segR[num1]>>i)&0x01; ) c" H- p8 w6 L' m
& }1 ^ a8 G: s9 V
dispA[i+9] = (segL[num4]>>i)&0x01;3 h" J5 ~+ l: f6 j
dispB[i+9] = (segL[num3]>>i)&0x01;
" F6 \! V0 f* F! p- H; c0 Q) s+ T& N8 p( e }
! [3 ?0 K$ a8 E _4 g6 G; u% X3 t ) h5 z* }8 r7 _" e
3 \# C: [2 f* V- w3 e: I. s& J, A ~ G
9 w7 h7 L3 [. R. t4 i
dispA[17] = 1;
+ R* ~6 V9 r0 L; w dispB[17] = 0;+ |* }/ y& X3 L( {: Q
! e& x7 s) k/ s' h0 l* r dispA[18] = 0;
! q, [! E% i* K, ]) [/ i+ A dispB[18] = 0;: Z* J. R6 W P5 m
0 i. H5 @) q1 s dispA[19] = 0;
& a3 A& J# F, U9 s3 I! G- |$ ^* u dispB[19] = 0;
* _0 O& p' P' K( a
) n- v+ v# U3 C" k3 o yCLK = 1;0 O2 P) q0 l, F ^& y
2 y7 R3 D. z( a9 e' U
7 ^. W8 y8 l6 z/ C1 t# a$ A4 Y) O/ i. i. M0 f. l. z
for (i = 0;i<20;i++)4 M9 P/ b/ }- L2 [/ R
{7 U$ v2 ]8 G+ g
yCLK = 1;: A9 ]* k; x2 Q# i/ ?/ t; D
yData = dispA;! s! K8 x' b* b! D& b
delay(2);
' I3 g! [1 o" v* } if(i>17)
5 |; D' i8 } h) X. a! W {yDLEN=0;}
+ ^4 |$ w, d( l" I else
+ [) W# ?1 |& A+ Y {yDLEN=1;}
$ W( k( }5 X2 w! J$ |2 E' }7 |: W
, p5 O3 `- v4 c9 j& J delay(dailyCount);9 h- Y2 g* g' U7 o1 l. ?3 a
yCLK = 0 ;: |7 \' N ^" Q9 L2 J/ S9 Y
delay(dailyCount);
: |2 V% E$ D$ ^9 T5 b/ x( D8 a }
* \6 S" r( g( d. n; ]& M2 J9 w( u/ X J
yCLK=0;6 n9 k8 k! d$ k$ s
yData=0;
* L/ g, G5 a9 o7 \/ K' `/ s( B yDLEN=0;
1 C, E6 k* {+ X7 d: x( r delay(dailyCount*10);
" S: w2 ~0 I2 }3 |7 u* M# L
" r; U4 D( _/ u2 b4 V6 G; \+ |0 G, L8 O7 R
; i: w) W$ c! M5 H& \& |
for (i = 0;i<20;i++)4 B+ Z! a( l" `, `! ]! P
{/ T4 ]" x% g" i5 h
yCLK = 1;. w$ X) t% N* C( G, |# c) ~
yData = dispB;1 Y3 E, D# T' b6 `/ |3 e
delay(dailyCount/10);
. R" k8 }5 J, K8 p7 D1 x5 l& o if(i>17)
0 v- Q7 u( f! V# ?% D. l {yDLEN=0;}- ?0 I, Q; q) w+ @" [- u6 A# C4 Z3 \
else
: @6 ^; V6 `* {# K/ A. U {yDLEN=1;}/ ]0 s) q1 ?3 s8 D6 {
; @- t }1 T, F/ } delay(dailyCount);) w) L) q$ V8 G9 o
yCLK = 0 ;
+ E; P7 e: P8 l/ K( J delay(dailyCount);
* [! B+ a+ h; E3 Z }
1 l' L" W x; T7 y$ {7 O4 s! V1 L y
4 f8 w3 O9 O4 h: [8 U# f, r7 q2 b yCLK=0;
( ?* [8 w8 |/ ~* `+ J u yData=0;
; {4 ?8 c+ v$ ]+ Z& Y6 H0 `/ X yDLEN=0;9 w$ S/ L* M3 D" J" a. e
delay(dailyCount*10);
/ x+ a9 i O! J1 ^: D}5 Y7 \5 s9 p9 O0 ?2 k0 M
" C( `# c" D0 r |: \* |* {( x- `3 X; g- z; Z& A* B4 B- l4 @
; b h0 X, \/ N
- `# I& M' f4 {- W
void main()7 d1 ^& T6 V; r& u
{0 x) l2 g6 Q) k% K3 \ x$ [$ w
while(1)
6 \( Z/ t' U* C% q) p( V* m {
4 w/ l7 i$ B+ b0 P2 z delay(4000);& i. e( X6 i" N, l
disp(0);9 C+ j, ?& J8 m; x7 y, y
} $ T2 O/ O% N+ C0 Q/ u
}
" _# G: b# W4 S2 P: ?
6 H/ U7 x x2 l; [5 `( i3 z+ L# U+ T
|