|
|

楼主 |
发表于 2018-10-21 20:11:37
|
显示全部楼层
搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。" ^2 C- l. J3 S# O
9 ?( E# t8 e5 `% `$ Z4 n
) ~3 v9 d! v1 X2 |$ F# ?1 ~
0 z9 B0 G' w# `; b; b
$ ]( K: M9 R# J8 I$ r' P" l. V) m r, e' S' ]& w7 U! i
% ~; j! z; P7 g4 P/ R$ A9 Qdemo 的代码在这里
# g) L# ^& M2 w$ K% U$ L/ A! \) L8 V; d5 U' l* o* K" D
9 n1 e. k, R1 [4 u& p/ p#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
1 x3 t4 y( t$ |9 A' A/ r% d5 d
& s" [+ G7 @2 H: R/ [sbit yData = P2^0;. Y% `; | n6 G+ e+ D
sbit yDLEN = P2^2;
1 V1 W/ C# c: ~, V, V) s' bsbit yCLK = P2^1;
7 \7 I% m, o2 k6 Iconst int dailyCount = 200;
+ [% f( H/ S) B" b( [+ I% S. a* o8 ~- }; ^/ _. f9 n" p2 [! u e
- g: B' D% m/ O% M
; |) H( l/ U& N% Y4 |
void delay(unsigned int i)( N* m+ i$ Z o- w* d2 j
{3 _& E7 C6 z. J! b" s8 R
while(i--); ( F, {' S# E3 r G. U8 y
}- C3 a* K- V3 b: b0 j Q0 f
, D6 j& ~( h6 K- G3 ~3 ^3 d8 ^
void disp(unsigned int num )
: I( l- L; S+ G8 M$ Q{
; V3 M# e; }& w( ]* r9 @ unsigned char i ;
# \: S1 _$ ~7 D& \
( N& K$ F' {9 ~+ s+ f2 A unsigned char dispA[20];' S. v" N+ p. \7 \0 t7 |, [
unsigned char dispB[20];
& u4 ~. ?! y0 b M8 }- y; ]2 M$ B! `6 y8 P
unsigned char num1;
+ _9 y. e( M) O unsigned char num2;
+ V w6 r' M$ W7 S: x6 F unsigned char num3;2 E+ @( v# e. M. |- e
unsigned char num4;
4 v3 a" |" `9 e% a; ^ unsigned char segR[10] ; //右
. F, A- D8 y/ u unsigned char segL[10]; //左
. I N: F5 w2 m+ L
& J) r/ u6 Z5 \) x //左 ! w' D3 d* K2 U
segL[0] = 0x12;& c) @' H2 w7 F# G" g% k- G b
segL[1] = 0xFA;# f( y- _7 H5 O2 F
segL[2] = 0x0E;
' l5 d; Y6 _ u0 N segL[3] = 0x2A;
) m2 k" H8 I+ e, |6 @, x- F segL[4] = 0xE2;
# ?% K+ O7 q8 J. `; e- J segL[5] = 0x63;/ D! A8 Q! k) o' L* f. l1 r0 |. F
segL[6] = 0x2A;. F+ { ^, \! y0 z* _ H; A
segL[7] = 0x7A;$ p1 k! a8 R+ {& F5 f0 R
segL[8] = 0x02;7 ]. h2 X$ ?7 O7 h
segL[9] = 0x22;7 C; q+ V3 @7 f* o
" }; G# F* {& s% J1 P/ e
! R+ r& O) m) D W- ]6 I' _ 3 Y$ g- D/ L2 z* t2 L
//右9 s$ g% u6 z& h* p( e
segR[0] = 0x88;
& v& I4 [# `, k& |0 u6 v1 S; _5 E segR[1] = 0xEB;& L1 i8 {5 K) V% Y8 k/ H1 }" s
segR[2] = 0x85;
6 F( k! ?7 }6 G( F ?4 t; `. G segR[3] = 0x83;. z9 d. D2 y. O$ m2 k" y8 t
segR[4] = 0xE2;
2 j" k( r+ s8 I( C6 V segR[5] = 0x92;
. u: r6 L* d# F/ ~ segR[6] = 0x90;# @, D$ q' `8 J9 s9 E2 ~4 A
segR[7] = 0xCB;7 j& y5 Z, t: {- H1 ^ ?3 w
segR[8] = 0x80;
0 x# q1 D7 C/ e' [, Y1 v segR[9] = 0x82;
& @4 h0 u& z0 h8 a" Y3 w$ v( F9 ^1 o( `* @
) l0 K+ _( H2 Q# x num1=num /1000;
; U0 J J" Y9 \! \* A& V$ n# D! t num2=(num /100)%10;;# v1 x8 i8 _& M
num3=(num /10)%100;;;
2 l9 y# T$ H8 U num4=num%10;
6 a* Z, f! K' G: P7 ` F
5 ?: ~ e% [ a! f4 _9 L" z
+ O7 h9 D: E9 M8 \6 u* m# D- p1 T5 P: p& u8 n; R
0 t! Y9 i& M5 M% c( N- f8 U. _ dispA[0] = 0; m( O7 d8 J7 F/ k; o N# \% V
dispB[0] = 0;" g; e8 J- o: `/ V
* d9 M7 Q6 t( g+ m0 k* |4 s, K
+ o( i: t" {# M# s3 m5 p for (i=0;i<8;i++)! D, }: D+ s6 f! q2 z) U! }5 A
{8 v2 E# Z: j" A- O9 z
dispA[i+1] = (segR[num2]>>i)&0x01;' p T* r; y5 \$ P5 m& s
dispB[i+1] = (segR[num1]>>i)&0x01;
. C7 ~: }; a( u/ c- f
5 Z" @/ h2 A* o) {( `4 ^ dispA[i+9] = (segL[num4]>>i)&0x01;% g, T. F. N* x5 m
dispB[i+9] = (segL[num3]>>i)&0x01;$ ]- O& j( ?0 T; y& N
}
( [) ] q# ?$ a! R2 b8 t
; [' y$ _+ r2 X
9 r- D# H% _0 n d6 J$ H% }4 K; ?
! N J4 f0 s% H) M4 m* P dispA[17] = 1;
1 ]% u( A* }9 u" y6 _8 c: q dispB[17] = 0;
7 F; {, h H" p) k! ^$ r
! R3 w4 n+ U K1 i* C. L& ^; V# Q dispA[18] = 0;
: T. ~* z6 d3 N' d4 [' F5 \, N dispB[18] = 0;
% V$ ]* U& ]1 j! T0 X2 \, l* A8 D9 F) P1 N
dispA[19] = 0;2 k* H! s1 V8 W" E0 A" z
dispB[19] = 0;
9 F7 w% D p9 w i
E/ o: Y/ c1 u' E6 t2 o! [ yCLK = 1;
1 j6 b( g5 S& s& [
5 F$ s6 Q8 v7 D( K# D# J) h, A- }4 u3 ~8 U
" l& p% v$ v) G- z3 d6 l for (i = 0;i<20;i++)
8 Y6 V8 I4 j5 x {0 r; L: m# I; y8 ?$ }
yCLK = 1;
0 Y- M' a- S) d$ `, H yData = dispA;
- Q) P) U J; t- |. t delay(2);1 C! N. Z6 a9 \! ^6 F/ f+ ?' L" V
if(i>17)
/ w9 O8 n( V' ?. W8 W1 I& T {yDLEN=0;}8 i$ Q# H: d' P3 d, U
else
* X6 N" h0 w0 c; R {yDLEN=1;}& @4 C% }# Y$ u- C! `+ I$ O% P
9 ~: z6 X$ I0 i8 D, @, f- P6 p delay(dailyCount);1 F% @/ d5 f1 q5 \9 [
yCLK = 0 ;
, ]+ F/ F: O6 ?6 C; v/ O1 Z delay(dailyCount);6 @% v* h$ g) M0 }
}2 {: T5 L& h5 ^4 E& k& X: G2 J
8 n+ D$ I) b& i0 o7 P
yCLK=0;
% n; _) m5 Z' ]! K! s/ c, r yData=0; N1 Y) I7 ]& v4 c* K8 p ]
yDLEN=0;
2 k# p+ Z5 t. U delay(dailyCount*10);% l. S& M- t& L. c
% c7 M/ t% V: p' H8 P
# D2 l' p. F; ]) \% t: r
5 i# f' ?$ Q; S$ p
for (i = 0;i<20;i++)6 `% S( e& o) F% c: `6 L: Q
{
* {. K. @8 J+ u" ]- I yCLK = 1;
3 Z9 t5 x& I( h, h8 Z. p7 \ yData = dispB;
, E- z$ W/ t5 ]+ }4 t delay(dailyCount/10);
! N# ?- S$ X1 c9 G4 j' _3 ~ if(i>17)
! \2 Y5 X5 E1 ]3 _2 p {yDLEN=0;}+ a% S) d, u; E
else
- C/ `' f, L; \! q) \/ V$ O8 J {yDLEN=1;}% T0 {- N a5 X5 J& E: L
$ F! v7 |9 `( ^6 R! ?' f0 Y/ c delay(dailyCount);7 k: B* z- e1 i/ I. D. K
yCLK = 0 ;) _- V3 i& V! U. o7 t# _& [& ?
delay(dailyCount);
: i2 a, a8 o5 N: S. a) N }
$ V' ?( g/ c8 b# Z. X @# r$ q1 c$ J# {, _/ g) D. Q
yCLK=0;8 R) W- ]2 z U# |
yData=0;
$ |7 U% Z+ {; ]9 S4 Z }# @' [8 [ yDLEN=0;
* L( u% l7 |. k; E; s) p delay(dailyCount*10);. b5 p+ A9 n5 p" z1 M" n2 }
}+ u+ o# e7 [" x- ?) ]
2 w2 ]- l2 T+ g- n# R2 _" o2 g
5 Y S$ ~1 k" S; z% |# M# u- E9 L) l
% p" O0 X- r: [7 ~3 c
void main()) l* b/ J0 k. w/ a
{0 T) X5 _5 ?3 f; J; Q I+ v# g
while(1). [0 Q0 c% R+ t
{, @& c9 o! a2 s6 M) H" _
delay(4000);
; j1 L' P2 x: M disp(0);( U& F! P& R. F* ^8 b5 ]
} 9 s1 P) k4 S' p$ A* z1 x2 D6 x
}
( g u. Y' u5 Q- n4 j+ _0 n3 f H0 X
& [) v6 Y. g0 Y+ [7 V; U: s; Y# V |
|