搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
- X6 B1 y) J' X7 q
( X: S+ T$ U7 X; k- x+ H: @' ~) S, H, `% B3 x
# I( O& O% p: g3 c9 x* \- {. w! x7 L$ j0 w4 k
, A( s1 \" W; E5 E
2 E5 U2 s9 f! T/ H6 Q+ wdemo 的代码在这里
2 x! w: K9 o8 s. D7 q+ x$ ~$ {
) s* R0 g0 A% X9 \9 K) x8 ^- N% G1 K$ m' u4 y+ s
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
$ R2 w1 |2 x' _4 h) ]: b) W1 Z* t; D% ~0 \) z
sbit yData = P2^0;
9 X( ^& c$ ?: g7 X) A9 P) m( ]7 lsbit yDLEN = P2^2;
9 g# ]* H* C8 g& k4 K, fsbit yCLK = P2^1;4 O$ U6 S& c+ ?. F. g2 ]
const int dailyCount = 200;
6 u! h% m" I! ~/ Q: ~. h
O( I1 E! D5 S. c3 b/ v9 m3 |0 `. v7 A! \
, ~* V" M) G+ C5 B1 Z" l5 M
void delay(unsigned int i)
9 q- b9 H0 {3 h3 q6 {{# g, z+ M& E& I- o( s* l
while(i--); $ `! F# S6 A" ]
}6 ]8 [+ X5 N% U1 |6 G
3 J6 ]5 i$ J1 Z! B: D7 v( V3 ?. {8 o; W. B/ m* T0 T; v9 p9 S+ O7 f
void disp(unsigned int num )) L0 E& H+ B$ a8 z# J' {
{
! I! g" u, `: \7 H$ x+ D unsigned char i ;3 W) G( {0 j5 _! H
7 K) M6 T) C G) [9 h3 O$ ^% h. i
unsigned char dispA[20];$ O$ { E3 ` _) g5 L4 G
unsigned char dispB[20];& \+ U: ]0 ?# b" g2 ^
. }9 k5 a2 E6 Y) v5 y
unsigned char num1;
1 Z. |# H! b. @7 `3 O unsigned char num2; & i" [+ o3 F# a/ y9 p9 {
unsigned char num3;7 N2 C8 l! e+ C, R& X
unsigned char num4;! f% B+ @" [; z0 o
unsigned char segR[10] ; //右/ P( Z1 m. C2 C& p" z
unsigned char segL[10]; //左
8 ~( R1 z# N; P6 C& O! {4 I' `: h" C% [7 f. _' i) \* f' C
//左 " s* S7 \. G2 B) i j6 [/ B2 F, b. [
segL[0] = 0x12;. O6 w! i; x) t$ p7 t7 z
segL[1] = 0xFA;
; l+ F7 J) {, w, @9 \ T; x) h, d$ | segL[2] = 0x0E;
# E' o) r0 j8 X/ c% ?% ? segL[3] = 0x2A;& f k" \: F0 @. K" X& N/ u
segL[4] = 0xE2;# |& d: T* R5 ?
segL[5] = 0x63;& L$ y: c0 r/ Z. N& o0 \
segL[6] = 0x2A;! P3 q3 l) g! D
segL[7] = 0x7A;
% I ?1 c) e+ x& c9 c segL[8] = 0x02;% t0 x8 @: h+ F6 F' F
segL[9] = 0x22;
- U- j! M, F& u0 b2 Q 7 g' [! h5 u1 b! c- T$ W! f3 a- O* o
6 h) _ J; B- T
; q5 R0 n5 h/ V# v0 T2 P6 k //右9 V3 x% f) `8 i, E
segR[0] = 0x88;
, m2 a m7 a! x segR[1] = 0xEB;
, S6 p0 o! {# H' u segR[2] = 0x85;3 b" H& ^6 \0 i3 b+ Z6 ^0 l4 p
segR[3] = 0x83;2 f" ~0 _* _1 n F1 h( {
segR[4] = 0xE2;1 u% c& l7 @# o) |% ~
segR[5] = 0x92; ?0 I8 w# X3 F- D8 g
segR[6] = 0x90;
7 o. T7 v% d/ X. C7 q r segR[7] = 0xCB;
3 w C ~: h. l1 k& w0 B5 _9 F3 u1 Q9 u segR[8] = 0x80;
% T8 P/ ]" }. ]3 T segR[9] = 0x82;: d& m: E) t( ]: X1 T* X- Z C
* d/ X! ]; q# e * G3 p& ^/ f- I2 s% R9 j
num1=num /1000;
0 J5 E/ _) X, ~ num2=(num /100)%10;;8 m _( L/ l* A; I2 ^) q0 b8 l) P
num3=(num /10)%100;;;
- f: N" I4 R2 _ A/ S, f num4=num%10;3 |: w: N) H+ J5 U, v) n
- \' q" M& Z+ H6 y& h/ ~9 P u
: \5 z* b4 r+ O/ |) U' r" J
! |4 X9 F& q6 c* o4 M$ d
( B! W5 D5 }3 q# ]0 \5 [ dispA[0] = 0;
( c" W4 m& @! B; O$ J dispB[0] = 0;
. ^+ y2 V9 i% J3 H/ b+ ^" l% z6 \# ?; F3 ~6 J' C) |/ h
* R- U( Q4 Y+ B/ ]3 ^ for (i=0;i<8;i++)
. K# x# b# W/ N% s: L: y( K {: _2 N# t' k" Z" N# I
dispA[i+1] = (segR[num2]>>i)&0x01;
! f0 E9 v( W" J' T+ T/ q dispB[i+1] = (segR[num1]>>i)&0x01;
2 g9 K+ h8 K9 f# `% P+ C4 |! ?0 J
dispA[i+9] = (segL[num4]>>i)&0x01;, E; a+ n. [& y# n$ F, H
dispB[i+9] = (segL[num3]>>i)&0x01;
+ }: d( _; _( A }1 m& ?7 C/ c- X& V9 Y
6 u( D) F' g3 q/ G& I2 Z
6 e, }: v, z# [; i3 T) s I4 H- [
' B: `. @5 | x6 u dispA[17] = 1;( j) i8 ?1 k5 L8 L; m
dispB[17] = 0;% V3 P8 ] l. k4 E# q4 x
. B) r9 Z5 z+ {. \, J dispA[18] = 0;
* O) ~( T* s5 @$ l dispB[18] = 0;" m' z# |" H6 Z$ J7 n$ W8 y
, ?% [6 k! b# b( ^' D
dispA[19] = 0;% S* Q5 m1 I2 [4 l& N
dispB[19] = 0;; C8 Z7 o, y b- o
. s% q7 Z3 a. {1 y0 d* S2 P
yCLK = 1;8 Y% v! o# P2 e! m0 z) d
5 r' k( p4 T* s7 H2 d' N$ D; p% y6 p% J& S$ v: O
; g$ g1 h* u) Q6 W, T$ S! E# Y% K
for (i = 0;i<20;i++)
, P; H' N' Q1 H( Z1 r8 P9 | {, g3 z& `: Z* o8 v3 w
yCLK = 1;
) E+ f' g) I- C3 t( [% }( I) P, t yData = dispA;; z4 e# f8 {3 A5 ]0 X4 @ V+ S
delay(2);
9 D# ~2 v: B- r if(i>17)2 ]/ m) v7 y0 f: p* X4 C
{yDLEN=0;}
, f# C' g: e: C else" W) x2 e( U2 t" [7 ~
{yDLEN=1;}
J6 e2 E) U- r: ?
( B0 C( A2 w; ^+ {) | delay(dailyCount);
3 X8 R% U- O" c+ Q; Z9 p yCLK = 0 ;
/ L. u- I6 A( `9 Y$ Z0 `; g% n delay(dailyCount);
/ _; f/ i7 I' ?8 L' U% J6 m }! A; \5 @" n" L; y" l+ A& M
; t2 Q1 A& Z2 O) ?8 {% C; Y
yCLK=0;; k- i) i) m# ?( C) } y; M9 N% ]
yData=0;8 Z7 z" V* [* h/ O2 L, D- L
yDLEN=0;
- ~" {1 I* G/ b6 d$ t" `% S4 o' E: V delay(dailyCount*10);
5 i6 ?. w0 b* g( t: }4 ]
% p; a, F! S" X; J% C8 t! a; U& ~1 |2 O! U2 L: g
* n1 p# z( B- o% U6 Y& t for (i = 0;i<20;i++)$ q# H3 [' k3 n4 M+ Z8 t
{4 W, Q7 D2 S q* B; q
yCLK = 1;6 ], J, {0 o. b2 T
yData = dispB;
5 n8 J8 u" `8 G2 O$ ] delay(dailyCount/10);
% {& v1 T2 [& K. A; G" X if(i>17)8 O! Q- b+ k) Q9 R* i, Q
{yDLEN=0;}
! `) M& ?" B: _9 I else! l6 r- {! g& m, c$ R8 i
{yDLEN=1;}: y: k5 o( K* R% c* e9 D2 x
7 _' g/ ]% [, M9 u1 r1 y% C; ]0 [
delay(dailyCount);: h. c* }6 J2 U b
yCLK = 0 ;
# d9 w/ H! `+ O/ p) L2 Z6 T2 { delay(dailyCount);
6 u/ R1 }8 t o( r7 z* c! M }3 X1 [- @ r9 _" n0 e0 z' R
6 p; f& u9 O: E i+ \, k1 w1 f
yCLK=0;" U* A0 s% O* J) h. X3 E7 H3 L2 J# Z
yData=0;4 o& h" E9 t3 r0 T' t' p% G' P
yDLEN=0;
( k& i2 O( t3 ~) h) w: @ delay(dailyCount*10);
% E% g8 k3 o& ]! ^9 h# ^}; p0 l2 i6 e/ |( i* w* o2 i' O$ ~- u
+ p a0 F% o; T
7 n* f: N* z+ W7 H
# f$ p9 v$ ] I& I/ ~9 ^5 w" c. K- J! O
void main()
- {7 P5 |* m/ i9 l, D B' x{
! N, n- @9 s0 j: Y while(1)1 p& b* r, ?" F/ P
{' [ }2 K4 v+ e: w4 W
delay(4000);
( Q. O: L F( X# u6 U( V+ w disp(0);
3 R, a( f# u- B }
, E, Y" h8 P d& ^; J4 X0 H. t! t}
3 e6 B- ]" m+ W! X/ L+ i! d
! e! W5 N% S! W! k! c4 F3 d* V# P0 O3 P- G; B
|