搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
- f( W2 ~2 N, Z+ u7 [% H
4 P1 b( A2 j+ D! i
4 t; x2 v: ~) n3 I6 q6 v6 m
" d3 J* v9 `! O7 Q5 ?
6 b. R& p7 b, [5 H' w" ?* J
1 E. S; i; M, Q+ Q( W5 k: t4 Q% J
4 d( n. A4 @) Q# \) rdemo 的代码在这里
' w" `+ A5 ?8 ]
5 r) y% G, b# d; w, V( B1 F& X9 y2 W+ Z% o* Q2 I
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器8 ^9 _. F0 H& t; ?5 M ` ~3 p
, W6 O3 H" s$ Y# b
sbit yData = P2^0;; A3 T$ r4 j) B5 q$ q
sbit yDLEN = P2^2;: y8 M! e/ z' x5 t: O. X
sbit yCLK = P2^1;
8 g) ]9 ]/ Z4 y# S' Econst int dailyCount = 200;2 \; {$ L8 g. `; ?
' h/ @% P% \5 u. M
0 P9 {) G9 D, d4 g y8 f! v8 p/ K6 _1 R' O. Y5 E
void delay(unsigned int i)& D5 P( z5 H1 w
{* J6 L; f/ R; e+ k
while(i--);
o8 p5 O! R3 B}' y) s9 Z3 [: j" F: [
5 e7 ~0 q! Y# k
- w- k1 b& w* [* L' A
void disp(unsigned int num )
0 C* e, n7 Z9 @ H9 I3 h7 i5 u{
$ @+ [( v) u, s unsigned char i ; O: E0 i3 |4 u, V( o- B0 ^! @
1 i2 h) Z/ ~4 M' {# U' C+ @$ x unsigned char dispA[20];' b$ g& e5 e- f3 M2 u
unsigned char dispB[20];
& x+ V8 |+ d, _" Z: J% r2 S3 X. o4 D
1 v$ }: l6 b$ [ m2 F unsigned char num1;
1 \& E A5 e, F: w+ t! R+ |, F/ \ unsigned char num2;
. }( P' Q1 Z; W6 e: q, q0 T9 u3 ^ unsigned char num3;8 c5 T/ v6 S5 R# |! L% S
unsigned char num4;, t# K9 ~: O! N( L7 S" R- h0 s3 H1 K% i
unsigned char segR[10] ; //右- j7 q7 Y/ \: }' i4 R# C) T$ j
unsigned char segL[10]; //左* V+ o) @. Q# M7 Z1 V; }* @
- b d, p2 r* U) o) F' O( H+ X
//左
$ Q- J/ u6 F( t: P6 _& y segL[0] = 0x12;( p `- B/ p2 F
segL[1] = 0xFA;
# i+ [/ A+ z% ^" E" ?- W4 t6 a segL[2] = 0x0E;
9 m0 H" F" V/ q# F5 ]! D segL[3] = 0x2A;. p, s3 C" q% v8 n! c
segL[4] = 0xE2;' h2 b1 }. h& E
segL[5] = 0x63;- |3 \2 ^3 q5 I/ L0 A
segL[6] = 0x2A;
, p! b6 x1 f0 {, I segL[7] = 0x7A;* H+ w& M. S1 C$ V
segL[8] = 0x02;
' O5 i ?/ p1 @7 G segL[9] = 0x22;" G2 Y# ?8 ?5 C6 q
% a; A4 q& M8 R+ R; w ; c9 M9 {6 S, G- J) w+ E/ ?* b
' I7 P& F+ k! Y. D- t5 z- X //右
9 P# T; g. [. a3 h, Z" W segR[0] = 0x88;
3 |+ E# r( F) ?& d$ y) q segR[1] = 0xEB;& y! X* z" B. o4 a N0 S
segR[2] = 0x85;
, S: ]) @9 @7 c0 w3 d segR[3] = 0x83;
" n: l3 K, o7 ]) U1 {# [ segR[4] = 0xE2;$ h/ w9 e* F$ c( c
segR[5] = 0x92;
& g- J7 ^, e! f( H" e segR[6] = 0x90;- a0 r7 v1 x F! M6 z$ m4 m) n" C
segR[7] = 0xCB;
) s, f5 k& O6 f! r+ D segR[8] = 0x80;
* t. x- m: |/ H7 ? segR[9] = 0x82;
. o8 o1 a8 S1 G0 q
6 d8 G/ ]2 T- t' o8 B . S2 ?/ i, x; |
num1=num /1000;2 U- L2 t( f9 m' B/ z
num2=(num /100)%10;;
1 h3 v7 p0 M8 d( Q' S num3=(num /10)%100;;;
# ~2 j8 j( B( o3 p" F6 C- L/ g; V/ S, Z num4=num%10;
7 t7 t6 t' G% S: v' `- U
# X& c! P5 l/ ~) V8 y1 `& H1 D Q$ T4 n& c/ a! j) V% ?6 F \
6 t3 z9 |6 J; H; w9 X. ^
% W8 K5 {8 E- P: ^& O dispA[0] = 0;
$ O6 ^) l" M: X6 J) t dispB[0] = 0;$ R; g$ L* c2 J9 \8 ~6 U
$ r% R$ i5 b1 R y% g1 \9 f
5 h& w9 \3 f4 U8 c
for (i=0;i<8;i++)/ K }5 r9 A9 C& V: C1 ]. \
{
1 C% |$ j! w$ l- V4 v z dispA[i+1] = (segR[num2]>>i)&0x01;
* }; g, w4 m7 z$ S/ `$ U# v0 d dispB[i+1] = (segR[num1]>>i)&0x01; ( k5 i8 l% ^/ p1 }1 b8 n1 \1 [
, s0 [+ s& ~& Y! A- H/ @7 [. `* n$ x dispA[i+9] = (segL[num4]>>i)&0x01;
4 z9 C( H& X4 }2 e% {4 q dispB[i+9] = (segL[num3]>>i)&0x01;; S5 n. K' s; f* x& r( G
}
, ^1 ]4 J' p+ ^( g3 h) @ 9 }2 c/ ^7 Y+ i! k, W7 L
( \' a# F' M7 `, ] U, X3 A, K1 Q+ n( L2 \
dispA[17] = 1;0 F6 c) w: k/ u3 `! M6 v/ Q/ W1 _
dispB[17] = 0;8 r# H" Y4 m% \* ?" }, t
+ C4 M( X9 X' A& b; t9 z, K! o dispA[18] = 0;' ^0 C l1 o8 t
dispB[18] = 0;
- v2 v0 d8 f0 I( m* w3 b6 i8 r; R( F
dispA[19] = 0;; W2 A9 ]1 S3 U
dispB[19] = 0;
0 h( C% i& F% U! V' e& G
) S% o( Z; m8 X {" M! } yCLK = 1;0 C' m5 R: P/ x
5 H3 g2 R5 o$ ?8 E! x3 Q/ M
% a) \7 K1 w. s% ~* w7 o
1 L+ O; v: j# }2 z for (i = 0;i<20;i++)
7 p3 m+ q4 }9 w! U% `# _ {
6 O0 J) E s# ]8 J; t: d5 U6 v yCLK = 1;
u! w4 ~( u. h/ B& f yData = dispA;
+ b0 E" a9 p2 J- k) J! k d+ @; q" ^ delay(2);9 P" c" f5 r) K+ m/ n+ z0 a9 e
if(i>17) K1 z7 _5 X; F$ J
{yDLEN=0;}
& Y* i7 t* t7 F$ a: o: d- ]4 d else
( N7 g6 S( K$ d3 N4 e% _ {yDLEN=1;}1 M2 j8 i2 V6 Z1 q: Z) J: y) R
* I% l/ @1 @' i! G delay(dailyCount);5 ^9 q1 E% o, F: ^0 E+ S- `
yCLK = 0 ;
0 U; _8 K. M/ I$ y, g4 K delay(dailyCount);4 Q$ B1 Q3 w; s! p9 X
}
' v* m! f2 D, Q" c
: X, ~; Q0 T! W5 S yCLK=0;7 J( R8 G2 }* r$ O$ H
yData=0;+ i) ^ u' ^$ e0 `' y
yDLEN=0;
5 v7 G0 h$ ~- ?/ ~& M- y2 [5 ~ delay(dailyCount*10);
3 @7 i k5 N5 e8 I. L
; W5 G# K& k$ G" r2 J K5 d5 {
* \5 ^& s J3 H! P, s' X- w& d2 m& y
for (i = 0;i<20;i++)
! y% H/ u( i$ Z8 \' X) a3 V {
/ }2 q8 g* [' w8 [- s' a yCLK = 1;0 K4 u" c) Y/ ~) ?
yData = dispB;# G K9 ^; l- N4 [# W6 n: k
delay(dailyCount/10);1 @, T6 o* R! N& ^- M
if(i>17)
7 G; J; a8 T; u) V H {yDLEN=0;}
/ n' Q' u9 y2 m8 s) g8 V% p else
" M8 Y4 p1 \2 o1 e3 ? {yDLEN=1;}
. ~4 C, ~% d& l2 O' y8 \- C* s
0 \$ B: }, ^; y2 { delay(dailyCount);
; I# o Y8 q" x6 O* L yCLK = 0 ;7 f# B. ?& |1 G8 |' Z
delay(dailyCount);
) |$ Z3 Q- @7 H8 f }2 W6 o$ D6 ~( z6 |% ]7 C, \
+ q4 m' M, J( ]0 W7 r7 Y$ {' J: b yCLK=0;
( v9 \% z$ T: N7 x+ s `- J yData=0;
1 F, a% O, i8 T6 [$ Y5 S yDLEN=0;4 ]# g$ J8 {* y* w. x% `" i
delay(dailyCount*10);
: L1 j( R0 `5 {" M& z}
& t) b0 W$ U; N- U8 |
& r7 n; O# A, x1 P5 H
# U1 |/ x" n Q, V" n2 i. K, L6 H, X! J' I0 `
& B: f1 M' E( I. e: m( ?2 w$ I2 @
void main()
: p. X4 [/ X8 ~4 W5 A{6 S0 |0 H! H$ m! @; X
while(1) H; o6 J. M& W! _
{7 d/ _5 M+ H2 U0 ~6 W, Q
delay(4000);
c: f3 w5 M0 k5 Q* b+ R disp(0);
* d# a$ Y- }* q } ~: e7 l( B2 a1 w3 X' w
}
0 E6 O3 Z9 f- s6 O* _) R2 W' T0 X7 E* J
3 O- z% _0 P( t$ I, B+ _' S$ G! Z. u |