|
|

楼主 |
发表于 2018-10-21 20:11:37
|
显示全部楼层
搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
5 \, ~# o. T" v7 t+ b
7 Z! _3 u0 h; J7 t' o" M+ C. W$ X7 t, w) t
0 p, g( B& A7 {% E, X
4 `, J5 I/ S# h5 A
: O) E0 O$ d/ m4 H2 t, M
1 w8 v; J8 E$ J- e8 N g
demo 的代码在这里% i- s' q1 Y: d6 s+ x
: R2 n7 P3 e; A i% [1 K6 F5 ~1 O3 S! w) T3 R$ ^) a
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器+ z5 g( a* ]/ c
+ n: Q+ i ^0 l8 P% Qsbit yData = P2^0;
, {6 u! j) Q) Z* Q; K3 _sbit yDLEN = P2^2;
" B% w& s7 l6 T& z) w9 E$ w' u4 Psbit yCLK = P2^1;5 D4 h( M/ ~/ t: G& Q
const int dailyCount = 200;
+ _ Y3 `" W0 w- r5 C7 z* u. {7 }' H1 q2 I
2 \. h3 A6 @0 j# O+ G: j; K5 B. `6 A1 C# D3 {7 y4 V
void delay(unsigned int i)
3 d0 {* @" ]2 i2 h+ ~+ z" G( ^{( n( P( l" z% B
while(i--);
, t6 y% ]8 a& Y}
?5 }& O) Y7 @+ Q' ?0 J
( y7 c$ q* e4 A, J) q8 N, A' m+ x8 p8 i4 ?
void disp(unsigned int num )' W# Z& I; ~4 r; W
{, A+ |" ~ t, x
unsigned char i ;
! h6 D$ k3 U% E6 E1 x$ L+ @0 g: V v6 _: z- k; K. K
unsigned char dispA[20];* O9 m( M* J6 i( D, D1 ]! i" d F
unsigned char dispB[20];/ l& I- U; ]1 i8 o/ g2 m
2 o: ^0 {! h) r, R unsigned char num1; O& O& K C+ o. g* o% h
unsigned char num2; ! i* c% a' P6 V3 y; s
unsigned char num3;: G$ J1 [, M, f1 Q( {
unsigned char num4;
Y& v+ K# H9 f8 \ unsigned char segR[10] ; //右; R! Z( x3 n* R7 m4 i! ?
unsigned char segL[10]; //左
3 c' D e; j( \8 J6 o8 G n
+ U; |: I# W$ x$ P' F& u2 ]5 \ //左 : Q+ q R% ~' |# ]6 |# O7 A- r
segL[0] = 0x12;8 r9 f7 I ^5 W
segL[1] = 0xFA;
2 X6 T0 f, @4 ^, C/ N; L) H segL[2] = 0x0E;
7 i3 S) o4 b) I0 v segL[3] = 0x2A;: _; T& } Y: [! ?/ h
segL[4] = 0xE2;/ i) i" \9 `0 g6 c
segL[5] = 0x63;! ^; o9 r- n. k0 _
segL[6] = 0x2A; B; v: U; H& u& v9 B/ z: |. }" U# @
segL[7] = 0x7A;" p: P0 r' s5 j/ D- L
segL[8] = 0x02;( i: e! O y; v& c _
segL[9] = 0x22;3 c5 J* [# {1 t4 a4 g4 B0 W8 A |
/ R( N5 {, @9 e- m" E0 f2 @
0 I" D9 O; b2 Q6 ~ j8 }5 N0 k
! m% F. |. y- k7 f" A: U, q
//右
9 F& G: n' Z" Z# p" Y, a' s& m segR[0] = 0x88;
4 t. O" Q: T5 j& K7 ~ segR[1] = 0xEB;1 f- G( G! {7 P! h! O7 D
segR[2] = 0x85;
/ h$ u- H8 S, _1 t; Z, X segR[3] = 0x83;
9 a; X% O$ f0 y( ]3 U5 L& ?/ _; ? segR[4] = 0xE2;
4 f) N# [6 q9 Q& Q5 d segR[5] = 0x92;9 W" p3 M: V# ]7 N" W6 D
segR[6] = 0x90;- O# G0 Y3 y4 o5 h5 }3 p4 ~) o
segR[7] = 0xCB;
9 x9 z* ?: Q' y& u# H segR[8] = 0x80;% z9 z U+ \- ^! K1 p7 h
segR[9] = 0x82;
3 H( t L% d% Z- T# `
* M `3 ?5 N: n P% G& c1 z+ n) T9 N# z3 A" u: o
num1=num /1000;
{: r# J; k& h8 }0 S, q o& c num2=(num /100)%10;;1 c% W. o+ s- [
num3=(num /10)%100;;;
2 h( s7 Q [% N# ? num4=num%10;
% W4 ?9 q8 B. R& ]* W8 o( W9 G$ e7 I& D* `2 m9 }8 T- S1 f) k
9 k- B2 U' [* k H0 k
; y9 y/ p# n( |: t% P
" y/ q3 e8 z9 o! [# ^ dispA[0] = 0;
" o# J- X* }/ r) h; O9 J dispB[0] = 0;5 [' `! f; h1 L" j7 t
( _' _& `$ o2 m4 F$ K0 Y; T
7 a4 l) ]& b! y( o- u4 Y" J, I0 r for (i=0;i<8;i++)
9 m( Q9 [! X8 ^( z, m2 G {- o2 S. M7 l( S# _1 g" C
dispA[i+1] = (segR[num2]>>i)&0x01;
4 z, x& ~1 ^1 Q1 F" i dispB[i+1] = (segR[num1]>>i)&0x01;
" q! D/ R: ^* m _( J( V
, o* L; Y! k( }, p4 W5 {9 A dispA[i+9] = (segL[num4]>>i)&0x01;
1 _8 o3 o$ i) W G$ _ dispB[i+9] = (segL[num3]>>i)&0x01;# m0 o8 Y" H9 W7 j( Y
}
$ J) V) H( y- X# R3 O0 H0 [" ^ - @6 h* H. y( Y' t; M3 C
* H% D* ]1 O1 m1 m7 Q( R/ x; S2 h. g8 c4 `9 e
dispA[17] = 1;
" T2 D) Y. m8 ^5 d5 u dispB[17] = 0;6 f: V7 r7 ^1 h, h
( i6 [7 O: m, o. r, Y dispA[18] = 0;& Q3 ^2 F t+ a7 s
dispB[18] = 0;
. C3 p3 X- R: ?3 K+ P
$ e2 l; S1 i3 w3 W" n dispA[19] = 0;
5 R' I7 Y0 r, Z1 Q dispB[19] = 0;
! C$ O9 p$ y/ k; M. d# E2 |8 p) h4 }1 V' ^" c
yCLK = 1;
$ d' R0 w# W8 x
7 o" X5 y" h6 Q) s: H
3 I: r* e" c0 R% ]* ~( H. V0 f5 _, H: I
for (i = 0;i<20;i++): [" r b W" `5 D1 T! I2 V/ \
{
* l# l0 J7 a( G) C, z7 b yCLK = 1;8 Y) N5 O- b. Y9 ^; V& E
yData = dispA;5 P `! l5 c) p) I, L5 T+ T
delay(2);- R: j8 C/ _- N9 T% B- I) B8 q6 p& B
if(i>17)
. m9 ^! C& C& f5 V1 k {yDLEN=0;}
* r. b# y, s. z/ B, o! S else z; K: S; y$ N5 p
{yDLEN=1;}
" |4 k* m1 S* u3 G7 U
- Q! R: s8 W! x; J7 A) | delay(dailyCount);0 T5 V3 ^6 l9 X/ C1 W
yCLK = 0 ;5 K) M* N8 `+ w! o' _3 |# I
delay(dailyCount);$ L( X. W, ]( e& r) A5 V( z
}, w/ {7 P i/ m: k6 s6 V
% Z/ G; a) _# {5 z9 G. z9 X! V3 e yCLK=0;
4 l! J# @7 ^3 @ yData=0;% n8 @. X; L3 ?. \" T* r
yDLEN=0;+ M, @; P1 Q' \" X6 S
delay(dailyCount*10);
. V) J: N6 T' }& Y/ |+ S p- g9 d* C# G k* D
. q5 ~! ~0 Z0 \4 ^$ t" t" u+ y
7 u9 }) U7 D& F; x* W% ]- N7 s for (i = 0;i<20;i++)
+ `& ]# n0 t- `- W- Q- D% ~ {" W0 t9 `: m' v% q4 x
yCLK = 1;. j. o( [6 Y5 X' W
yData = dispB;: M1 a) n# m3 Q8 U4 b- ~1 a& @
delay(dailyCount/10);% ^7 s& _) l. I( K* n
if(i>17)4 C/ V! k [ }/ h" d9 \; r3 [
{yDLEN=0;}* O8 k0 d4 F7 F, y0 r
else/ }0 i) `- h, y$ a, ~8 S. n0 X5 K
{yDLEN=1;}
V7 {; |" ^4 U" h6 u5 b
" c4 {7 {2 O; A7 Z+ B delay(dailyCount);. }! n2 b) q1 J% g
yCLK = 0 ;8 c$ I4 E+ S0 X
delay(dailyCount);. U% _- y9 _; q; M/ w
}1 Y& N8 p9 a4 j& j( M
% H* ~' W p% a% D7 h1 {* \: |
yCLK=0;
M7 D" B6 e! B* c' u/ D: w2 { yData=0;
9 [' M4 y: Y) [( }9 ? yDLEN=0;
2 ~% n* h r8 P delay(dailyCount*10);
) U; l' M- G2 r9 _- s# t0 E}
/ s# h! H9 p* {+ k/ f8 g8 U, \6 F- i
8 O! b$ g. T% F1 m0 A
! Q) ^& _9 P/ x ^6 Y9 o4 |4 p- m/ b( h* p- j: d- J
void main()
z( @; W* a% G6 Q& \{
- m6 d8 p4 O0 U3 c0 e while(1)$ p; ^1 K& r2 M# r# T
{8 g6 C" x# L4 `5 D5 G6 M
delay(4000);, B" T$ r; S! V2 D$ ^* O
disp(0);
( a/ r5 Q0 g, A" F0 {# W( S }
4 _' B1 @1 z! U) `}& I& h- d9 D+ A% g& I
$ ^) Y2 W7 R7 G$ V
0 j8 ?* y: W& C- E% ~6 [/ n) Z |
|