EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 kinidrily 于 2018-11-27 09:41 编辑 : |* X% q3 _/ x; i. i: {/ F7 U3 N# b; }
7 A# R3 c0 h5 e+ ~( K" U
单片机数码管显示数值,按键设置数值 源码加proteus仿真
( Z9 i+ U4 X/ A1 \单片机源程序: #include<reg52.h>
% ^. z0 e6 u! _$ |1 X+ [4 k #define uchar unsigned char) ~' W5 Z* j: k
#define uint unsigned int# ^9 Z. B; e; L+ }3 i$ ~
sbit key1=P3^4;6 w0 b6 _3 M7 z' |" i# w
sbit key2=P3^5;. w/ R% i7 I* q4 Q; F) a' x
sbit wei4=P2^0;
5 z5 ^* j0 k* P4 Q sbit wei3=P2^1;
$ t5 Z5 M d5 y# l uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};
3 H+ s4 V2 Q9 s; { void delayms(uint);
7 x: L c( F( o# J; J& A5 `$ b! b uchar numt0,num,flat;
9 V( k1 V2 r, S2 b g$ l1 ? void delayms(uint xms)+ c% M2 C* a- n5 k
{
6 a7 F& c4 `9 L# x8 ~& E uint i,j;$ d, L& B5 V( M3 r8 S6 z
for(i=xms;i>0;i--)2 Q) e+ K1 x. a
for(j=110;j>0;j--);
) i a8 E" T6 G4 v8 @ }
6 O* o7 X1 {5 b6 T4 S void display(uchar numdis)7 I# ^# B% @ O8 A% ]
{3 N$ u. U: p j2 k, U9 N- I6 y3 J
uchar shi,ge;
. d+ N( y. @7 j shi=numdis/10;% g$ z% L1 R9 s) ~0 v8 b3 }: w
ge=numdis%10;
+ O' C. {; B* ^" k" a- C; f wei4=1;
/ ^. x: ~2 V) b2 L( f wei3=1;
9 ^. I8 a/ ]& |5 N! v% a& p2 A- j P1=table[shi]; G. ~3 x0 M7 {
wei4=1;5 \) S. P" n4 u9 z+ f( W/ V6 Q
wei3=0;: i" _& x% X) ?2 Y! x6 ^6 Z3 c! n
delayms(5);
) t3 M3 z8 d9 r: G7 I! _% G wei4=1; q& ?) F" y. _6 n* B; e; e( j
wei3=1;6 C! u |5 W' V2 ^
P1=table[ge];
+ ?6 f" c/ \# ]! v wei4=0;& s, k8 S2 o7 P$ a: r- k
wei3=1;+ @4 P" h8 O' p% S% d. u5 o' }
delayms(5);. z! E; u, b2 c. M1 X: B+ }$ @
}* N+ a8 g9 F8 B: n2 \8 u& c7 b# }
void init()
1 z7 x1 _5 ^3 ]4 i {
7 ^; b/ \/ h' N7 z1 w: I TMOD=0x01;. a9 l, N/ R( h# f) W
TH0=(65536-45872)/256;
5 M2 D0 V& E2 H- x; f0 z TL0=(65536-45872)%256;2 d) x( ?7 q" c [) ?7 j
EA=1;/ Q7 n3 `$ j. ~
ET0=1;; P5 f" \/ o* j& h; ^! F; n& i) M
}
6 u4 i) t8 {/ v t& p void keyscan()
" X5 H6 v7 C/ V6 O { " o6 u) W! j& O, |$ G) W
if(key1==0)
3 p6 D& l; J/ x4 e: B; ?- \2 [ { " q9 E( i4 \; q1 e8 X/ f1 d
delayms(10);. z/ o4 B! z2 [5 ~, t3 |
if(key1==0)
5 V% m2 i5 I4 l( L {, p6 |+ R R1 }( w
num++;9 G; s8 ]( m: G3 Q1 [3 h
flat++;% t) R1 R6 i$ L5 E, l
if(num==99)# H! o: B+ D$ G8 R3 a6 I
num=0;
9 |- D8 G# |* j4 p: b% X( a while(!key1);' w- B" U& ~0 Q; p
}
4 m! o, Y. J+ b7 z7 R6 ]! D5 | }0 n X; ]7 n" Q, f% p, _
if(key2==0);0 q# g) T2 W: H; F7 n. v' Q) }
{ # \3 |: A* n1 E* W/ ~/ q
delayms(10);
' w( H6 J! {) v6 `2 A( l+ j if(key2==0)
% ]3 g( s6 a* }( O {
8 q7 w! `3 X8 E1 n/ e, R+ e) ^ if(num==0)
! v2 k( w# y" t, w- y( b" i8 @ num=99;/ z: D6 s9 B5 `* N" G. P; [0 g! J$ S: _
flat=99;- t2 b Y' n# \/ |% }
flat--;
% F: i$ l+ w& L4 R' ?/ D5 ^' o' b: @ num--;" w, H' @ O9 f+ A5 R, ~
while(!key2);
- d. V, F* e3 L6 ^4 p# u: B; S }
* ^, [ `& h X, o. q }; n: R' q- Q* P& z
}
$ k o% D8 Q9 e4 S; F; w$ ? void main()% ]8 V, c5 n- R) p
{init();2 V" `4 z8 J$ N- S
while(1)
! L9 g. {9 o$ T {( L/ E) G9 t Q V* E6 B3 N
keyscan();' F" G' ~: \- ~3 ~* q% z
display(num);+ K" A+ H4 {& _
}}( l9 o1 @& T9 m3 ^
void T0_time() interrupt 1
( T5 S8 ~+ c, F {TH0=(65536-45872)/256;* t* V b/ b- D( J
TL0=(65536-45872)%256;- v% Q9 z) r, r5 P; I
numt0++;3 F1 W, c5 B$ T) W$ i+ ^
if(numt0==20)7 S; R0 }' M5 e$ L& y+ ^; ~* r
{numt0=0;, A) M+ \9 I" p; i
num++;
, ~! `% o) }* j$ t0 \) p if(num==60)
4 \: t7 i$ x+ U7 {9 b* u- ^& D num=0; …………限于本文篇幅 余下代码请从论坛下载附件………… |