|
|

楼主 |
发表于 2018-10-21 20:11:37
|
显示全部楼层
搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
P: ~2 l4 ]% B# w9 |: S# x
6 a8 n g9 w* f3 g' A5 _, `2 d
3 D7 ~, s7 x; q1 B6 Y% Z
9 i: S: N) r0 h1 U, c, \
( j, g p( c. c. n8 `; T
& [& w8 A0 m' f; @* E. G5 }* o4 p$ p0 Y& D& q5 Y% |+ d
demo 的代码在这里
) H( x& T8 d, A, h. W
4 I+ x* \5 n$ [& q/ v
% M9 n4 C; T1 j& Z2 g#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
6 R+ q) z* S# p3 z# V% T R. c! G& M: {
8 P4 Q' o h- s1 k) F4 O3 b1 Q( N* w: Isbit yData = P2^0;
, T) X4 ?: [0 Z! K3 f+ vsbit yDLEN = P2^2;9 N4 @# U8 n+ W9 l% x, N
sbit yCLK = P2^1;% U7 V& B2 [: P/ M2 d/ W) f
const int dailyCount = 200;
2 K' A' R }2 O" a! b. Q& p8 G4 X3 u6 b
% V0 B" g f0 r6 R' h
/ y' A7 X' [, `
void delay(unsigned int i)
7 v9 A! ?3 Y" T9 C0 k{, J0 P" @8 j% F4 C
while(i--); 8 E! D" C) c3 z; a j* w8 S
}
3 Z# }& f# J w7 C% V/ z% w5 ?1 A
7 J& r" _/ U! F: y% o" ^" x g- y& I! f2 x# Q
void disp(unsigned int num )7 z4 G* d3 j. ~- H
{
! [5 v( ]0 P# S7 ?8 g5 h unsigned char i ;: F7 ^) A/ k3 X9 p& g
4 v0 N* o* _/ |% `
unsigned char dispA[20];
2 ?. c. b2 `7 ^) O unsigned char dispB[20];
% W% b3 Q1 H2 B& r% j5 a- z* c' u9 D% o$ b
unsigned char num1;' ~3 H, w% P1 f8 \
unsigned char num2; $ Z+ q: M# r: j8 K. ?5 j1 Z% k
unsigned char num3;1 R+ u, z; r: z
unsigned char num4;% S0 y) l. w1 o4 e: Y
unsigned char segR[10] ; //右7 K0 X, |: y$ e5 H& g6 x
unsigned char segL[10]; //左0 T7 C4 ]" [, k0 e/ B( x; a* n
2 t& H. ]% v0 E. x) V% F! u9 L
//左 7 \0 G0 |4 \) p( f* i
segL[0] = 0x12;7 v8 I' Y( L8 N& o. q- }; [
segL[1] = 0xFA;6 n% v. I2 j! V) M
segL[2] = 0x0E;5 p+ f: H2 z0 i- d0 H: s: N
segL[3] = 0x2A;
: q: i# D Q) E$ a segL[4] = 0xE2;* J1 d9 d: z& Y
segL[5] = 0x63;# d e+ E' S. u& r4 [" C
segL[6] = 0x2A;
# D7 L/ g* Z, n segL[7] = 0x7A;8 x4 W+ k, q! E1 j% F4 D
segL[8] = 0x02;
4 H2 X" g8 d* m4 v segL[9] = 0x22;5 X! O8 F* r* s. ?# F0 t& k
' J% z( W. P' @, W
( w$ R6 N" ^# B# P. `: o6 t/ m q( v! H% Y5 W
//右
( d7 H2 ^+ j) J segR[0] = 0x88;
+ H3 x& l1 U" V, `8 M segR[1] = 0xEB;
7 J, H' |& y2 m5 i" w1 s segR[2] = 0x85;
' [# t& O& g1 i( O8 ~ u segR[3] = 0x83;
5 V z. f5 o7 o4 e B, ]$ n, d( p6 z3 z8 z segR[4] = 0xE2;
" o5 Q5 C+ K. {+ C" l- U segR[5] = 0x92;' P, z# A! ^3 v- I4 |0 f a
segR[6] = 0x90;
3 U! a. i$ a5 Z; q" Z6 L/ a segR[7] = 0xCB;" x* `/ B+ ?" j3 D
segR[8] = 0x80;9 V8 t8 e3 P E5 \) f" \4 E7 h# r8 \7 F4 D
segR[9] = 0x82;
1 k' b1 U& M3 J/ i! _8 u* D% Y! N4 J# h) Q
3 X0 U/ c8 x8 j& q# O% w
num1=num /1000;
7 {5 ]! m& a5 }' t$ H2 ^ num2=(num /100)%10;;
4 ], N1 ~. X( w' r& B5 h: Z3 j; J num3=(num /10)%100;;;
( d" m6 B& s4 L0 N" i' \) T6 h2 V num4=num%10;
$ P& }# }$ p# F) |4 u; l. X
' m* V1 G2 G0 J# u" h+ p1 o0 n$ `6 b& F9 Z
- {7 V$ k1 Y+ Y ~: P% ]& A/ p1 i1 g1 d6 Q( m$ \9 k3 [* {1 {
dispA[0] = 0;7 [: L+ d p7 C w) h
dispB[0] = 0;# V5 @$ O) T. |! M& B) V' ~
* }- P% Z: d% N7 i' x$ j. m
: ~7 w( y3 Y Q& ] J/ T$ k" d for (i=0;i<8;i++)
- L* b5 z( p% ]2 A {
4 K+ z8 N. K1 m/ @3 J- @& T8 s dispA[i+1] = (segR[num2]>>i)&0x01;3 J% |+ M# r: \
dispB[i+1] = (segR[num1]>>i)&0x01; 6 g! w; k$ ]: D* @. l) ] w$ h
3 o8 o; E1 G) {! Z& B dispA[i+9] = (segL[num4]>>i)&0x01;- ]: t5 c+ |8 x! {
dispB[i+9] = (segL[num3]>>i)&0x01;
' ]$ } ~! D, L- E }7 x( }- [' B$ n" n4 i5 Q+ M% G& F
" Z/ P, c! x5 x t, b' x9 m
, h7 [! Q; m% k+ o0 d8 \ `8 u0 W
dispA[17] = 1;
" \& @9 s6 @5 M9 O/ m; V7 _) p dispB[17] = 0;+ ^3 S" N% v: ]$ C+ p9 g" R$ c
" l7 T1 m# g7 |4 \) h6 k5 i dispA[18] = 0;
( i' y- w* K0 Y% o% l dispB[18] = 0;
; W5 [) b7 ~' p7 X+ V# e: l1 h3 F. u3 J/ {. F0 E! V
dispA[19] = 0;
, N5 \/ L) O) u dispB[19] = 0;
5 e" h' v" s+ g0 T/ H# H4 R# X2 `3 U) V9 q- }" [ u/ n
yCLK = 1;3 s s) b- r& ^- S9 N2 ]
+ H6 s6 q. S; b" h! y+ G! g2 d4 T- |7 a: R* G/ Y, \- Q
; I9 @) L) T) k for (i = 0;i<20;i++)
0 q) j% K5 K$ x {) k8 f* x8 j F
yCLK = 1;$ `, `' \8 h% Z4 |; f* U
yData = dispA;
" a. z: A. S9 ` delay(2);' g7 j" F \# R0 e; h
if(i>17)+ \4 l: R* D9 C) i) a
{yDLEN=0;}/ Z) i' I3 ]9 @$ z) W
else
9 L& I. U! A" h" X c9 A {yDLEN=1;}8 I$ @: d' j1 M2 s; m
' }9 x @4 [4 w& X1 I
delay(dailyCount);4 m u4 Y8 R7 Q# j
yCLK = 0 ;3 Q* ~3 ~, ~! j6 e
delay(dailyCount);
: L6 `5 i+ Y* _ }; T- p. [* T$ d6 P
% p! R1 G/ B5 S0 x, S. [ yCLK=0; |# y- T$ e0 G' j* i: n
yData=0;3 P9 D& y+ H2 [: M
yDLEN=0;
. r& [* C" L" N- p delay(dailyCount*10);* c# m+ u6 f+ H) I8 }" Y& d8 u
" @ i8 Z# v; C0 S4 p" n
~9 t5 U# `8 e) e! s& ]) F7 u7 a: @
for (i = 0;i<20;i++)
) k) b/ ~9 L( p- c7 l { q2 E& V1 @" a" }1 X% M1 p
yCLK = 1;0 P* y/ f( j; |; R/ Z+ i) |$ b
yData = dispB;1 B7 p; X# O D$ M9 G* K; O. T
delay(dailyCount/10);
' [) y2 e' z4 m3 j if(i>17)8 S4 i9 I9 I% H- Q5 U) a' c* Y
{yDLEN=0;}( ~) @+ |& [) l
else. Y4 a) K" F3 s/ \! }
{yDLEN=1;}
! f8 X# m4 ?( s2 V5 \6 J K1 }, a. E* K. x" Z: X4 F& |
delay(dailyCount);' V, H" W. o; ?" Y9 I+ W
yCLK = 0 ;
3 D3 ?: R7 g- v' \ i5 m% } delay(dailyCount);
- s8 Y1 F) [3 N$ C }
& H& j0 D4 @5 [* Q+ e: @( K7 j
) m _$ `9 w7 W) U% e/ Y1 I4 b yCLK=0;
$ p' B B; _. b, B0 J yData=0;& ~* ~+ t0 o( m: R; I
yDLEN=0;
0 m: m! c! O, Q, {# H delay(dailyCount*10);5 h( M! @ \5 G- w0 `# @" r& S5 e [, I
}
7 x5 y' i" t$ m& K7 H; c9 V. f4 D; `2 l. ]7 V. D
- V9 Q0 v6 u0 [. X- b
& R; q2 O5 @* |) [3 @
5 G' g) `; y7 U0 H! R
void main()" o, N) h3 C# k/ n# h9 M1 K( W3 Q
{
/ S/ |; U2 t" h( s; V) V0 H; D while(1)
' a: ~% y, Y. j0 w& |2 y {
' f5 Z/ [* Q! g' m8 R; u4 L delay(4000);- H* } R1 K4 {$ l* g0 x
disp(0);
2 p9 G2 f3 X0 k; n( ~ } / @! L% w$ n& N, \$ r
}
4 g3 L3 _& ~3 B+ m6 i5 Y. H; K8 q4 H1 I% n E1 o. q
* @$ d( ~4 d4 G8 o |
|