搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
8 s7 h; g/ X" R8 U, o, s
& E* t2 n Z9 ]4 e$ N% s/ I$ ~" H! n0 C$ q
' \2 X; e- F* q# d0 V# e
+ K" i8 W9 O9 o: q
3 ~, \ U2 u4 F8 n" ~$ s+ Q3 m
demo 的代码在这里
1 |" H* o1 L- U; z6 v1 Y/ U2 ~1 ]& _. d1 O
, B' o5 G/ F0 ?: F0 c+ N" y
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
7 E3 V) h8 x% i( c- o& p6 w G
sbit yData = P2^0;
$ q! A# v$ F6 \0 x1 Y* e+ S. A% V8 csbit yDLEN = P2^2;, Q& n0 g2 u% k* x( [: b' t, D
sbit yCLK = P2^1;6 A' }7 p, q" e
const int dailyCount = 200;
& `9 |# M# x% C8 U4 h8 u( W- b' m {) D( ~# ~7 ^( Q e3 z
- M8 p# J1 O0 q# z) d" \2 S6 W
% B$ {- [/ o& s
void delay(unsigned int i)
( a2 h3 ]7 ?: r( M$ @{
6 [+ G) I) [ G% s while(i--);
' ~. b+ U a$ X: @6 t4 |+ ^; Q}. N1 J9 P- a6 M" D5 U+ c
8 e3 u1 a, a" I* B4 K
9 ~" G# O6 j1 U3 @- N
void disp(unsigned int num )
' M$ s* _& ~7 x. n' ~{
7 u: N( K0 g2 l E unsigned char i ;# p" O+ q- `) h8 o9 J: G; H/ ?: l
2 ~. X' s! a* e0 p unsigned char dispA[20];
$ F( M$ s! E* v2 E, X$ t unsigned char dispB[20];
! i! n( j0 l- v! k/ M7 c/ i
* y& h% L; F/ F$ l0 P; u unsigned char num1;9 y! T z/ n; j, U7 L6 d
unsigned char num2; / l, z8 Z2 g( l E7 _% }, `0 K
unsigned char num3;
0 W! M0 m* j; H, q! g/ B unsigned char num4;
/ R/ Y8 w$ p' X$ l7 H unsigned char segR[10] ; //右
- R1 z% G) i& a( u9 { unsigned char segL[10]; //左
6 u6 |8 R# r$ B+ M2 I/ l( K6 \- L
" o8 t4 o& [7 M0 | //左
$ T, Z# e/ F2 F4 m% l" w7 l segL[0] = 0x12;+ ], v' g) x' t) C
segL[1] = 0xFA;. @: @+ D5 O0 _- s$ _
segL[2] = 0x0E; q: ~! m5 n$ {
segL[3] = 0x2A;) U* g( D1 u7 k( q4 x$ m0 R7 v; p
segL[4] = 0xE2;
% B, f& D/ N" |1 f segL[5] = 0x63;
& q) l; t- F; N7 W* {0 h2 { { segL[6] = 0x2A;0 ~! }/ x" ?/ v; w! l
segL[7] = 0x7A;8 `, E n- l3 S* F# u7 Q
segL[8] = 0x02;2 X& [9 ?( m7 H. W. }, r3 j" l) @& c
segL[9] = 0x22;
( d; K N3 e f" A4 g) l5 R2 D) C ' O6 V: |' R1 c, l. o! ~' [
1 S R% G# a6 _- g5 d) h
) T" @( \$ | }! o. ? P* s8 e //右
- ~/ E/ H T# Y8 n segR[0] = 0x88;/ d D. d0 @! K! n# @ B7 e, n
segR[1] = 0xEB;& L! W: @( R5 Z
segR[2] = 0x85;: {' N4 v" l. Y0 R3 Y3 ~, Z Q
segR[3] = 0x83;
. F( j/ V, {- z$ } segR[4] = 0xE2;
4 \4 c7 h+ P' ^$ O: N segR[5] = 0x92;
& A. S7 | t: @ segR[6] = 0x90;2 c! T, u# J0 c n- j; B: P6 Q
segR[7] = 0xCB;
4 z6 \5 I5 Z6 z8 K; O segR[8] = 0x80;8 J* A* ~0 z% U& A% N1 M- i
segR[9] = 0x82;3 Q9 N% w; Y8 _8 Q1 \: O& \
5 p6 p1 k7 L8 ?# g6 m4 h* Y t # o/ `; y) Q( ?+ c9 |: x5 f, Q- v
num1=num /1000;8 n& N0 t, i: G6 |& ~1 G
num2=(num /100)%10;;6 Z, } Y! E8 T# E) F
num3=(num /10)%100;;;, B ]' A, O2 T, J. p0 n
num4=num%10;0 X! o7 X* n, M k+ c
; Q: c( \& Z6 j3 X' e& A2 X2 O9 ?" a+ u/ v) \4 z" D( @5 N( X
4 A& w8 a1 ?: k4 {! |. c
1 ^, }; |4 {7 O6 d dispA[0] = 0;& v& c/ g0 ]0 B
dispB[0] = 0;
w8 f2 i4 [/ x }* J, g, f6 u! r/ Z3 \* N
) d6 j) L9 K t N
for (i=0;i<8;i++)6 }, D6 L6 K; i2 e! Z/ P
{ n4 c5 X* E/ R6 _9 [
dispA[i+1] = (segR[num2]>>i)&0x01;4 g& F0 T. U0 ?8 n
dispB[i+1] = (segR[num1]>>i)&0x01;
) G2 B' E5 B( A) U9 S. a& u% z. X6 j, }6 W" t! r7 d8 j2 o& t
dispA[i+9] = (segL[num4]>>i)&0x01;
# X9 @1 z H0 m; }$ {1 m8 Z dispB[i+9] = (segL[num3]>>i)&0x01;
7 _* [6 {; g3 Q0 Q }$ o4 C1 j7 ?2 f. x! m0 O
2 Z# Z* l# L0 L8 }$ X) o* Z4 v
/ u* w y% h. b Q2 F3 P7 L) W3 f+ V( J' S/ \- F
dispA[17] = 1;- I- |' O! N; V0 B- P/ e0 R
dispB[17] = 0;/ H. {) E4 e/ x' P ~
- P$ M* Q) n/ Q& [# {! @ dispA[18] = 0;
! S8 G$ F% J2 ^ O dispB[18] = 0;6 R1 e$ l' _* E
& f$ F! C. O* P+ @9 y dispA[19] = 0;
, g. `1 b3 A' C( B! Q {0 U dispB[19] = 0;/ a* W3 r8 Z3 G. x& d
& N" Q) ]4 w0 f* z! c0 u" X
yCLK = 1;
# _2 }0 O4 Y: z% x E/ V
' j7 d, _# o5 r. r+ t F: e& p) i x1 r: y9 }$ S* ~
; `' @/ n# P# `5 b for (i = 0;i<20;i++)
8 u& k& D1 w3 F$ T5 I1 B {/ t \; Z/ ], g7 r p8 g4 e3 m
yCLK = 1;
. L: N f+ _2 [9 k+ u$ p yData = dispA;3 p: Z! I( K$ r9 G; s% [
delay(2);+ F: P: f& A5 E( c8 q4 k
if(i>17)( i! Y' N+ M2 M6 x7 c
{yDLEN=0;}
0 v" _% d! q" {5 m' w/ ` else
& i" D+ A; w: p% |1 s( V {yDLEN=1;}/ x3 d. x; B& ]3 O
$ U5 j- O" K# ~$ S, Q, B: u delay(dailyCount);- }" j! h# e" I* L+ z! k# }
yCLK = 0 ;
1 A' {7 I4 T" ]& X1 n delay(dailyCount);
. E' Q, z, {% R4 n; Z& R }
5 b6 t3 Z- k2 r& b$ }! U" I8 [$ V* c( |! L# p& `+ l( T
yCLK=0;( q6 d' ^4 R9 @. [& O* `
yData=0;
- K3 H0 L* g% [4 w8 [ yDLEN=0;
5 h# r4 U1 `. y/ e delay(dailyCount*10);
; w9 K) c1 W+ |* S+ x; Q& \ + [+ ?# m8 D4 I! }
3 A' f1 {8 o' G2 i4 ?% D; A6 c/ \ `( J3 e7 R* ^! o
for (i = 0;i<20;i++)
3 O- c) x. w+ z3 P+ a, A {4 N+ K5 Y6 m( T' t: F3 M
yCLK = 1;
$ \. s* L6 q' Q3 |7 O6 x0 D yData = dispB; ~5 u* P6 n* o2 \, {) o
delay(dailyCount/10);% v2 @' h5 z. U$ H! |4 ~
if(i>17)+ v6 `7 J2 a; a% t- Z5 G
{yDLEN=0;}
2 v$ X1 i; Z7 ~! q7 Y else
- P# Y$ p* Q- L5 c& X {yDLEN=1;}
0 m# Q) m! p% k# \+ b) A! e7 U: q9 ^9 r# x& ]
delay(dailyCount);: y7 ]+ X$ [5 b' E4 q" ?: F+ R
yCLK = 0 ;- ?$ J3 s! L3 p0 d
delay(dailyCount);' E f4 l2 X2 A0 l
}: C2 m2 J& p: o" N. T- { y O
/ E" ^. Z. U/ O, N$ h+ @/ {2 d
yCLK=0;3 }6 ~7 h2 K; B5 i- {8 c/ L* V) B8 U
yData=0;$ L4 _- z( Z+ n( b1 z
yDLEN=0;. z- q" ~* D4 v; T, e
delay(dailyCount*10);
* T0 G7 [! g5 l}1 d* u5 ~- ` A* F9 T! c, I9 Z$ q
1 _2 ^# J: H8 R& r9 d. m& v: S9 ^2 d8 U% u" w) t
6 L8 s m$ c' q; G8 m" A" l
7 f1 G3 s+ P7 l( @$ }% G8 U1 Gvoid main()9 x1 ~1 i2 |! y& Z7 e
{1 `5 {* U1 [8 L2 m% i8 j- L
while(1)
' G. q- G1 z0 n8 H2 j: l {! R) g, Y, t1 ^2 L, y# t5 @
delay(4000);
) |5 n( K/ f* z: ^$ E disp(0);
% W/ G3 T w' o) Z/ ]! M' @6 g H$ H }
8 F" `. Q& U+ x. E4 X}3 z1 |. o' Q3 g; o7 C$ M( I( l
7 z. s* y% L4 F: O2 A
# K4 l/ r( J# g. m/ J2 G r9 D
|