EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 kinidrily 于 2018-11-27 09:41 编辑 . a8 @* e3 o/ E1 ]2 m5 f
$ `0 f3 j" w0 k/ A单片机数码管显示数值,按键设置数值 源码加proteus仿真
4 a z6 U* F+ N1 k# ~, ]# W4 _单片机源程序: #include<reg52.h>7 ^: Z4 d1 _! V/ H( c
#define uchar unsigned char
* T. U9 u' s0 P/ I& _9 \5 h #define uint unsigned int
7 D$ u) D: T& [" `" b sbit key1=P3^4;7 V( Z2 Y( S1 O7 u+ d: ]9 ]
sbit key2=P3^5;" m% r2 i: w" S* B4 b
sbit wei4=P2^0;
( \ K4 E) [# x0 [6 | sbit wei3=P2^1;( x; L6 M4 {$ U
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};
8 E3 r% h2 m, B: G) j$ m" a void delayms(uint);
9 |( ~' n/ ?( b: [- `9 X uchar numt0,num,flat;
# C3 q$ w W4 a8 M4 G void delayms(uint xms)
" g6 u) M% k- A3 G2 f { / @! b- P+ a1 K
uint i,j;7 S1 S+ d1 }+ s- l( p
for(i=xms;i>0;i--)0 Z9 C0 }; S2 H; p. A
for(j=110;j>0;j--);
5 c$ K0 O4 c% P/ R7 Z }
. ~1 y5 H4 U% A/ E3 N void display(uchar numdis) n: B3 {1 A# q" z* _0 y3 Z
{5 ]. n# [9 J# i9 Y+ _3 V5 v
uchar shi,ge;
, A6 n3 Y. o* i+ |! ] shi=numdis/10;' Q7 r- r5 Q* F9 ^9 _2 f
ge=numdis%10;
$ D: L) Q P8 _3 s" _" { wei4=1;! K* p+ [4 X" v6 L
wei3=1;
$ Z* z1 {7 Y! u5 h( `4 c' U P1=table[shi];
3 ?" z7 J& r% M0 w7 S; k wei4=1;, f$ t0 @0 ~' ~" Q8 H
wei3=0;6 A6 E! y& s% {- O3 s
delayms(5);
; C- f1 q4 j3 R) ~& d# ~* T. u wei4=1;
" g/ U: G6 a, z/ V wei3=1;
8 t7 L% |/ C3 ~1 e P1=table[ge];
& ?9 {1 m+ v0 q- h+ c0 ` wei4=0;
/ c) {, v6 I/ ] wei3=1;, U8 g2 {; A" L2 `; n
delayms(5);$ ^4 r, b" J8 V- R3 u, [
}
$ B5 Z0 r9 g% y, W/ ` Y void init(): T9 G! }6 }8 l0 n7 i7 l* M
{
, ? b" ]. G1 ?, N5 q" v TMOD=0x01;
' Q" R' t) v2 { TH0=(65536-45872)/256;
& }2 o. J: X6 B p& U TL0=(65536-45872)%256;! P* w. K* t+ F! N1 J
EA=1;* K' Y/ P6 v* r8 L
ET0=1;- Z2 m/ J" w/ u. C( v5 d
}
- }) W- X/ U% A0 F void keyscan()6 Z' e1 h3 n" P3 l6 ]! c( j' t! x
{ 4 n* z. @3 \+ [! ~/ M4 o* N5 {0 X. }3 e
if(key1==0)" A* W6 y2 f. z: M
{ 0 h' ~& k5 K; A0 i7 M( |
delayms(10);
7 b a9 _: x" C, p U! k; d. A if(key1==0)
* n2 {) c7 D: Q8 N8 R" }+ j* q+ \5 k {2 x& w) j. Y6 N1 O
num++;: J4 x, s5 x# r% c
flat++;
" j3 M& P4 C) G2 H* {7 l if(num==99)
) f" j* K5 R( l% F0 e& {+ ]* b% P num=0;
7 f0 ^& S5 u! Q& A/ R v* w) X while(!key1);& j+ c% S, i5 q/ A
}
8 H5 ]# |* P7 K/ a) ^3 H' v' A, H }3 l6 c: o. }2 E- n# l* f
if(key2==0);
) j4 u9 u" q2 g2 t4 ?% K; B {
6 b, z3 ]9 o$ t* `. N1 T2 S, K delayms(10);% R' u' S7 I) v! z
if(key2==0)& n+ E& `8 N7 i6 T
{
3 v Y% J' r6 ~+ z; b! t if(num==0)5 E0 z4 r4 i8 N* [/ i
num=99;
5 a. a" `" h/ L flat=99;
* R# D. I/ R6 V% i% S% X- ?2 ^# I8 J6 @ flat--;
) q& K, u( |/ c- `& } num--;
* p0 x% {) |) N8 M while(!key2);& \' l# t7 r' C( M
}1 U4 Q+ X! `& J7 K
}; o. A& w7 @) L
}" S: e. F0 @& I6 J+ h
void main()0 E' ]& _7 M s
{init();* e+ y6 E6 J$ M. I# l4 F" y
while(1)9 ]) X$ A& U' b! d$ S
{: z d2 I* ]% `- h4 {6 O+ R
keyscan();
$ |- I7 M& H" v0 J/ b display(num);: V$ {/ T: Q9 R+ S
}}
) P: g0 _( X# h8 n6 Z6 {8 ~ void T0_time() interrupt 1
: \$ W, U! M2 ? {TH0=(65536-45872)/256;- W4 Y( Y1 H9 I' [
TL0=(65536-45872)%256;" \1 {. h% o" i- y. `5 j
numt0++;
: V' o1 X d7 ~# ^1 m if(numt0==20)
) ], U1 E) w$ M* A3 I {numt0=0;& [7 |; `& @) p* B
num++;8 a. z3 ^4 n; a* |5 V
if(num==60)
4 `8 \) q& r& j$ y$ {' Q6 w num=0; …………限于本文篇幅 余下代码请从论坛下载附件………… |