|
|

楼主 |
发表于 2018-10-21 20:11:37
|
显示全部楼层
搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。3 s5 r" a3 i! M3 z
" z- p. c' }$ d/ {% w6 \
3 a5 ]: D5 J3 v- K- C$ s6 x$ H
5 x: A/ |4 T( o( K
7 }) V: Y0 T6 t$ R' X$ i0 `" H
" l% K# K+ [- r8 C; r
# T$ J# X; G! C* L5 p/ Rdemo 的代码在这里
1 s9 u |# W* e: h! l
. k, r# C, N4 ]1 b/ s
6 _! L# o" A+ D6 W! `; \4 c7 v! w#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
J f& w/ Q* o: i! }+ q {+ d; h; X2 U1 e5 f# ~+ d) O
sbit yData = P2^0;
, c& h( T* u) g* `' u3 B& wsbit yDLEN = P2^2;) A: x- h6 c/ H
sbit yCLK = P2^1;/ @# D" ~6 ^1 I1 M6 [9 _
const int dailyCount = 200;
. L3 T, v$ a5 P. M' R) ?) H+ _0 m1 C# D6 S
1 L( {8 n9 }0 \8 F0 `* D0 m" m
& N9 l/ z# ^2 ?) b$ X" ?void delay(unsigned int i)7 g, }5 B1 l6 t/ S+ k3 X, r& m) l
{
# S+ o( s5 d( _+ w+ V Q$ y while(i--);
9 m( d( q f P! J5 i4 a1 ~; P3 w" p}( s. _9 m0 d* M0 U) R1 }
3 ?+ T* s' |8 W z5 L5 i
# f8 Y J; ?) V* m$ _9 ovoid disp(unsigned int num )2 v' u; t1 d; U$ j0 H; Q2 K# w
{. t d( w* @8 k* X: X+ B6 O6 [$ X
unsigned char i ;" ^1 ]; ]+ C1 D+ i! R
! Y* s+ P, ^' B! i+ e# c) B
unsigned char dispA[20];5 W+ v* K1 U+ K: P5 }0 i
unsigned char dispB[20];- {1 ?0 \+ L) C' f: b2 H" |
6 O7 H( F2 ^( I5 h) x unsigned char num1;
! ?* V* D5 R2 f4 ? unsigned char num2;
8 e7 \+ Y# m3 u+ g unsigned char num3;
( _- s! q0 S! z' T unsigned char num4;9 p! y7 ?# G& G0 M
unsigned char segR[10] ; //右
! A" i s9 d5 K0 d; F unsigned char segL[10]; //左! R2 u' {% j1 g. W) ^9 m9 [( L/ h+ u
" ~" i. K' T# U w9 l8 y" o //左 5 i5 e0 N8 K* t& p3 W" q. m
segL[0] = 0x12;4 t- }5 i3 I6 m0 P$ v) I
segL[1] = 0xFA;
% g8 m2 e* f" j, C2 o( K6 Y segL[2] = 0x0E;! u/ b, J' D9 K. f% n: J4 C8 V/ i
segL[3] = 0x2A;
# n$ W( u, J# q; ]6 u$ F7 P/ h segL[4] = 0xE2;
) E0 D4 f5 Y: m% n segL[5] = 0x63;4 E# `) Z. W8 O5 \
segL[6] = 0x2A;
7 r& g- b: o0 A' W) X segL[7] = 0x7A;
# N$ C4 H0 u1 t$ P( l segL[8] = 0x02;
0 S0 Y8 v* F/ h segL[9] = 0x22;8 k+ X% E7 Y3 O0 Q$ u
6 c1 u) f$ l; c0 p# h4 {3 g- } - s! |& D2 |/ {2 T+ _, t
' ]* R' k! ]3 P% R. d: W //右
- `2 |: x, `4 W8 }1 ^# v' z segR[0] = 0x88;* F! G: h, c: ]! i; A
segR[1] = 0xEB;/ J: i& h$ ^7 Y! l3 }( G Y' h
segR[2] = 0x85;
' X2 _3 d. `' g; \0 a# J( f$ G6 G segR[3] = 0x83; Q/ \+ K. x$ O
segR[4] = 0xE2;' C9 M3 U+ k% m% h o5 h5 Y/ `
segR[5] = 0x92;" R) e( A& c' {/ }0 q
segR[6] = 0x90;
0 I( v. ^( u/ N segR[7] = 0xCB;1 T" e- x0 _% H% I d7 P5 ?/ }# K! U/ e
segR[8] = 0x80;
8 L) l6 l+ s7 Z% D; n) i* j segR[9] = 0x82;
2 k; L- a! M' `* ?7 n
/ J+ @; e2 E) a 8 X! Q: H, P- [: {/ j5 V
num1=num /1000;+ r0 _9 V6 W8 x) \+ e& d
num2=(num /100)%10;;0 s' j/ v2 c% U, Y" k7 J( D! g- ]9 A# W
num3=(num /10)%100;;;4 a* M8 l6 E/ z! J
num4=num%10;% K9 o# C: K6 l$ ]
. L. E/ k' Z# h6 o
! f$ w+ n7 V, T4 L6 i2 [# @- y. n f# b4 ]% D
- q1 i0 p8 T3 ?
dispA[0] = 0;/ \9 c$ X! @3 ?
dispB[0] = 0;
% k- b) a3 \# b
3 N |6 f4 p7 r
+ G9 R0 w8 c% p/ } for (i=0;i<8;i++)' k6 b3 D4 Z7 `: \% l5 }
{; I9 O$ t5 @+ _2 ]
dispA[i+1] = (segR[num2]>>i)&0x01;8 Y: T6 Z+ N+ v$ o4 |) |
dispB[i+1] = (segR[num1]>>i)&0x01;
+ B `5 a8 A) h( a3 |! ]2 S" r0 Q
dispA[i+9] = (segL[num4]>>i)&0x01;
$ R- E9 {( q; e% v# O1 L$ Q d dispB[i+9] = (segL[num3]>>i)&0x01;
- g. P% a/ }$ V1 Z+ ~+ t: y }. U+ X L+ B+ Q5 q0 p
1 u1 `( K2 \6 k! b1 `
/ u9 A. |8 H. ~ a0 C; u' v9 ^7 j1 I. G& y" K9 I Z% E
dispA[17] = 1;
% A) n, b: n* a7 f# X. U) i- E dispB[17] = 0;
! B3 \ D. T1 ~! A5 Q* w% @& N2 Q4 |8 n: y, B0 Z! z
dispA[18] = 0;1 t8 @9 V1 `! ]+ ?
dispB[18] = 0;
% W6 X" E. D$ {. |& r u+ J
- T9 ]2 l; N. ~3 E' _ dispA[19] = 0;
: M5 L5 |& X n3 I dispB[19] = 0;
+ I! c P! Z9 d5 |& C7 ?' ?' C [, Z# n1 H' L
yCLK = 1;
3 l9 R4 E0 ~( O+ Y4 {; ?$ B6 w6 u, Q: a3 W% y
6 V M' B( s5 {
) M M. T0 f3 W" z/ @7 z% U3 F for (i = 0;i<20;i++)
5 x3 t S: L/ _2 y1 G' {+ `# `& k" w {
/ |' F, l) y+ f) U6 y2 F yCLK = 1;* f# J2 N" r9 G4 O$ I
yData = dispA;
: X( ~3 ?* a3 m delay(2);1 T7 h8 e6 Y) k/ U" s1 f9 Q
if(i>17)# V1 i5 K: H; r. L9 e7 W& w
{yDLEN=0;}
3 g! I! d* V) R, H else+ c6 Z3 Q- g. {4 c5 l
{yDLEN=1;}
2 K7 E1 G& f0 c; u
1 i# ^9 K7 O1 A! b delay(dailyCount);, R8 i/ p. |9 U8 k& D7 S
yCLK = 0 ;- |$ H: N$ o) M) V$ T0 [- ]5 S
delay(dailyCount);
- o9 q9 j B8 C/ R3 R }7 X2 b: p0 D* v/ r6 Q4 S
* _3 X" b& ]; l' D. p3 ~5 @
yCLK=0;0 S8 t5 l8 M* d0 \. m
yData=0;$ k) c5 j/ _! K
yDLEN=0;6 }2 T5 M* Z3 D! p
delay(dailyCount*10);
- h7 e$ `) ^2 i2 y" r; t0 }- p
' ?6 u( y2 }/ R8 ]5 f8 ]. q- g2 e+ t. M# ~
' j3 t2 u7 g& c6 B4 m0 X- V4 Y
for (i = 0;i<20;i++)
0 A9 E+ X" T" g {
: G, \! t- m% Q& C( b6 I* w yCLK = 1;& N2 h0 l- Z1 Q8 x2 U
yData = dispB;2 n7 j! Y0 S. ?' [ W, L- [6 W7 n
delay(dailyCount/10);
, U k) T2 {, A/ k if(i>17)
+ P. \! c$ Q8 {- f" N* Z; g8 K1 @ {yDLEN=0;}
0 }. @, ]- |* l2 n6 Y- Z+ e& W' t& M) Q else y% A" O- n! E% @3 Z X
{yDLEN=1;}; x. X3 P1 x, e$ _* Z9 O% e
! b# _. u1 p* K delay(dailyCount);5 Q9 h* B0 Y; t& b+ ?; t. U
yCLK = 0 ;6 f+ d/ m* K1 v: a
delay(dailyCount);
2 E! P! m7 M% d- `( _ }2 P: k2 J$ s5 v. T9 m* b
" Z; @* j- C9 d2 R5 p t* a yCLK=0;
8 e! w& i. g. K) x* O yData=0;
* I! m6 q; \8 i/ `9 T' d4 c yDLEN=0;
Q6 |5 ]2 P! `1 G/ X$ [ delay(dailyCount*10);" e: m& s3 O* U
}
$ s" R" T' Z7 R% |8 h( O+ n$ p& J' @, d3 J5 H
4 j8 h# {5 m$ G( X* @7 V, r* Y2 w7 ^0 A0 X; ?
! q: }" W9 W" Y8 X1 d
void main()
7 X( n* f6 ^$ E{( Z8 ~& C# m/ F U
while(1). m! q( ^4 } z) Z- C4 f& M
{2 W7 t% w% C+ @$ _5 G5 u4 U; N
delay(4000);
9 e( B" t& M3 U& w, h5 k: k disp(0);6 w. Q+ d% {9 b' j; j, r1 i8 q* t
} 8 Z. P" ?7 K9 a2 z9 W
}+ i( l7 Y$ v0 M3 q
3 r- m& X- V- R1 A+ Q0 Y; F2 @: |% D$ q4 A. _9 {
|
|