|
|

楼主 |
发表于 2018-10-21 20:11:37
|
显示全部楼层
搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。; Z1 k( t) O9 N6 c
5 S: i+ f+ `+ D, m/ M `7 C
& L7 M0 W; {* ?4 A1 L
6 ?, y; c3 |' b- J6 h/ g n
( W" {9 O' R. X6 |
" v# f, m/ d) B L
2 M; R* {" F0 g. _* x* R" Cdemo 的代码在这里5 m) P5 K ^" f
! K5 w0 `+ C5 d/ Q( r4 u( B# [7 g2 ~! d$ w' ?- z1 E
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
4 n, n; ^! T6 p4 @) J: }, m& D! Z# ?
sbit yData = P2^0;
- ~6 ?) G6 k+ H. s! E" ssbit yDLEN = P2^2;
& z6 r! i. M! r& o6 s7 Q* ^sbit yCLK = P2^1;
5 r& U8 i. _9 econst int dailyCount = 200;
) U9 u$ a9 ~1 |8 L3 z- O% K$ [) [; h& ^( y) e) M6 |
- H# E$ Z; U* B% ]: h" k& _ F; H% ^2 k: H- V5 f/ Z5 W
void delay(unsigned int i)- l5 w/ @: h" n" p ~, L
{
/ R$ M# o+ M+ k: s- y+ M3 z! z while(i--); 1 [( d1 ~2 M7 ^
}2 U4 I: H6 m' @
\5 x& z/ Y4 m: r+ D
6 _6 x3 `& F7 z6 uvoid disp(unsigned int num )5 i% h# s8 R' {: q5 w0 ^
{
$ q. k6 f: b" u6 G unsigned char i ;' y1 d# K, C* F+ u! y/ m
, R& l. N6 _ \, j. { unsigned char dispA[20];! e8 y9 c% _ I( p
unsigned char dispB[20];
* M& D' k/ E. @" B* i' ^' k4 c! \3 C5 i' t
unsigned char num1;8 w$ `+ O! o# z* X" o3 O
unsigned char num2; 8 b9 m# I, K/ T+ e8 Z
unsigned char num3;" f7 X- t \- a5 L8 L/ q" r: L; r
unsigned char num4;
3 n3 f8 L, T" L! |9 E* H1 Z unsigned char segR[10] ; //右
; W4 R# p0 k3 g8 Y- I8 u8 S; c$ o6 l unsigned char segL[10]; //左
- k) x4 w% j) d9 _5 i
! [: b$ s& w# K //左
: l% M3 v& K' } n segL[0] = 0x12;
" ]& [& G1 q; b2 _; w2 z segL[1] = 0xFA;( |# _ Q2 y$ v6 v$ m/ c
segL[2] = 0x0E;! v" {! N( ]8 @" L
segL[3] = 0x2A;
& Q( Y2 z4 o' M/ e/ X segL[4] = 0xE2;
* Y- K3 T$ @* ] N segL[5] = 0x63;
; b, g* D' u3 J) I0 L+ L; ]- n segL[6] = 0x2A;+ U8 P* T6 \7 F/ @8 ^! m2 |8 S
segL[7] = 0x7A;) O( f/ S7 F2 N4 q
segL[8] = 0x02;
) q0 v+ O7 o; \; W2 T' O1 K- q7 H segL[9] = 0x22;+ e: m3 C$ }6 y2 s& W9 T( U
# O1 [ s9 E6 p
% X- A9 y7 K7 H, S B6 p" u
" Q% v' _! n3 z. c9 j+ k //右
- v! ]: c! s v3 @. X! o segR[0] = 0x88;
8 m; u8 Z9 H* @$ G; } segR[1] = 0xEB;
9 b' n7 n; C7 S4 h8 W- |' i segR[2] = 0x85;
u5 q8 }7 l3 R# l% |# R segR[3] = 0x83;
/ D4 q' p4 N4 l* C! J# | segR[4] = 0xE2;
3 a8 v$ P; B& D; v g) P, o8 h segR[5] = 0x92;
" s: _3 k" x) f segR[6] = 0x90;
0 T. u# T- S; v0 ~( } segR[7] = 0xCB;
+ K d! `$ W9 O" o% h2 o6 ]) Q segR[8] = 0x80;
8 D3 b) }( _2 Q) u9 y3 p' D3 S segR[9] = 0x82;
, q, i0 I3 z! \1 D
. d( P9 Q; y6 g5 d% n
) q/ T) E# f! b. G b; f num1=num /1000;; E' E: T* F t4 O! [' F4 z
num2=(num /100)%10;;1 u: _: W+ q# ^; \4 {
num3=(num /10)%100;;;; E: D1 y7 {7 K$ j; {
num4=num%10;+ Y# I- Z) u7 H* |4 c- Y; [ D
4 J$ z9 y9 G: j$ Q2 {
7 \; z' `& |6 S0 Z! q7 M0 ^* X
2 j% s, H% Z! L4 T0 q
$ h! W6 v. h% H/ E" ^ dispA[0] = 0;7 d* t4 D9 }$ o1 W ^# ^- I6 j
dispB[0] = 0;7 K: @$ G7 g3 p0 @7 i3 L J/ ^
# h4 L5 g9 s( ?+ o) c
. \9 B) L; I* b) N; o9 Q, K5 }0 S for (i=0;i<8;i++)
, [+ n8 g# v% K& I' |3 z1 M& d2 j5 @* ?$ L {1 a- J' |+ c& s. M2 W# P6 u
dispA[i+1] = (segR[num2]>>i)&0x01;
; e9 D- C) o3 O8 j dispB[i+1] = (segR[num1]>>i)&0x01; 5 E* m" p, v- L. ]' \: S
" I7 x4 q4 A5 @( g/ Q* y) i4 {* r
dispA[i+9] = (segL[num4]>>i)&0x01;: L" d% P, l$ J. d1 K: Y2 M
dispB[i+9] = (segL[num3]>>i)&0x01;& b g0 X+ H8 l" d a
}
$ K5 _8 P/ q6 v" J. i4 V
$ r a1 u P+ `+ y N: J$ a6 u5 [
# C- s' E- s1 J4 {# G
dispA[17] = 1;1 Q3 E$ m3 E7 r- S9 h9 V' [
dispB[17] = 0;
6 `4 h7 F. i: h d! N# I# m( m+ x; L2 w4 C P: m. M
dispA[18] = 0;
! r4 S; i b2 u dispB[18] = 0;% D+ R3 P6 f/ v/ @5 u" `, q
/ O0 I* ?0 ~# P6 ?/ R) F, S
dispA[19] = 0;
& f0 R [' X# U+ c5 T dispB[19] = 0;$ G; Y8 m9 ?/ m' f" C) M: k8 v
- i( T& y& _; j1 X/ o- A5 J yCLK = 1;
$ b2 ^5 X8 ~/ K0 \2 x" A# O/ A# C9 e4 r& B, |! J9 M5 t
* ?( d* w/ }; [+ S u( O7 {
9 E J% e' {4 ? for (i = 0;i<20;i++)
$ u/ ^6 i; ]& ]% Y/ ^) x% |! A {
9 V* T: ^! S) G7 W0 c9 y yCLK = 1;
% M( M5 O1 M" Z! S yData = dispA;
0 U/ j* V/ F0 I* Y) K* ` delay(2);
4 a( \& i/ T4 H* Q0 s: g2 }5 s if(i>17)3 {* j3 t, h, ?0 v5 d5 v9 f; P0 \
{yDLEN=0;}
* I( T9 o2 Q- |7 \! ^8 [ else+ M( J5 }8 V. u# ?9 Q1 |! J
{yDLEN=1;}8 n, \) [# x4 A# }1 t: h
- W/ r/ ?3 `" p9 m; Y9 m
delay(dailyCount);
6 I! A% D! ]6 c yCLK = 0 ;8 P: S, v1 w3 B2 G, |
delay(dailyCount);1 D+ }7 ?; @! F2 B5 X7 r
}# i5 @8 P6 Z% m. i1 u: B9 b6 E/ ?
3 v8 h1 [- `1 l# p
yCLK=0; O; l1 _3 q* l
yData=0;
j i1 z7 e' v% x! Y; i4 U yDLEN=0;
( x. H( [/ j3 n5 O delay(dailyCount*10);2 F: s+ l& ?/ T, i3 h
: d7 c `% m; T2 N$ x, c2 S o
. s. M5 `# H K. ^4 I& q4 K* m# g0 W* A1 j' y. R, Z" o% ]
for (i = 0;i<20;i++)% J w( U: `; r
{) D2 o4 D1 i1 r/ G, e1 ^
yCLK = 1;
2 R: }* Y" i* o. m+ d9 b) R) P yData = dispB;5 ?- v2 w' H, D# I& m+ ^6 z! {
delay(dailyCount/10);4 m+ n/ s7 A2 C. s X4 T; w
if(i>17)
( T' v9 Y6 g; H- t- O" R n {yDLEN=0;}- i" K0 i2 q/ N6 L( H. Y
else
$ R( Y8 D- s# ]8 y4 Z4 D O {yDLEN=1;}+ C' H' @7 a0 b2 ]% ?6 H" O
5 c* `. Y0 K4 d- g4 c
delay(dailyCount);# q* |/ r: A, K( H$ [% [2 E- [
yCLK = 0 ;0 {! ^9 H2 |0 M; T3 `0 B
delay(dailyCount);
) L K B5 R: F: R+ Q- R: u5 H }1 t0 w8 R! T6 [" k
0 T: `1 O$ l# T0 ? yCLK=0;7 x* _% [& G: j2 }+ `$ A! t
yData=0;
_' D# }. |' Y4 `4 V- @# l% v yDLEN=0;3 V- Y. s6 B/ e: {7 U7 ~" m/ Q
delay(dailyCount*10);' d: C: s9 ^6 J1 V8 L- g6 }7 K: m+ r1 W
}
- `, q. p3 Q( n0 K% k5 l
$ {2 K& u2 B8 A9 k
! i, [- z0 [: I5 d$ @& @- g4 X. [9 c: q; d1 ^
% x7 G. Q! {3 W/ |; S( I# Pvoid main()
0 @+ H& }) B9 R( T- U4 G{8 F0 h* m1 l. f1 j, R% U t' y: N
while(1)
, D+ c4 r1 [! y- ^ {4 q# A& B! T+ G0 v( l
delay(4000);5 ~3 m' X" }# r0 m3 Y. }+ f
disp(0);; U: y8 |; Y4 f! k5 B3 u9 u
} % S/ z3 Z& }9 O
}
" i* s# u; n: _# r" p7 j- j
J$ L9 J" M9 ]6 L- G* ]4 k Q/ ]/ _. E5 k+ C! \# ?9 C
|
|