|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
74hc573-74ls273时钟仿真与C语言程序区别每个数码管子函数(*7)和整体数码管并一类子函数(*1)之间的区别;我们可以看其中数码管显示的停滞与正常之间的差距(proteus的原理图相同,只是稍微了改了下C语言程序), D8 P( T B3 e, P( H+ L/ C
74hc573-74ls273和单片机数码管的仿真图:
/ y& O1 w" m9 w1 u * k4 n" y; F) p/ n
, e) E0 Y, m& j( w
Q' b% {, d8 b; B9 a [0 `$ u单片机源程序: |
6 ~ ^8 E1 d% ^0 H6 ^% L#include<reg52.h>: c8 E+ ~3 k" v
#include<intrins.h>
& `- a$ T5 V- Q) w#define uchar unsigned char
0 i/ @6 y0 [0 J! {#define uint unsigned int
9 u+ x B, G( c: Tuchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};4 i2 |0 J; _" _3 n2 _) V. b# _
uchar code select[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
5 y6 G* j! [) U- p! `9 B; E) Qsbit dula=P3^6; T& W: R% ], b% |
sbit clk=P3^7;
, |) ~8 N2 C0 q- {. T/ ?uchar miao,fen,shi,adval,a,shih,shil,fenh,fenl,miaoh,miaol;: p$ M/ e6 R' v
void delayms(uint xms)
. K; \5 F% R# g, O% I/ Z2 D{/ v) V' P# `$ ?/ ~ ^
uint i,j;
/ M6 l' T1 X; }8 S. I for(i=xms;i>0;i--)% ~7 ^. q$ }- B, t0 Q" u4 @' \
for(j=110;j>0;j--);
# v- X3 p- Y7 X0 F}
6 ~: g) w7 @5 t" d# |8 T& {# n, a# B5 d6 D& `* H0 F
void display_shih(uchar shih), Q4 H# |4 j( _$ L
{
% m% N/ d/ N" q0 n) F( T# I2 n; u+ G$ u" k: z" c! S/ q
P0=select[0];
3 s/ f; l2 @ V clk=1;
% _: N! ]2 o3 k: e6 d; w clk=0;
/ f# a+ @! m+ Y' M dula=1;" f# g) L# a! D" n K/ g. ]1 P5 I
P0=table[shih];/ @; ^) A) T/ X1 T/ c% `
dula=0;
. ~! L9 d3 `" a* N. F0 e" I delayms(3);; K% E$ L3 q, f6 H$ y
}
! f( j5 ?- e) gvoid display_shil(uchar shil) n* a2 ?0 ]. e+ [
{
# F9 V( B1 B8 E5 n P0=select[1];
3 v* L! |0 I2 W: a! _: N clk=1; : t% N- ^& \; Y/ o4 l
clk=0;
7 I+ U, s5 C, I& n2 p! S( r dula=1;
9 E/ v6 @+ K& x7 H/ v P0=table[shil];
; D, I% Z3 r) o+ z& T; U dula=0; }+ P: R3 ^" w& F. u- ]
delayms(3);& g+ S# s ?+ x3 `% `6 z
}
0 x% y( J/ u. i0 ]void display_fenh(uchar fenh)
1 m3 j1 a+ F: t$ I{
. z: r8 S: y# Q P0=select[3];
3 C5 B6 P/ C' q- D1 N+ ? clk=1;1 {0 ]7 Z6 D6 |4 |- Q
clk=0;
) g& x% Q( A, j* p( l* h dula=1;
& T" q% x2 m# T; G3 B P0=table[fenh];
6 K, t# Y3 q$ s, R dula=0;
& _5 C2 O; |4 a% i( i8 w delayms(3);. L f4 a5 i6 u. _
}
9 w U4 Z2 t/ L6 b% t3 x7 G- {& r0 f/ A; t3 i+ L6 R
void display_fenl(uchar fenl)
& k( e" t% `: G, c: K- B* N{
2 T5 I/ H7 C! d/ T! Q- |* U P0=select[4];
' [; }: `& i# K7 S' `6 m8 y clk=1;8 T8 E3 U. o5 }9 t c
clk=0; , ~. r1 F3 D5 }- Q# Q
dula=1;
7 q9 U, w+ l. N0 a% }6 Q, m/ ^: } P0=table[fenl];
& K" |4 t) o# L2 l dula=0;
& V0 @" V: G8 z- }* g& @ delayms(3);0 S# [& E. ?# \, X+ u/ S/ n2 D
}; {9 ?1 ^' W, ~
void display_miaoh(uchar miaoh)
6 N+ r3 E& @4 k+ ~. M{! x9 s* D1 A( c0 o* l% z
5 {. k. B2 a) q
P0=select[6];
w" V( H" ~# X0 w5 }: b clk=1;
S. v0 q# _) _8 R& s& Q8 t) J clk=0; 9 Y. K# d1 |- d+ J) h6 q6 u+ T
dula=1;7 K% q* m' d1 u2 o5 d) D
P0=table[miaoh];
' t5 q0 i4 p" B- c7 v3 e% M dula=0;9 ?8 c* |# f4 Z& A4 W3 _' D& V
delayms(3);3 t8 A, T- ]6 H' A
}. {/ `' u' j/ o3 A( w, w
void display_miaol(uchar miaol)
4 b3 H) g# o9 f8 p{; V6 @6 r. ~: X, a1 r( C- _
P0=select[7];
7 `3 H& H1 o" E, s clk=1;2 G5 x/ p5 ^9 n$ b% X+ J
clk=0; # b& p* O1 Z' [3 B* _, n8 W3 |
dula=1;6 k% F% d8 \: F! D0 j
P0=table[miaol];
9 w @, n7 ~" {% J dula=0;
2 g; ?2 |+ S$ A1 I% D3 e delayms(3);! s& m$ A: @/ A7 A
}
3 k7 U% M8 }9 W) dvoid t0() interrupt 1
, l0 s" p( c0 z% z1 {1 b0 H3 L; B{* R4 t( S# r1 I, C0 m% b0 H
TH0=(65536-50000)/256;4 Q3 o& u: {7 @9 u F, \% f
TL0=(65536-50000)%256;/ c. i0 D/ _( u1 O* [4 c1 z) M
adval++;1 P! s/ T4 w0 a: u/ K
4 _; S4 m! r# U4 Q4 `7 l% g}
8 e `' h. w( Q2 {' j4 N2 Zvoid main()
1 [* W5 P9 _% J$ ^; q! U{
+ W: ~0 e" i( n0 r' F% y TMOD=0x01;
+ A: q c0 O7 Q TH0=(65536-50000)/256;" g, j5 c# J9 h9 H; a
TL0=(65536-50000)%256;
- k. D2 Q& f6 w! H. P$ K% @ EA=1;7 s# V0 T; q$ o4 D7 }6 F" b4 Q) I# {
ET0=1;
+ B" ~2 f% B0 Q D2 S3 P TR0=1;6 p/ f k; Y4 {& R
while(1)
: F6 N* _ e w% l {
* e K' X9 Z: m8 H6 [ if(adval==20)
( H" }4 d7 J; o1 d {
3 |4 Z# @+ a4 o0 C2 {% {5 L$ Z adval=0;: k1 r5 K. H6 C; ^% w0 @; m
miao++;
* E$ b& J( w! A if(miao==60)9 l6 h% _, D# J8 Q
{$ O1 T; {* Y) y" G* Q P, k* e4 s
miao=0;' p K! Q' S7 }- a3 F$ ?8 Q+ w+ Z
fen++;2 T/ k, n/ ]' S3 I- q
if(fen==60)! l7 C, ?" H9 p/ k
{
0 F8 r& ~5 h8 s) D' D fen=0;
3 x0 \/ U8 c/ U2 K5 V! A4 ]1 `, U shi++;* l, ?1 L7 ^# V% R7 n
if(shi==24)+ v2 n) Y, D6 S! Q" ^# H7 _
{8 z4 G3 g1 R1 ^7 L* ~; A
shi=0; 9 Z9 T: `- ?9 `' H
}- w$ h# F' R Q+ m- R- s) h5 S
}
+ }7 @: I9 _5 b! ~- j }
$ i0 ]1 F5 S6 A miaoh=miao/10;+ A' ?' Z7 J" V7 ~$ \! V, d
miaol=miao%10;
+ e. s: \% I" s7 g! z fenh=fen/10;- ?% I6 ~* k& M R! W
fenl=fen%10;; E- d8 Y2 n6 K- _3 J
shih=shi/10;. D: k6 n: p. Y. i1 } e
shil=shi%10;
/ S* x/ l. q+ U6 Q( _, Z* T* x7 z# e( o# H: O1 L
}# a' h8 X* f, e8 b. A4 L9 {/ ~
display_shih(shih);
% ~" p4 F2 A1 C
7 {* l' Z7 W# G ` Q! U; R…………限于本文篇幅 余下代码请从论坛下载附件…………. D" x2 F7 n0 v8 |
% N, `- b, t: Y5 c) @
5 [( Y! Y) F9 s f. p
& M) n) [/ V/ E3 ~3 t |
|