搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。- `3 E7 U* e* v8 k
. @, K9 f1 D/ o1 I3 b
3 \* M# L& p( @" g. D; h' g$ @. T4 G
0 V" T h, C5 b, Z
1 O+ Y- |4 j/ `
' l( o, P" Z) R D% V
/ x- [8 f( y" j9 d Sdemo 的代码在这里- `; a% l& ^, U+ A+ N5 ~$ A" d! ?8 F" k
[! s+ G5 @6 `9 X9 A7 z- X+ g0 a7 B. a" L! H# {! R) a
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
{7 u( P9 }. b) _% `
, \2 B2 `3 T8 Z0 x+ j$ G5 Wsbit yData = P2^0;6 X2 l, Z7 Z1 t. Y3 R$ S
sbit yDLEN = P2^2;( _0 r& [) q, u0 d
sbit yCLK = P2^1;& @9 ~ q9 r. A
const int dailyCount = 200;1 Q* l. h* o; H2 k+ T: B! ?
! o+ v; f+ A% L
( n5 g; i6 ]; \0 `$ u- r# s6 m7 J' }+ M3 b' R$ ~4 j$ r" n' ?
void delay(unsigned int i)
( Y6 s" |1 ]$ y* ?# n8 c{& Z& s& E/ | b* p6 l: S" [
while(i--);
$ o$ _7 v( I |' z) F. f8 i}+ M+ D8 ]" k+ P( a: C7 o) \/ k0 X
6 C! I3 z* d. _ ^0 [1 z4 I
7 p5 a9 \" E" ^
void disp(unsigned int num )
, C. Z& p3 f1 t4 N. r3 F( }{
9 D* J/ F$ @' U0 A unsigned char i ;
" D0 q& V3 }$ p# r9 ]' Q+ w$ z
; O& H: n0 S3 P/ y, I8 s2 I& P unsigned char dispA[20];
8 j! O, I/ f3 x unsigned char dispB[20];4 Q3 v2 ]8 s ~2 G* Y
; X% z; O5 ^$ c
unsigned char num1;1 ]$ @$ S& X/ N4 n. X5 B
unsigned char num2;
/ N. [0 M- z, f! @7 O' i unsigned char num3;- l1 I6 e. q5 W' C) j- c* _
unsigned char num4;5 T) i; I1 N$ t3 t8 g% c6 i
unsigned char segR[10] ; //右
7 r3 e8 P1 `, `' F unsigned char segL[10]; //左
( z3 M- i% M! _: P4 k% H( ]& l2 V5 j+ X" c6 Q: \! B- r
//左 , _1 |: W& w2 E7 f. E
segL[0] = 0x12;
# I; O U+ S6 C3 L% b" ~ segL[1] = 0xFA;+ V/ A1 f' r6 [7 T# V
segL[2] = 0x0E; |* Q4 f$ d# V5 A# K; W
segL[3] = 0x2A;
6 _2 S/ g r; K* c& L segL[4] = 0xE2;
7 t2 U E0 b0 V segL[5] = 0x63;3 H0 W# m: J' c$ B: L" O3 a# ?, H
segL[6] = 0x2A;
/ a" k# j/ ~; Y) @/ E, q2 ^ segL[7] = 0x7A;
+ e; A# j2 u \3 u; b% G& b4 u) \- A segL[8] = 0x02;
" A. p c+ [+ x segL[9] = 0x22;- v/ z" `1 \3 H3 v% w0 J% D1 N
9 y6 I& n D1 X3 }; h+ K ! B( |/ }7 H/ |& L3 i
" s# A! G; y- a! \
//右) C2 ?/ B0 u2 n4 Y9 e7 \
segR[0] = 0x88;
! s f: ]& D* [& e0 a& K" N; e! E1 R segR[1] = 0xEB;
2 W5 u+ E" I4 Q* F. T segR[2] = 0x85;
! _* \2 q+ Y( I" E9 ~ segR[3] = 0x83;
+ |# H. A7 K; o( B& Y0 S segR[4] = 0xE2;
+ _- z1 r6 g4 N7 ]' g( q segR[5] = 0x92;( K; h+ z9 J, R: r3 L
segR[6] = 0x90;! W" S: n0 d9 E. _- I
segR[7] = 0xCB;
9 O: _# |+ W$ W# x, C3 W segR[8] = 0x80;4 u/ B8 U7 f8 w0 B) D. l5 a2 p
segR[9] = 0x82;
% |- A# F3 m' S
0 r o2 H* f9 c: r% Q
( b( S5 M) J- @3 [9 n' [ num1=num /1000;6 d9 B6 v$ @6 }! v" p* \$ J* @
num2=(num /100)%10;;, Z. Y0 V/ p, w1 r0 w j
num3=(num /10)%100;;;/ v1 b: }0 K& Z. P% [
num4=num%10; i! M# F& }, g. J
& {1 e- v! J$ k7 u9 W
( A* {4 I+ s" A( s" a- x* p# [7 @& v# g; H# Y( `
: @% U: S. l! C9 i* C7 `
dispA[0] = 0;( @; m9 i! r$ K/ W- l% ~% T( U
dispB[0] = 0; s r+ R1 w9 R
) m7 U9 i3 K" J6 ?+ m2 |3 o, H- B
( W% x; E( h! X( j3 U for (i=0;i<8;i++)' v: {, i% {( E P9 M% O
{
/ l+ e- |; v! G dispA[i+1] = (segR[num2]>>i)&0x01;
2 S; A, `3 j2 _3 v. |; p dispB[i+1] = (segR[num1]>>i)&0x01;
( y: |" k7 U u7 d& ^$ e0 H2 ]9 s* g: E5 y4 Y1 b( H1 h
dispA[i+9] = (segL[num4]>>i)&0x01;# x/ X0 \5 ^- ~. v9 h! v
dispB[i+9] = (segL[num3]>>i)&0x01;
5 W& H, i' v0 U/ R: h1 i& l }
9 N4 J" W( j4 U
}3 m' h0 F, l# l( b F8 D
! R) F' Q/ o9 a
8 Z8 w! [' N; @" b8 i% d- _ dispA[17] = 1;9 Q% b; U# {- Z" j" C7 E; _& a' x
dispB[17] = 0;
/ {3 g" ]$ l+ ^4 H1 A6 X7 ~# ]0 f0 n- c
dispA[18] = 0;
+ u) d: E3 N# w, q# c dispB[18] = 0;2 a7 O6 U$ b2 }+ M8 q" y8 P9 F
# u, |* R" }3 I2 o0 R7 q e E) t8 I dispA[19] = 0;
) @! H5 Z" X1 T' u4 M5 ^. N dispB[19] = 0;: O0 R' E# {# T- d8 t
( q! |3 P) j) M& |
yCLK = 1;
3 t* {: l$ P3 O7 W [6 U. E/ B3 ^ \# ?; _
9 x, |' J, s" w3 K% U- Q
: X/ \4 e6 z8 U2 S4 i for (i = 0;i<20;i++)+ w5 H3 m" z3 s& J4 A: G
{! e% |1 g3 F- V. F
yCLK = 1;0 N" W( m9 Z$ m J
yData = dispA;
3 t( ^7 f J- f6 {. w5 q delay(2);! \% F! u/ [2 d; {) _; b# g
if(i>17)' n) t" k; b4 n0 i/ y% X* H' a
{yDLEN=0;}
! O- ?( N# W5 Y3 {1 E% {3 S else K* D3 h2 e/ D0 I% D2 H) m
{yDLEN=1;}
$ o5 V2 I0 l9 ~* g/ A" Z$ U6 H0 B5 G& C9 h8 `6 F1 B) m' {
delay(dailyCount);
( b W) D6 B T* \ yCLK = 0 ;
3 R5 J6 ]8 V( i' T delay(dailyCount); t: x6 Q3 D) k2 i
}; o8 R+ U6 I) _( ~. n5 E! r
: e$ q3 T1 n) d yCLK=0;% F8 l$ L8 V/ J+ A9 @
yData=0;
. |7 Q/ }, z; a$ W5 n9 `& E8 K! [ yDLEN=0;
+ P1 X( k* t/ X" @4 d delay(dailyCount*10);' P" Z, F# y7 B/ u0 t" f- x% u
5 L" U1 D e% G8 i6 Z8 H( D# E
( {. j7 j8 s' q2 M$ Y; g
! }0 P4 h( x+ \. C+ q) r1 ~1 u for (i = 0;i<20;i++)' i! L2 G& t, C2 B" E
{
; B2 G/ _; S3 Z6 | yCLK = 1;2 v/ e% f% K/ B8 b! D
yData = dispB;
# g6 \4 o1 O8 ~2 A) T delay(dailyCount/10);
; F: n6 c; ^: ]/ `4 ~) O if(i>17)
' P& Z+ N- `+ J* H( K0 U& Q8 q {yDLEN=0;}* e" ^ `0 o9 T7 j
else/ \$ w4 W1 ?5 \) m5 ?) C
{yDLEN=1;}
2 s8 S1 B, h5 z6 A9 p+ e& k& O1 q* J' N
delay(dailyCount);% M [5 B/ ^( a3 Y% T
yCLK = 0 ;
& E4 p; X- v% O* T4 ^* E1 M/ }( } delay(dailyCount);
$ ]& F8 Y4 H/ }& w6 C# }7 ` }: l- M5 x* P* v1 u
% t' k8 R: V) l3 e9 t% T) m N
yCLK=0; k2 [% O: `7 Q% M' U7 s
yData=0;/ X- S( J9 K9 x0 I( A+ \
yDLEN=0;( W6 ?9 z- r0 n, M4 e! D! L
delay(dailyCount*10);9 q9 V* ?0 M8 i8 M- p+ k6 L6 L& u
}
$ d& U0 n$ N8 [' V. `3 j- E& W d6 @- L: ~5 k* ~! X
, ?; Y( e# Q& g D* }
6 {# E5 k+ w0 P5 f8 `/ J9 i! c n9 w, m p4 h
void main(); c* w. {/ g2 E, X3 \! {: N# E) R
{
; o! d, @ O5 e/ m while(1)4 K8 Y: O2 ]7 D) R! ]
{
7 q1 Q' K' [$ m delay(4000);
3 e2 r# e; b! J! l disp(0);6 {& u+ q8 v9 c4 C
}
$ [3 G' n$ u! V$ b0 V+ b4 |' I+ I}
* }/ n# d# v- C$ P/ E" u n2 j* S+ z+ f8 s
9 z+ ~9 @3 q/ m/ N. Y; ?
|