搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
2 K& A0 Q1 J( f, q( M) m: g0 N+ B' S* R; V2 r7 Y: o: S: a
5 g+ p" \# ?5 J8 O* L$ s0 |8 R# z6 ?
5 o, g7 f5 G1 ^! e0 w0 g; }+ X8 @, a N" J
4 [6 `+ Y' S% |) h
$ b; v: M% U) i, K$ a1 Q! y1 w4 jdemo 的代码在这里0 `, I! I9 f# u9 S: }
% F0 C/ ~' N: ?) W1 @: Q2 A
! y4 Q% [1 @+ y2 c3 p, d/ i$ ~4 N( f#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器) l, U6 g+ @ L- _
7 f& g2 U. o7 v- P/ e, u6 {
sbit yData = P2^0;* N9 `) t |0 `1 g% ~) w
sbit yDLEN = P2^2;
0 f! X& b2 Q* S4 W5 L( Psbit yCLK = P2^1;% O- \: S$ U& t# ^
const int dailyCount = 200;+ X+ F" C& W2 ^; _$ w& z
) n6 @" o% H% v; P) W- u' |6 z; z2 O6 D G
L" B4 @2 G# ~; B
void delay(unsigned int i)
- D# i2 I: ]4 y4 e( V( g5 b- n{
6 ?% n8 L0 k: d while(i--);
, q( `3 V/ C$ f}
# S8 Y( e r) i/ R) f% b, }
7 F6 S0 G4 _" q6 U0 u' S% g
+ O- m0 G% P) u4 Y/ ?& |( J3 s! ]void disp(unsigned int num ), g( p! ~, D, n1 k( a+ y
{+ J& Z0 X2 T$ W: v; O5 a& `# b
unsigned char i ;
3 X8 m! ~, G# A' O- c( l/ Z* u1 K) R3 J) d7 e) t' K) D
unsigned char dispA[20];% t! l0 m) E0 ^. e3 [9 p: X7 a
unsigned char dispB[20];
7 A9 @5 W/ h! N# M) a' @0 Y7 G- r3 G9 W# ^2 m8 l% `2 _# G0 k+ ~
unsigned char num1;
4 O2 i5 }0 w! w, u/ n# g5 {1 C8 G unsigned char num2; 2 [ U, _8 p9 M2 J1 L
unsigned char num3;
) ~3 b/ O+ @, G4 y2 v+ j! Q unsigned char num4;7 V/ A0 {4 f+ W6 x* r6 p S
unsigned char segR[10] ; //右, }/ L9 G. S8 b5 t
unsigned char segL[10]; //左
1 p2 k. }# N( j4 a% ~. y9 a5 c
0 ]/ w! y+ @- g$ @# d0 I2 O //左 7 ?% o3 ?: R6 b* o
segL[0] = 0x12;
* {8 ]$ X* b) x; |) N segL[1] = 0xFA;
+ f3 d7 o! Y% H( E segL[2] = 0x0E;
, v; B9 o# H0 w$ f9 a segL[3] = 0x2A;: u7 l, k* w5 a2 Y; [; h3 ~7 K
segL[4] = 0xE2;
6 a; [9 U, C7 ~ segL[5] = 0x63;4 u3 O5 K* h( P2 w; c
segL[6] = 0x2A;" F# N2 q" y7 i0 I: H7 e
segL[7] = 0x7A;2 E( h0 O4 d6 V" g0 F
segL[8] = 0x02;4 O _9 B7 E- R1 {1 t/ e
segL[9] = 0x22;4 O: {/ @" E( C: K y% B
. I) T/ w$ j+ I5 w
/ n9 W2 W2 I' O3 q% X3 q p6 ~2 w+ C9 H& \: Y4 g% b
//右% j% y; `1 M: R! ?2 H
segR[0] = 0x88;5 l" a1 E& x. s, I
segR[1] = 0xEB;
- _' `+ g) A) o segR[2] = 0x85;3 ]: |9 c- c1 a1 M$ G. u+ G
segR[3] = 0x83;- S/ k5 [. v j1 }3 v7 y
segR[4] = 0xE2;) Z9 n. q" k- S" G* b" E/ P
segR[5] = 0x92;
5 d' f; r. j; q7 V segR[6] = 0x90;
. w3 l& P4 ?. O segR[7] = 0xCB;
6 ]1 r. L$ e9 H segR[8] = 0x80;
$ E3 i+ G, e/ B: u6 ?3 p2 e# X5 M segR[9] = 0x82;
6 I" t( v3 y- O" g( }/ l' |
# z8 c( G3 e$ c! ^8 [ M( r 8 `% ~! k! e% h" D" c" K' l
num1=num /1000;
8 Q& v" p7 W$ \9 w6 j, s/ H, S7 f num2=(num /100)%10;;- a. ?4 b' }2 B9 ~( P
num3=(num /10)%100;;;) I8 p& x8 G# Z
num4=num%10;
; G* ?4 o! `+ T4 m7 \* G" {6 Z( N0 q% Z0 f- B( Z
: f. L7 e( ]# T! @
0 o: j" L& I# m* }9 i! V
9 Z M3 ?0 ^/ ^+ ]7 b2 Y- v3 \ dispA[0] = 0;
4 g5 @5 y' v. _8 y5 p6 Y; i3 K dispB[0] = 0;3 P' n9 n) H, j* I
9 K4 ]( ^; Y7 V
6 l7 v- T# J. e6 A
for (i=0;i<8;i++)
9 b- x% @: N2 M$ s: e R' _9 o {
% L$ _& L, [. p+ z1 Y dispA[i+1] = (segR[num2]>>i)&0x01;5 g' J( m$ W# z/ H# `
dispB[i+1] = (segR[num1]>>i)&0x01;
) X* V5 Q2 g. `5 Z8 B+ i8 Z, G' K& H$ S
dispA[i+9] = (segL[num4]>>i)&0x01; Y! ~- @+ h/ W2 a& H B b: V
dispB[i+9] = (segL[num3]>>i)&0x01;& h% ` K3 @9 c7 A- n
}/ N+ G# T: ~( c$ N. X
- Y* V! I+ p6 n: k
+ X# C. b1 w3 r/ ^- B% Q! Q* M I+ ^. `, G: c% S: C
dispA[17] = 1;
! Q. X. P0 i/ K* m7 b dispB[17] = 0;0 l3 N. Y' s: @( D6 V4 ?: _( ^
/ ^+ O' S5 K& P2 C dispA[18] = 0;
2 b5 C4 l7 {1 _$ Q& d; L dispB[18] = 0;$ T# K0 V# W) c+ ]! j* ]
# _& Z- ~$ C6 @3 z4 M
dispA[19] = 0;* \; B6 n9 v- }7 N
dispB[19] = 0;& m" `- m+ y- G7 D7 U) j: z' i
2 T7 Q# ^0 j; h% o yCLK = 1;
* e8 f/ R# R( u. |
6 C- ]+ D2 `0 f0 f9 ~9 v3 P+ z( @% h: a) E: ?
: f& C& i E5 E6 ?. K
for (i = 0;i<20;i++)
5 \6 G& R j7 r5 g' a# C" |5 | {6 j! c: N" y5 i7 n2 C+ G
yCLK = 1;/ o& P2 E: M8 p/ L. y) Q' b
yData = dispA;
0 ~# U+ b$ E! t1 V. x4 k delay(2);% C! F$ m7 u- Y+ ^$ s0 d/ t
if(i>17)% T/ f, S( f4 @ n9 `
{yDLEN=0;}: Q4 W9 O6 \ w1 [7 C
else
( ~- c' O3 p o# P: R {yDLEN=1;}* i' C: x6 }! @$ R8 f/ Y
: ?# m6 M# e$ W) K
delay(dailyCount);% D5 I( m0 }4 `+ j: \- u; @- A' ?' r
yCLK = 0 ;
& W6 Q+ j6 x X+ W1 T8 @' ^ delay(dailyCount);
$ U9 [# W4 `: G5 T; d( j }
+ W. a- _/ [0 P' v( _, @
% y9 x, Y8 v2 J( B* a5 p; E+ q yCLK=0;4 i2 L% s! m0 {
yData=0;
6 d$ L* A' i* g6 n( z yDLEN=0;
, P6 ?" @. l% l7 l4 ` delay(dailyCount*10);9 {* R$ N, f+ J9 H; N
$ |6 j$ g9 r' _
& I+ [, k9 w& g8 a, I+ D
4 b+ H, w! x* g: ]6 \- s for (i = 0;i<20;i++)
4 D8 @- d+ h0 M% Z2 m! U+ ] F4 U {
3 E6 V+ P _8 l1 T yCLK = 1;
9 e j$ |$ S: E/ r* H' x yData = dispB;
1 [; v1 Q0 q( z9 k, \ delay(dailyCount/10);5 B! x, H ?! G; g; N% o
if(i>17)9 w: w) c" c* T1 J8 \2 Y
{yDLEN=0;}
! i! ?" N, @8 f else# L7 J7 i4 U6 i: y( V0 ?
{yDLEN=1;}1 D' {8 x5 p( q8 ?
) S2 A. _- v3 C
delay(dailyCount);5 f# R. N& M8 Y0 P5 C
yCLK = 0 ;+ `+ A- |9 p& ~' I+ X7 E8 ?" _
delay(dailyCount);2 H+ l3 K& x% J/ I4 j' R
}4 a# h; e8 v9 ~$ }
4 f6 J# M4 |, Q* E yCLK=0;+ }" ~; z8 v: T1 ^3 l3 x" U
yData=0;
2 V# O. W4 H& ?: W8 R yDLEN=0;4 ]9 | a0 n5 V; n ]0 f; _1 f
delay(dailyCount*10);" H5 Z! T' Z6 P& U( {$ I
} D& t# q3 l2 G, p* s8 K
6 V( s& [) k/ y9 X& C ?: N0 j2 r6 d
, @1 q- b+ o( @2 b$ `5 w
- C, |2 t% D" {3 U' q6 Wvoid main()
: p0 P3 b$ M0 K- D{
2 B* w" b6 B1 e4 u% ] while(1)( {8 p$ \$ R0 Q& z3 a
{. W8 H' s! {2 u3 f
delay(4000);( Z9 c% s' L* `& A- O: `) k
disp(0);
8 c' W: i& J; n* `# q, X C } / x5 h" j" T% i
}1 W9 F- N8 n; L
5 M- c+ o0 v" o
) h+ A3 ^) E/ d! T |