搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
+ v) W" i2 Z( m" |
. `6 O6 d3 z% u2 f' C+ G
: V5 ]% X9 O4 U& h/ F: x/ U, G
; M4 J( h- ~7 ^+ i0 V1 @' \
+ a, l, |# L9 p* a3 j
/ U# S+ q* J" ~9 L4 n# n+ ], m1 D- m4 A- w- J) R
demo 的代码在这里
( r* d6 b: ?' I+ g3 h1 d! w9 b( | L
# w7 I2 q8 v, e( ]# p% X# U
% u$ a$ v5 d" Q8 u6 F( V% n6 V* e#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
3 w4 P6 n$ y8 W) ]$ [
1 A+ o- S% e: \5 }! F ysbit yData = P2^0;
1 E9 F( k. N: v* }. {* L y) usbit yDLEN = P2^2;
+ s% A' }6 E9 ?1 fsbit yCLK = P2^1;$ f9 D3 l' s" |; N8 u4 J
const int dailyCount = 200;
2 W/ h8 V s( V) |0 v, v% X
2 O& p( S' U% }# R3 b, h n G; l( E0 t8 B( }8 G* \- z3 `% M
9 X( q# m. h( I/ |5 n
void delay(unsigned int i)
7 p# l! R8 I2 P) G- |+ q{9 W `9 w; ?* I, P
while(i--);
, Y- m7 ^! E! b# \: ?, x" ]! K}/ @! N, c; V: d& g, U
/ a8 |0 Z9 J, H: r* L8 j# a- U) ]1 q+ S
void disp(unsigned int num )
+ u/ Q. {% |1 d4 u6 _{
f2 b, B; Z- G3 I unsigned char i ;) G1 W+ K/ F6 w b
( @8 q: w; g0 b5 ?. K6 P
unsigned char dispA[20];6 _1 s/ t7 {0 _
unsigned char dispB[20];' {( O: e' C: }2 ?
( F7 L4 o/ H2 d
unsigned char num1;$ B! N9 _! n) E7 d7 Z
unsigned char num2;
9 O/ i$ V L3 f* U& b unsigned char num3;
( J+ Z) o7 S9 `5 V! v% f7 b unsigned char num4;
& N4 u" H1 q2 Z" W# ~7 T unsigned char segR[10] ; //右
; |& x8 j) T2 e- |" ]2 F unsigned char segL[10]; //左0 v" z" O$ K6 B6 g6 o
/ x; V9 T+ w7 K
//左
( G p: X& Y2 Z segL[0] = 0x12;" L8 S. e5 p1 a/ p' _9 _. l
segL[1] = 0xFA;
3 ]3 N' G5 `( k @$ ` segL[2] = 0x0E;
5 Q+ {4 |' v6 A( q) F( H segL[3] = 0x2A;: R$ M0 B7 C8 G
segL[4] = 0xE2;' L3 c% t- a+ S1 V
segL[5] = 0x63;: P* P Q. g' Z2 K! N& I
segL[6] = 0x2A;& D9 O" E2 K" A7 i8 V
segL[7] = 0x7A;4 \1 y, W& @$ B x" E) o" p. D
segL[8] = 0x02;0 f9 g: k3 N0 d/ o1 F% [
segL[9] = 0x22;7 g' o9 Q- p) e' o& ]6 Q, \. S& ~
, I. g4 z2 V0 o6 j f1 q
) D$ v) O6 `1 ~: p8 i- q # T& |( N& V$ y* L7 P0 P2 n5 W
//右6 V$ t- V2 x5 p7 G
segR[0] = 0x88;
4 `% w$ V# Y$ V' @) `/ R8 E segR[1] = 0xEB;
3 L& ~& E7 y4 W: Y3 r segR[2] = 0x85;
6 |- v: z+ [; j8 U d segR[3] = 0x83;* U {8 w1 N# |6 h$ O% U. S
segR[4] = 0xE2;
3 F; \! j7 i/ E1 e7 d$ V8 i segR[5] = 0x92;8 e# i9 {: M+ D, [; ~
segR[6] = 0x90;
9 d: U& y1 _4 b' k# k& i segR[7] = 0xCB;. |! t% J0 v0 p5 Y( ]7 q, _
segR[8] = 0x80;
% t R! c0 B o, \* U/ D2 w4 ^9 Q9 ^1 H segR[9] = 0x82;
4 Y( Z; R, Z/ I6 Z% T% k2 d& B/ F
9 M0 |; b* y# x( h7 f
num1=num /1000;
% N5 R/ L5 r- a num2=(num /100)%10;;
z% `# r# E* Z/ h num3=(num /10)%100;;;
2 o. w7 F! E+ K" m7 v num4=num%10;" d. z0 a! s5 W7 d' T
- h4 d: J" I8 g3 e: z6 h
) r* y. Z) \' ?; D! n2 S' ?; Y: u! o$ a8 X9 i) h d ~
% B3 p0 F E" ~
dispA[0] = 0;
! l$ o& {' T' b" h; A9 D6 X dispB[0] = 0;
9 z: C# K: H* g* E7 x7 n# ]
$ Y; N8 [3 y7 J& Q, }7 H, ?" {) I2 \6 C& R! N: f
for (i=0;i<8;i++)
# Y0 [/ _% @# K% z9 S* \: X {" ^1 T' |0 x, ^2 ^& o4 \: x
dispA[i+1] = (segR[num2]>>i)&0x01;
* u! k' g0 Y8 p" w, z2 Q- s: \. V dispB[i+1] = (segR[num1]>>i)&0x01; 0 F: a$ q$ G& J( t. K
' V2 A& h$ G: Y/ M% x: K
dispA[i+9] = (segL[num4]>>i)&0x01; i8 i# {% t0 U2 N* d H& S5 _5 U
dispB[i+9] = (segL[num3]>>i)&0x01;( _: x$ j" F) W" X' Z
}
- n w2 }& W! x# i; A4 q9 r
9 q* C, i8 E5 {% J; k) S$ k# i# O }+ s8 G+ \" ^* a- N. |
+ i0 y' v/ y. i dispA[17] = 1;
9 o! }1 U! n1 \, x# L dispB[17] = 0;
7 t0 M8 O, E& w" ^: ?& l3 Z( A; k0 R; o' V( V$ r) e
dispA[18] = 0;
, ?$ M8 J& e2 E. \4 S2 b dispB[18] = 0;$ }1 b( Z( R7 Y: @3 g' y
8 ]# @- d/ c: ~3 V1 M5 E( K7 {: w# p dispA[19] = 0;) \$ k* r5 N8 Q- g
dispB[19] = 0;
5 ?6 m: R% W+ Z5 t X3 R1 [, ^0 l/ S/ L
yCLK = 1;4 |: W# h, c1 {4 ` r
9 [8 y5 Q, D( E* U4 n( c1 `
+ I6 \ C& q! ?* U1 { _, |( ?" c' R! B9 B1 H5 m2 [
for (i = 0;i<20;i++)
; d; }) j+ A/ o6 k% ]( k {; \: q! u5 J# N4 A% u, U( ^
yCLK = 1;
! y. I3 o$ i# Z0 h9 ] yData = dispA;0 o; l$ P6 W+ o& p4 A
delay(2);' ]& i1 \& c0 t; X
if(i>17)9 k( ~: C/ ?5 F
{yDLEN=0;}
4 N; L; Y9 F" Z0 O else
6 q3 `, [3 B; J a" y {yDLEN=1;}1 n$ e) W: K: w& Q; @
6 z9 l3 A5 \' A) _8 v$ a8 Y- f delay(dailyCount);
' F: C4 d( ~3 [" o- t: F8 K% G% F% L yCLK = 0 ;' h$ ]6 e) J1 L2 Z
delay(dailyCount);
% H2 z" [6 N4 M$ j( x- r+ p }
, L9 H( ]1 d$ y; m6 k& m& E+ s- S; j8 o' f
yCLK=0;
- C' M( l3 k/ i. X yData=0;
' L A# a( R- T# m yDLEN=0;
: z1 A( \! a9 p' i' u, r delay(dailyCount*10);
- g( a+ N6 f, K, e3 d
. s( W7 }! R9 F0 k/ U% a3 O9 X' C
7 n% |4 _! i# h# \; f: m( |
# l8 t$ x1 ^1 @- [ for (i = 0;i<20;i++)
3 k( M# `$ o w! a {
: [0 w" @$ V: H yCLK = 1;
9 @0 c9 J) ^ f) [! G6 m; N5 u yData = dispB;% s- W1 @. K, b. L+ f2 f' f
delay(dailyCount/10);
7 @. G3 R9 @4 r# W; U if(i>17)
: L' R: t; x+ C* o. } {yDLEN=0;}: }7 I9 J' \0 t' G, N
else
: p5 h/ I: [$ N1 q) B+ n& x4 j' X {yDLEN=1;}9 B' ]" [5 D' x8 h
# ^- V/ t/ [4 e
delay(dailyCount);
' v4 C5 Q( x" A, t5 q0 F# ~ yCLK = 0 ;
1 g* U% [$ u; J7 j. N2 d delay(dailyCount);
1 \: P; ^7 N% k( G }! B6 d) H, o: w, }$ _2 \
0 O) m8 U, _, t( @& ^2 H. ?+ h
yCLK=0;
( p: V) ]" |- C$ P C yData=0; s0 T, |) B& M3 H% W- _: w5 `# V
yDLEN=0;
# \4 U, \# \- H- K' \7 @9 T6 a delay(dailyCount*10);
3 V, W; F& \ I) b# ]9 _; X1 c}
. ^7 P7 m" A& d& |' K0 v+ n4 [7 `6 u8 m2 m8 c8 l# l& F, M+ v
n+ U$ ^* N. e) N- I) O
7 X3 o' R9 i: [* E
$ @/ v; Z- r- G9 ]3 jvoid main(): C2 |/ V& K4 f1 y/ J( L* @# |
{
; T5 a( M" E2 z/ s! Y) Y0 e while(1)
! n- ^3 K* t' e% i3 c1 m2 [) k) H { O# Y( F1 v+ s
delay(4000);
$ U% R @ ?/ Z9 A disp(0);
- F3 o0 ?3 a% F- x$ ~ } ) a( W5 x7 ~' J
}7 f' x; G* v4 W$ R
9 i9 M* R6 G; m: f
$ E3 o6 A/ A+ s1 a T' s' y
|