搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
- F1 l2 n& s( ^2 T1 m
& p3 C- I1 Q2 y2 X; G3 [! @/ p% ?6 d9 f
4 I. s( e! \: W; b% Z
) d' [/ ~% ]5 }. c! \: q- ]* O
1 G1 s) A1 A$ I9 A2 O- a# G5 t% \5 T; h7 I
demo 的代码在这里
. o" R3 i% R5 N0 p; w9 }7 n
" L/ T9 m4 y0 F. I/ L7 h: a5 l3 }8 n& S1 l" H" v8 {
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
8 `) ^* j& ~ P& n& r4 @) w' m
1 U8 F8 [ V" H( `sbit yData = P2^0;
; i1 S6 B5 M1 _3 I" o1 @4 ^sbit yDLEN = P2^2;
3 v% J9 F/ s h$ E3 U, _sbit yCLK = P2^1;& _, }# f f3 }1 h# T' \+ w& E
const int dailyCount = 200;
/ t3 s q% |3 o& \ P9 \* A) t- a0 }3 D$ t" M: C6 p
) ?9 i4 i7 \$ |6 Y
$ G5 \6 X3 B9 t dvoid delay(unsigned int i)% C) b! q0 N! R+ d3 b1 } a2 E2 i
{; k, I1 ~8 {, P" K
while(i--); ) _5 u5 y! Y: S3 e* C! f
}
$ x( y, [6 F3 b, \/ a _7 P e: U+ _( N
7 ~8 W8 P2 O3 Q, B" |
void disp(unsigned int num ); j }0 u; [8 Z! n7 \% k" W. j4 N
{
3 b3 \) g& F) y9 G( ?; F unsigned char i ;# x/ ?# z9 v) @& H/ ^
# p' V# G4 ^7 r& o
unsigned char dispA[20];
- y& Z. q1 ^( U5 Q: W0 `. t& }" @. L unsigned char dispB[20];
6 u. O; i- k+ e0 v- l" @; @3 G" L3 g" v7 \
unsigned char num1;
7 p: ?4 T0 c# v' \# I$ w8 ~$ I unsigned char num2;
7 I% B5 d; C E2 q1 p unsigned char num3;
. p% N4 ~9 S5 z+ h- x0 U unsigned char num4;# M9 @. y# ]% T) U; E/ C1 k: s
unsigned char segR[10] ; //右* S' N# V' [. R0 [8 S! L
unsigned char segL[10]; //左
2 Q2 S p I/ @+ x( Z$ e7 C
; ?4 q1 V3 q) C# ^' Z //左 / l8 N6 k) N8 r
segL[0] = 0x12;, Z8 D; J& Y- [" A4 z7 k& U: n
segL[1] = 0xFA;) c' I- R) x1 M5 i* n
segL[2] = 0x0E;
. S; I9 M2 X3 _& f segL[3] = 0x2A;7 D" K8 }8 M( V) N8 L, B! h
segL[4] = 0xE2;
( |2 F! G4 M- V; F' ~ segL[5] = 0x63;
u5 ]; J- N8 |7 y. B segL[6] = 0x2A;
3 A) F7 f# i( Y* [) R segL[7] = 0x7A;
) U" f5 r' |4 Z0 h" G2 [ segL[8] = 0x02;
* `' Z7 ^4 x2 Z3 ` segL[9] = 0x22;4 t3 R1 n7 u V$ p- M: a) J6 N* D
/ K( c" G6 { d p1 { 5 A6 V2 B0 _2 r+ _
7 ?/ Q& D4 @, s! i6 F4 @9 D
//右
$ `5 G7 C1 H+ W; w7 i. c L: [ segR[0] = 0x88;
7 H5 }) y! [! ~, g0 @2 P+ C segR[1] = 0xEB;- q& Q" {& |8 W) H: @4 ?3 H
segR[2] = 0x85;
- t9 x3 `1 K) \# w$ f( K segR[3] = 0x83;
2 C& c% ^/ `5 c( X m4 H' \ segR[4] = 0xE2;
) ]7 `( R) k/ N7 B, S* _) G segR[5] = 0x92;
5 q3 W( Y8 a0 E0 w segR[6] = 0x90;
4 r+ A% M6 ]& D, o" D7 w5 X segR[7] = 0xCB;3 p2 L1 v4 H, j9 Q A5 g+ X- D
segR[8] = 0x80;4 D7 V0 |! Y2 s( r* S4 G2 U% M
segR[9] = 0x82;& M7 A1 f2 P4 N
/ W: K7 f* Q8 f& ~3 c8 I S5 p/ E9 {) Z) J. i3 k
num1=num /1000;
! a) l* m0 K% k' H" I+ F( p- ^6 ? num2=(num /100)%10;;
/ m s7 |3 F) |5 @" y" `/ ~ num3=(num /10)%100;;;
! y( a# x) k# W# K num4=num%10;
$ |* n; p" {1 y* F7 c- I( E6 x0 K% b, {# x
7 w: o; D, e% R( Z2 {4 f9 O
" x9 m# B. `5 _- G& P! Q9 @' _$ X$ L% \! W* K
dispA[0] = 0;& F; o4 _9 ]0 d% M/ h% X/ r" G
dispB[0] = 0;
5 C( R( A2 a4 a9 p6 D5 E. m( s1 i; r4 Q$ G
0 O. V& ]* J& [0 z* c for (i=0;i<8;i++)6 n1 j# \! q; o. G) r( |
{0 E4 p; M6 L) k* ~: a2 B
dispA[i+1] = (segR[num2]>>i)&0x01;) N7 X7 ]4 ]" q( H4 P4 Y! ^
dispB[i+1] = (segR[num1]>>i)&0x01; 8 l# ]# |8 \1 C! \8 Q
+ W* a& H1 p& P0 j( Q0 l7 Q
dispA[i+9] = (segL[num4]>>i)&0x01;
N) D9 h+ W. v& |$ d* E8 f dispB[i+9] = (segL[num3]>>i)&0x01;
: q5 k3 C2 P [# l }$ g. R' Z, b: N7 @4 W1 N' U* n! t
0 n0 d7 ? m/ S" v" j
6 E' N. j# y ]1 e: |' F; d: w
. }; k: Z7 \" x. O dispA[17] = 1;+ n2 m+ Y6 ]2 a. n
dispB[17] = 0;
" ^" P$ q* d& a3 f/ R0 K6 {% [
dispA[18] = 0; l* u+ Z+ L$ R+ _( E
dispB[18] = 0;( ^; }5 E+ ~' q
- \2 l5 a4 M Z- q6 L dispA[19] = 0;. @5 k- L& ~" G$ J
dispB[19] = 0;; y) D1 L. U1 w& s0 S! F- x
: T# Z: b- b$ J3 d yCLK = 1;# m7 y7 I! ~4 o- O. [1 A7 g& @( P
. j1 Z# F( n. b6 y/ }2 [
9 c. z% d& u |/ C, f, H, A
6 g( E9 j; e7 X9 x, s$ a' j' H
for (i = 0;i<20;i++)
- n; H5 R: }" Q9 n% f; w# O; ?9 x9 h { o4 z: t! H% c2 i! W. x; `% ~
yCLK = 1;: Q' X) O: |2 q1 H# }. |0 o/ ~
yData = dispA;$ @3 t+ l6 M. s3 G& Q$ E
delay(2);
$ L& w9 W+ f! C* S if(i>17)
7 ^; ^! T" Y8 i6 B( N) ^ {yDLEN=0;}! Q+ Q9 a3 ?( e; ~; e2 l
else; l; w4 J# M; q2 g: v; O8 s
{yDLEN=1;}
+ [, F! L. \: P
8 P3 _9 G9 p1 |$ P' g8 ?$ {( e9 d delay(dailyCount);
8 u! O8 B& y1 i! C/ ^ yCLK = 0 ;3 S& `4 H D' I# J+ H
delay(dailyCount);5 n$ n/ y9 m7 D$ ^; [% B" X# {
}
; D1 r u/ @" {7 s, }: W$ n$ c7 I
% I) c% d- s0 a1 X. v yCLK=0;0 U M, n4 N- Z
yData=0;# q8 u7 Q. Q; r4 n
yDLEN=0;6 o0 M" d7 ^5 D+ }( O
delay(dailyCount*10);4 [2 o7 q9 z- l0 b& p; e! \
5 g9 k0 ?7 L- l8 I0 F
7 f6 B2 f! H) @- N z6 x t i! w* j$ l0 H
for (i = 0;i<20;i++)) c" Z0 A- d; s- I$ M! H+ g
{2 K" ^0 f. E( Y# k# D0 m7 R
yCLK = 1;$ t9 B$ g# ]8 z# ?
yData = dispB;: e7 d' ^; N* W5 l* R; M1 ?$ B
delay(dailyCount/10);+ i( F1 n2 L0 m* T" A* ^+ H
if(i>17)
: c' V& A9 M, U. t4 i/ | {yDLEN=0;}
: D; w8 a, }1 B/ S' } @ else5 Z' B. r; x3 t! e
{yDLEN=1;}2 {. }4 B2 t0 V
8 T6 j# q' g' P4 S5 a delay(dailyCount);
; ]5 N% c& M, f2 w' Z* h9 f- [% Z: Y yCLK = 0 ; g4 [! l! g& E/ [7 {0 T
delay(dailyCount);
, A: q0 E7 b# |! s* ^/ h( M }1 t; p8 C, p0 u+ O6 j' Y3 x
* T+ b& O7 I* H yCLK=0;
' i/ G/ e1 Q/ ~5 q6 V: ] yData=0;% X* h8 k1 u% S. ^8 @5 |
yDLEN=0;' N2 h b) v! q) U! Y
delay(dailyCount*10);) e/ m) h% Q; b. v7 l
}
# V) w' Y, l( p$ c6 A/ e& u* u+ n+ X% z x* T
6 _' @1 r! ~9 i! z: K. i7 A* I9 J3 ]7 x
1 x$ ?( m3 t. [. N& K4 e/ U1 m7 Pvoid main()
/ u0 C) l! K. Z3 {$ X+ Q) w- n8 x; A{
8 C* W$ F L" t% m4 E! T4 G while(1)) H( w+ n# w8 C0 r! ]) |
{
- g$ k9 `! n6 ~ delay(4000);
1 ^9 J$ F7 v+ w$ ]) T disp(0);
7 ]8 l2 \* n' ~7 E& N7 b6 T( _ }
" ~/ P2 C! K# `0 J2 a* ~& C}
3 I$ Q6 ~, q: \6 ~& f. k+ Q
9 o9 Z2 I7 @: U- \" e8 f0 O: _7 X) W! U
|