搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。% i/ j; n- a4 [% ?* _% r5 t5 Y
) ^/ `3 V# f4 c1 ~: J, A. m' o* P
$ i2 Q9 Z. C; ?7 i; ?$ M
% K' n4 i) c0 n, A, [
+ v' u# i+ d1 ]- |2 d4 x) F) ~/ j: Q) p- x- I/ g' T0 W' f8 R" v
demo 的代码在这里
0 e* h) D! L; a# F' \- _/ [; @, x% C9 t; Y
% J+ V+ C7 f! w X# L% g
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
- C* t ^9 K$ o
/ M3 b& x4 t! U& C5 C% q7 Dsbit yData = P2^0;& c5 Z0 {- G+ l5 D) M3 q
sbit yDLEN = P2^2;
$ j# ~3 K9 a9 V; i2 R% Ksbit yCLK = P2^1;) C2 p, q9 g6 v6 r* H
const int dailyCount = 200;: G; M; J6 T/ _. _# q# v
0 g8 _+ Z; S# S! D% x# y. e
$ O1 c5 H& F4 T* X8 P. D% j1 W0 v% t4 I0 `% \; p$ o4 |
void delay(unsigned int i)8 w6 _4 i6 [9 z7 r2 n$ V
{
. \' T- h- U- I* h+ M4 o; b# s while(i--);
$ O( h/ t) p3 Y$ B}
, y( w" k% d: L% ~3 y1 q) w: ~3 b" [
9 G& m' \7 X# ^, b6 N
void disp(unsigned int num )
' [- D& g0 C- S8 R- P! p) g{
! l7 R/ H7 H6 {% l* k unsigned char i ;1 H& f5 t2 E9 H" n' ?0 M" ^: `
9 ~$ [8 P8 U/ I; H; S% O6 v unsigned char dispA[20];( d+ k' c( o- |8 s; f0 N8 O
unsigned char dispB[20];
2 G9 h3 b) O1 h. G# Q! P* ~8 p6 d7 @0 M& x- ~- Q$ ^
unsigned char num1;
% m7 A6 N7 b0 k, B' ~9 [ unsigned char num2;
! e3 l' m+ o8 }# K3 S* x unsigned char num3;
Q2 k, Y- Y* a unsigned char num4;
4 M2 _3 O! ^% [1 F+ R B! i2 Q% e unsigned char segR[10] ; //右
5 k6 k7 b5 S" @3 P, m5 g0 u unsigned char segL[10]; //左) A5 w! H y: l0 l' Z7 G" E6 Q
' m2 ]3 e! u3 v/ f
//左
& Q% O: V+ _- V B' E L segL[0] = 0x12;+ J& T, g$ y, m- e& b4 s9 T7 M# M
segL[1] = 0xFA;
$ m$ X. j5 A6 p0 R" b segL[2] = 0x0E;
5 K4 m3 ~! ~8 S+ W0 I! k segL[3] = 0x2A;
9 N$ q* C3 \" x; [6 ? segL[4] = 0xE2;
" M- `5 _8 D* |' Q+ t segL[5] = 0x63;
. l3 X* R- y8 ^ segL[6] = 0x2A;
4 A2 H+ g8 r3 y" q* M3 f segL[7] = 0x7A;
7 e7 t* U2 c2 l% H, m' x segL[8] = 0x02;
* D5 A* o6 `9 \6 _9 o4 _/ r# ] segL[9] = 0x22;
& _+ r4 i* A4 | * |* W. ?, L, N2 L6 [7 v
: B8 a: C+ Q9 A; J! _+ {' v
" }9 p( P: A6 d //右
' u1 E# u4 j0 p segR[0] = 0x88;0 K. |/ ~6 w2 N, d6 J$ g" v
segR[1] = 0xEB;
8 g, V/ f( H7 ~/ |7 a segR[2] = 0x85;
) M/ S4 I( l2 @) p2 C* Z x( H9 ?7 B segR[3] = 0x83;
9 z9 X F% [* q! X8 W segR[4] = 0xE2;
& i) e0 }& H5 c segR[5] = 0x92;( a9 Q5 R9 z0 f3 ^4 I, e4 m {" {/ R
segR[6] = 0x90;
, z5 v' x% S( k segR[7] = 0xCB;% a! y1 t! M6 a# r- ^
segR[8] = 0x80;
" U5 Q, _8 p" p& D. C segR[9] = 0x82;
7 `+ i+ {' l! q# H8 C# v% u% N* K4 I9 O7 l. V" [' C% S
+ t9 H) s# Q6 z# w
num1=num /1000;
5 W4 s5 R2 e, ]$ b5 r6 K9 ?3 [" C4 s num2=(num /100)%10;;
& ^1 ]6 n3 T: b num3=(num /10)%100;;;: U# H0 l& z7 m/ Q( I1 j
num4=num%10;& _9 Q9 u# Z* Q, y$ Z- o
8 ]3 q% W4 K. |2 _3 p: L4 Z0 u7 E5 \$ P2 }7 d5 e: h
[$ t8 r& d8 C u
2 `$ N5 a. [2 v' f1 ^
dispA[0] = 0;% m9 N* T$ s5 e+ n) N
dispB[0] = 0;
0 s. ~; x, t4 M
; L$ e! H# U; s
4 I. l1 b& f8 x9 ` for (i=0;i<8;i++)& P8 G3 q$ g. Z. k/ F% K
{
' b0 ^) `( m# e2 r dispA[i+1] = (segR[num2]>>i)&0x01;
' L Y1 p2 p# y6 p. j dispB[i+1] = (segR[num1]>>i)&0x01;
, ^9 @8 I1 W8 }9 u7 v" k+ ]2 {, I
' ~7 P7 \& @" I: z9 U5 k dispA[i+9] = (segL[num4]>>i)&0x01;; i+ C2 B: _& A0 m' h: C5 D
dispB[i+9] = (segL[num3]>>i)&0x01;
% F1 V6 O# X2 r U7 l }
% s- n# |. r& Q& c2 l* M: Y ( Z. {9 {+ J5 I# _" H
. n4 j& o$ M5 S0 E- z6 s/ b
# J( t+ f9 H/ b5 C% E
dispA[17] = 1;5 t$ c8 [9 j \( |
dispB[17] = 0;
, V; s# `4 P a3 Y
# J, ^ _+ @- H dispA[18] = 0;1 L, ~" |) r% k* e, i W7 a( f2 t3 l
dispB[18] = 0;
5 T9 ]/ R3 \6 X/ P4 D; z
6 C. E" }; j% U1 Z4 X8 L4 K dispA[19] = 0;8 Z) \2 s! r6 y$ N1 | ~( }' O
dispB[19] = 0;
+ p! r6 ?2 l# ~( c$ k7 H" F" V1 s" ]) }$ X6 F1 G, x
yCLK = 1;
0 J8 T Q. `6 _/ D6 o3 f& }4 t9 u. c5 X! B
8 @( `$ w. _ W/ K$ A
; A; Z# d6 t3 F3 Y for (i = 0;i<20;i++)6 S: m( l! ~- V; |
{+ q; ?7 r/ M7 i" ^* t
yCLK = 1;
6 k1 O2 [/ _: A. P! i* O yData = dispA;
) U f" w- g/ ?9 q, x. _ delay(2);
5 ]* i7 T, v; m4 `: n5 } if(i>17)& y# J# m/ A; L/ B
{yDLEN=0;}
! ]% w' J4 L$ @1 h) a( i else
8 H' _# ?% a4 T: n. B# e {yDLEN=1;}
: {& U$ s' O8 \% X4 P! P9 O$ L0 X, _) M# v5 a o# D
delay(dailyCount);: D& `! Y) l9 n' a, J
yCLK = 0 ;7 H3 N* }3 `/ _/ v) r8 c
delay(dailyCount);
, l& F+ _% p* h }
$ H$ ^. n _5 B
! d4 q3 r% S, a7 u3 d! v! H* l yCLK=0;
" x, |1 i; n- U4 e9 n$ m1 Z5 P yData=0;% a" y$ n; [' p) P3 ^
yDLEN=0;
1 ~& F3 R2 A% z$ f delay(dailyCount*10);
/ K: k8 u! g# G! p
0 m1 g$ T+ n* j" |/ J2 I
/ {& a0 i. o V. X# k$ `. w3 n5 U5 L
for (i = 0;i<20;i++)/ b4 L' z) U) l- F9 A: d0 x# w$ ]2 \
{% U; y3 G! N; H I, x; j0 y
yCLK = 1;& v6 A* i. a! g0 X. W
yData = dispB;! W. c) C! l; b6 H( z( M
delay(dailyCount/10);' A( f- V. q$ o: M+ t
if(i>17)' t; p1 ]- I4 [+ X, B6 z$ J
{yDLEN=0;}! o( f( p( q1 {- p5 d
else9 s; V, O) n- D$ I8 W8 ]
{yDLEN=1;}
3 R" `' M6 k! R5 E; |% O! M# w# g3 L" C) [6 l
delay(dailyCount);
( o. X3 ?/ w$ ]: i yCLK = 0 ;
, l. @( u( j5 s3 N- B9 c' Z delay(dailyCount);
7 h( y! I$ E" D/ u' G3 l) F' r" D }9 S, ~/ i8 J6 r" s6 X3 G
9 M" L; u" Z9 J4 f1 r
yCLK=0;
, [! b$ W$ M' I" K! l4 O yData=0;
]$ ?5 B. O. g' }- i( M. {* h0 T yDLEN=0;; b' M* I; u# m5 g0 U5 @
delay(dailyCount*10);6 ~/ t8 N- O% b7 P: t- S
}
. k+ U' [' ~" }6 g" }1 D* B. c3 G
5 g Q- z8 l. u0 k( u! P% Q$ v U$ T ?/ b
! _ m9 t7 ?6 v3 O) j# N
3 k8 O. ?) ^5 e+ K0 j2 Avoid main()1 f K2 q* q8 M# p# u3 k
{. s$ m% _5 R+ h! ?
while(1)
" q/ f1 h! r" v {
, z5 z% x' z/ d delay(4000);
( z9 ~: u( H8 O5 U" G s3 y0 y5 E) b disp(0);0 h- ~2 Q: [7 z/ X' J
} j2 K2 _5 O" F# I* B, H3 @( g6 R
}( r) Z j {% [, c* R
& O* j3 d0 I, h. p" Q1 G6 F
; e* d! [- b+ W' k2 x5 k+ K |