|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
74hc573-74ls273时钟仿真与C语言程序区别每个数码管子函数(*7)和整体数码管并一类子函数(*1)之间的区别;我们可以看其中数码管显示的停滞与正常之间的差距(proteus的原理图相同,只是稍微了改了下C语言程序)2 x+ _# S! a! U. @7 `% A
74hc573-74ls273和单片机数码管的仿真图:7 Q; A0 u0 E2 x% N9 [$ S
2 K3 M, K" M% l) V% ]" ]' Q) v B) r( B; w! P' t8 [8 W& k, U
3 ^& h! g9 H! r3 r4 |单片机源程序: |
) g: v L* _, E& h- u$ m3 q#include<reg52.h>
" E% G* a: T- H& e: p" p#include<intrins.h>
" N: v ~3 h$ s$ F8 W#define uchar unsigned char 5 k& J- G3 @& y+ p
#define uint unsigned int
* G3 s$ c1 B4 U& b1 r0 V0 uuchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
: q& g# l7 a( c1 P) Kuchar code select[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};! f% k5 ^! x2 s+ Y
sbit dula=P3^6;
4 o% B2 t- K5 L% g! ~) Gsbit clk=P3^7;
+ u. }; `+ g& M9 Muchar miao,fen,shi,adval,a,shih,shil,fenh,fenl,miaoh,miaol;+ V* x; J7 |& ]; Z8 j$ V
void delayms(uint xms)
3 W2 F E! z& }6 n+ u9 ?5 h: e{
1 W! {, R2 {9 ^" w+ } uint i,j;' w- E; H$ W- Q9 A7 S9 s8 z7 |
for(i=xms;i>0;i--) e7 R( C3 ^7 W/ S" g
for(j=110;j>0;j--);
+ k Q; [# D& c/ l. d}1 N) i; L/ p! E2 x
; R2 e# x; I/ E+ X2 k4 E( {% \void display_shih(uchar shih)) I. r! ?; m, j: t- V% S$ V% Y
{+ M* j6 G' j; |; C3 l* d2 \
# v- m) f9 F% @6 T4 U* W
P0=select[0];
( P( t9 r) ~# y# @! v) }' e clk=1; Q0 X4 G- b7 T
clk=0;
7 z* t, n2 l# C& v# ?3 N* o dula=1;4 G; k$ {" r: H# a
P0=table[shih];" l: W M2 D% Q+ M& b0 p! L
dula=0;# X1 ]8 t' s# @( T1 u
delayms(3);. U( v1 t C) g# K& k0 ~
}
9 k! O- O z5 t" r; M# r9 evoid display_shil(uchar shil)5 Y9 m# x0 A( A% B1 U. q4 _8 H
{
5 x; c( x$ q J d( @ P0=select[1]; * r( s: c9 H% K: v
clk=1;
- H& i* T* f! C0 h* |, A) ` clk=0;6 {7 ~! h/ x" e, d: L7 w" @7 {
dula=1;
9 }" t" e6 i5 P7 s7 T* m9 t2 r P0=table[shil];. o/ D. N( w7 X7 F/ c6 I# ^# f3 D! \
dula=0;( \+ h% S R$ q. {4 N1 s# D
delayms(3);( q: P6 H. |6 c, n7 ~5 H4 c
}: t c3 m% @) |6 q! |4 {
void display_fenh(uchar fenh)
5 D; h+ C+ y8 `$ T7 y6 K{
8 I% M" h: z; J# \3 n* {9 Y5 u, E P0=select[3];
0 L6 k; x+ ^: D8 \ B8 A7 j clk=1;6 e( y7 F4 Z- q
clk=0; & |) a2 ^5 `0 f* k* G( L+ ^( s
dula=1;$ z3 V3 `$ B( G9 y: ^; w6 ?
P0=table[fenh];: l0 R+ g' o* r! A
dula=0;2 p8 H+ W3 K5 @4 ~1 V* Q8 Q
delayms(3);& T% f* |- Z) Y& T9 q
}2 |0 z* ]" H; N! c! k, N
/ b3 H2 O& K0 o/ Z+ P7 X! \" @void display_fenl(uchar fenl)3 |' ~0 ~& m/ Q$ B- j7 F/ F$ `9 ~, v; h
{
: \7 {; S% j2 S( r5 J P0=select[4];! E: q9 { ~- N7 L
clk=1;! h- C& c& P( i
clk=0;
" P) Z% C* D4 h4 y! K7 h dula=1;# ^- k0 w3 j# V
P0=table[fenl];! Q1 g* M' u9 R
dula=0;. c$ W) J& y: g) Q' a4 ?# B, i3 ]
delayms(3);+ s$ E8 V1 x5 X! i9 J4 z: V
}
: w& p7 `4 Q7 `* uvoid display_miaoh(uchar miaoh)' I n2 b! ?6 ?0 Z, f( w3 }+ M4 f% P
{$ S2 q. V3 n; {- {' u
4 l" ~0 `( t- O6 F1 L. p$ m1 ? P0=select[6];/ t+ ?. j. t: t/ `1 S
clk=1;" M1 x% w* C1 h6 j
clk=0; ! q# w2 k) a j, O. t+ z1 p
dula=1;+ }6 ^9 m W; C% h
P0=table[miaoh];
# u; C6 Y: X$ h, K) K% l! o dula=0;
7 ?/ j4 Z, n7 @; C U5 N delayms(3);
v" Z: `/ m* d}5 b2 |; D6 T$ X; Y1 e# ~
void display_miaol(uchar miaol)
6 k. _; U. V4 b{+ C: V4 E4 f/ f; G- p9 a
P0=select[7];
! y7 s6 w1 ~% q( p; w clk=1;& q. g' ~; R0 |/ ]. Z4 u K2 m9 R4 ^
clk=0; 4 t# Y; j1 R% k
dula=1; p- F# Y' x, D6 U, @! _2 }
P0=table[miaol];
* q& o5 q2 H% d) M Y dula=0;
( D2 {1 O9 y7 W& K {, O delayms(3);
; a( K0 x6 W3 O$ y}- T- V. r1 l# n' r2 q. U* |
void t0() interrupt 1
( _) v$ X# q" x& X6 L# ~7 q{
' t5 U* o0 Z1 @3 R' Z8 L4 u) b TH0=(65536-50000)/256;: t( }1 R' S7 e8 E% J8 n& l3 v
TL0=(65536-50000)%256;6 z# Q2 u3 S! e. c _) ^1 v; t0 {' A
adval++;4 u, G2 q+ ^& o' P) A) k6 R- G
2 e) c! y% V% x3 P4 S} P6 w& `" ?" K7 _& @/ x7 h
void main()* l- K/ ] ?% H# Z6 M
{
7 [4 X! c0 z! V+ U TMOD=0x01;
5 x6 g4 R. E" W; B' w% { TH0=(65536-50000)/256;
2 _" i! ?2 k0 } TL0=(65536-50000)%256;2 Z% Q9 @( M# H0 ?$ l0 [( o
EA=1;* d" _8 M- K9 m
ET0=1;
) |" F( n/ ?5 ~: \! \& d/ Z! [) x TR0=1;
- E& A$ ~& h5 u; i while(1)# f# l+ C1 x0 j: i
{
4 I* |: ], l* x" I, {" Y5 B if(adval==20)- n" v, A( |5 B: T( c+ r1 J
{
- t$ E* e! D+ Z, @ adval=0; s a' o6 u5 X
miao++;" S) g- _0 L8 V4 n
if(miao==60)
' z. Y$ {' X5 W {
) u# I- I* `* {0 N7 v0 @6 a5 \ miao=0;
]8 y% k" V9 } @! G& K fen++;0 `2 U! r8 o6 t7 A. @" @) y
if(fen==60) ?8 R0 R, J2 |: O% k$ O
{
+ ^$ Z2 Y& e. L( b fen=0;: v7 r4 m2 s6 E+ w( D
shi++;
M; g8 `) h# F! c6 Y- v if(shi==24)
* ]; u4 b3 }2 o$ N3 U {
) }* `" n: H A+ L' V shi=0; ) O! X9 C B) ^, ?
}
5 c. M& I5 g* ~; {, ~& S }
7 w; H# _/ X2 D }
/ t ^: M# r! P7 I# k miaoh=miao/10;
5 Z" ?! q$ q' F/ p* c; T' i* G1 d miaol=miao%10;- Y4 |0 a$ k" h* p4 X# {' q0 Q" y
fenh=fen/10;
) Z$ |2 J: {% d) b/ Q fenl=fen%10;1 p1 H& U; K' l1 z4 q& M
shih=shi/10;
4 h8 z" t) v8 i$ ]% W shil=shi%10;
2 w6 K; D& { K4 F/ s9 y6 e6 S: n" Y9 g8 h1 f2 Y+ H
}
9 x% F" N$ {1 U" C: h# H; u display_shih(shih);, t A9 l5 t$ A
' Q# F! o5 p5 R
…………限于本文篇幅 余下代码请从论坛下载附件…………
" q* {4 Q! m' J3 f
9 X+ ]" j1 T- b. N" t* V v+ w3 y/ k
( `' s: k+ m3 @& z2 G6 n [4 r
' v* h) |9 o3 p; [7 |8 p" h" e9 K |
|