|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
74hc573-74ls273时钟仿真与C语言程序区别每个数码管子函数(*7)和整体数码管并一类子函数(*1)之间的区别;我们可以看其中数码管显示的停滞与正常之间的差距(proteus的原理图相同,只是稍微了改了下C语言程序)/ j( z& P" N9 H$ i. c
74hc573-74ls273和单片机数码管的仿真图:
0 I# t* v+ x \
' d. [* Z. ?! ]; k. {) J+ H+ h j9 a- |' C6 M0 }
5 ]9 B0 f& R' t2 o$ X) j _, N9 S
单片机源程序: |
. t# H# Y K8 X# m% E3 A1 k#include<reg52.h>: n0 ?6 ]" [1 U
#include<intrins.h>+ y* P% Y* H" M! I; X3 q8 G* |+ b
#define uchar unsigned char
6 D) S: A7 s3 c7 N& _7 D7 a#define uint unsigned int& d6 f7 w' M d' p
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
# n$ [8 Z$ \2 o. w- l4 T% _uchar code select[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
# p. T$ ?4 {0 r: q rsbit dula=P3^6;: X* x2 H/ z- }( J
sbit clk=P3^7;
, Z6 w( d7 Z- b; T9 uuchar miao,fen,shi,adval,a,shih,shil,fenh,fenl,miaoh,miaol;6 `! q8 G _- {: m; o
void delayms(uint xms)
. x- W3 Q- {' j, u, ^3 ^{2 I5 H6 }) j& x/ e, j, f
uint i,j;
5 D; f; N$ P& L/ W for(i=xms;i>0;i--)
8 @2 j2 W1 @! X6 K8 o f* J* _ for(j=110;j>0;j--);
" M% q. I, Y7 h: j% l" G* O}
4 a4 a; `2 D" B$ l+ T% F! F. O& S( L' h( y1 @5 C7 b9 K- a
void display_shih(uchar shih)
! Q* F. d. b8 } U# {& ]{6 Z8 @2 S) Q0 A3 ]: K+ z/ Y; a
" X8 L+ h1 ^7 u8 t6 N9 j
P0=select[0];: w$ [1 I* x# p9 V- o6 H
clk=1;/ e5 }1 y/ l! I( F$ |: Q
clk=0;
9 R L% m5 r3 q f7 A! }( X8 y0 ~5 J dula=1;6 W) v; c/ q7 g4 w
P0=table[shih];! R7 q3 d2 f3 M) {7 j
dula=0;
1 w$ G6 r1 G! t3 |2 i/ V {' r delayms(3);/ p8 G8 I2 X3 L: |7 C
}# V) H# E) I6 u4 ^7 t
void display_shil(uchar shil)3 T" k% i1 Z5 N. H8 U$ j" K
{
( r; V7 l x$ {& ~* ?$ n P0=select[1];
7 h8 I ^5 \4 j. ~ clk=1; $ G/ K) W% j) c3 w# I# G
clk=0;
6 J/ v9 O2 p- w* j! E dula=1;* C% J, t* _5 r6 p' _
P0=table[shil];# W( _; b! k* h
dula=0;
# T% }# P2 I$ |) b% H delayms(3);
7 p7 l# r; Y( `% Q}
& A2 a/ A( j _! I4 X- z4 u+ nvoid display_fenh(uchar fenh)
4 r* ~& ?! t: Q9 Z4 `3 {{$ ]6 e9 D; G6 l1 @4 B
P0=select[3];5 F3 t( `! j, X3 S2 o# A" L0 l
clk=1;
\! h8 O) N3 m( N% `) A. z* v clk=0;
" F4 U3 {, {0 J* Z& ?# t, I dula=1;; ?, D: H* h5 A7 c( Q8 l' `
P0=table[fenh];
V5 \' f% B. E% {8 u dula=0;
! g: e# j5 ?2 z* [: x delayms(3);7 ]2 B0 Y. }) t( R$ D
}
* H0 t e6 D! _' E# \) ?+ L& c
7 z- Y- _6 F2 n; ivoid display_fenl(uchar fenl)
7 l6 G/ R. O% g( |. }+ z, m- o{
6 o# j' m+ M2 R- c P0=select[4];
( q+ ? f% C8 n5 S9 _; |! T clk=1;
2 ~# J0 l b2 q! ]" U$ k3 C0 @ clk=0;
* _/ l2 ]! v8 X; H0 Y; T dula=1;
; }4 n6 A3 d8 O- _/ o! N. A P0=table[fenl];. Y# c0 G: o7 A3 O- Q
dula=0;6 m9 J) S- W3 |% m1 o, \
delayms(3);6 @0 t, \( \1 f
}
- m& R7 e4 ^* evoid display_miaoh(uchar miaoh)& N4 L0 A9 b6 C5 f+ J- Y! ?
{( D v% } c% [5 W' l9 G
7 J$ C7 w6 J( w, a( E
P0=select[6];
; [2 K9 }) N' [7 I% i clk=1;
) m+ W6 U, W2 P clk=0;
, e- @2 n: o2 H2 T4 h dula=1;
8 }& z, M/ O9 e4 u, M/ J P0=table[miaoh];( k; `' L5 V7 G( e9 O* ?0 z
dula=0;
" d* Q7 X& E5 a$ t2 j delayms(3);
2 Z O' d y, X8 X( m+ J}/ p/ U, O1 w5 {( `5 m+ H0 v# u q( f
void display_miaol(uchar miaol)
/ J/ i" b o$ d4 s{
& i# B/ \. G/ \+ y% s k6 k P0=select[7];/ \% h! Z* n& ~0 u$ `/ E
clk=1;
. x B5 s2 H9 [" {. W. d1 P% F3 K clk=0; / Y# d. p( c9 |- P' L! v
dula=1;
" l* D3 _8 P2 Y/ V+ } P0=table[miaol];/ s4 \- s2 [5 O& a, c4 K1 u0 V* B
dula=0;1 A" M2 t! m! a$ ~
delayms(3);, ` r R* Z3 v! y, t$ ` i* O
}; g! A' H# W* N4 b
void t0() interrupt 1
% ]4 I1 o* [; n, Q X1 J{
3 O% | t$ v: [' K u4 T TH0=(65536-50000)/256;* K/ U6 u* y, L9 Y
TL0=(65536-50000)%256;! q. h" I" A' S, A, [9 q g
adval++;
8 F4 W: Y" E6 \* x) v8 p
! I, ?% H: v: w8 ]# p2 S% ~; N" A}- ~7 U- U( U: U4 l: ]
void main()5 T/ l' B5 f% N! M' Y/ ~( Z
{7 [5 F3 ?$ N- L# G) g
TMOD=0x01;
0 {$ A' d, W# K9 o- r TH0=(65536-50000)/256;
4 l+ ^, V7 a/ L1 {4 {/ i TL0=(65536-50000)%256;
$ ?' x9 F9 q4 t$ R$ u" C9 s( X7 P! s9 i EA=1;
) [9 G( o6 c* j ET0=1;; N/ i) I$ g B; N2 R4 y9 g
TR0=1;! G7 N& U/ `: V j: R. v* g2 i
while(1)
: y# Y) U7 N& w; P( F2 V5 t+ ^' T {' h% K+ N) K5 x' t Q0 i
if(adval==20)
- \! `0 i, l: {; H8 R; k5 P% K {
2 @% K& @* g/ c adval=0;% N9 u3 i( _0 `
miao++;5 T7 P! H8 X7 m& N
if(miao==60)
% C9 a$ ^ e P3 x) u1 N* T {
7 @& l* Q5 v4 V ?7 K; Q% Z miao=0;2 J% B3 `) \: v2 l: {
fen++;* x; M: @) Y& H; n; I
if(fen==60)' x, @* o' r0 |4 [: W& u& J
{/ V8 {! ^0 f; v. [6 ]6 S# Z
fen=0;
9 \* t; F& A8 T! K shi++;
5 p. d3 Q7 Z* c1 ?- B4 H' G if(shi==24)
+ G; I) Y+ R3 \8 \' n* ? {9 k" W3 |& z4 @8 T3 M- A" b6 l
shi=0; ' r* ~5 y( {, e B
}' [0 b# K! n: O- C) x9 q
}
9 Z* z) B- g+ f/ k- m8 B* { }
; M' d) ^ O" j: U miaoh=miao/10;
0 N/ w3 }, k: G8 u' \% Q2 D7 r/ i miaol=miao%10;
" \0 ?; \4 V- b& ~5 B4 E fenh=fen/10;3 h+ `' q( v( I5 C$ ]! H
fenl=fen%10;& `# U" a! n0 S5 Z) E0 b m
shih=shi/10;
9 i6 B/ v. M: J6 l6 [$ u shil=shi%10;
( W4 ^' v( R5 v" B9 M2 C0 N* X3 S! ^) U+ n M* Q7 w
}
& _" n9 C1 b+ O5 ]$ ]9 Q display_shih(shih);
' v7 E8 P/ ^2 @" v0 c! a( n
5 y5 P# J% a. {3 s…………限于本文篇幅 余下代码请从论坛下载附件…………
! o5 H# F* b0 n4 c2 S+ [% B
: T/ h7 ]6 \3 v; [" W/ x4 x5 m
) I& Z. ^% E. E( k K: ? a) O. x6 c8 |& Y4 Z" g
|
|