EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 kinidrily 于 2018-11-27 09:41 编辑
+ S0 n5 C+ p5 h) A. y$ q7 B
" t1 J$ Y, U. a$ G单片机数码管显示数值,按键设置数值 源码加proteus仿真 - F2 F+ T, F# F
单片机源程序: #include<reg52.h>
8 }4 X, w/ l8 u* \8 J #define uchar unsigned char
2 v; X2 q& T0 o #define uint unsigned int
4 M8 L7 u/ y/ M3 c1 u. x sbit key1=P3^4;# _9 Z5 T" f x" y3 r* E5 j5 `
sbit key2=P3^5;' K( E9 `( \# n- _ b" c
sbit wei4=P2^0;8 f# j5 |8 `: z" R$ z1 Q1 c
sbit wei3=P2^1;$ e5 ?" O+ T7 a/ m' C$ m
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};* B( P0 h1 D9 X
void delayms(uint);
n# ~# q$ m8 V0 d+ Z. q! p uchar numt0,num,flat;: R, K7 I$ _- _. S% g9 b1 [: x
void delayms(uint xms)" ^- H$ v6 s7 c+ d
{
+ }) t) v" |1 X7 z4 q, y: p uint i,j;5 l' R6 j4 F* |3 _, w
for(i=xms;i>0;i--)8 f4 A+ w' f! e. B' D
for(j=110;j>0;j--);
' m1 F0 \3 `5 n/ b2 q" f }
, g" Z9 i; q# a3 P8 K) s void display(uchar numdis)
: K/ |2 }2 L1 H* Z3 m {: [; O2 i4 S. i# i1 x# F- E1 Q* C( H
uchar shi,ge;
, P: l, b. {3 h$ m1 A2 f7 a& U* Z8 Y shi=numdis/10;
$ @& S3 D4 Y- G2 b+ q! C# z ge=numdis%10;# C: s; V4 {9 T8 g S
wei4=1;
: W% K5 s5 r3 F5 Z0 I& ^1 T3 ] wei3=1;8 F1 O3 l8 ~5 F* G5 V
P1=table[shi];
6 C$ O3 B8 m0 Y% v- U9 j/ G g/ A- @ wei4=1;% v# {' W9 L, i( o+ v
wei3=0;
% r& {% ^- ^0 Q7 P( v* z: o2 N delayms(5);& a9 O$ |2 G# Z7 I6 I
wei4=1;
2 B& ~" N( y$ ?6 g; R# _5 |4 _ wei3=1;
. k- ?+ o* V& `' y3 g$ P: f P1=table[ge];* r2 q! m( S9 Z/ r
wei4=0;6 n! c4 q) I! r) H" m3 e
wei3=1;
6 W N# ?" [% r: N6 x) Q" y delayms(5);9 z5 w% ]3 g! l! p3 t7 c+ a( `
}6 H5 \5 }9 N( H2 |
void init()
$ ^) r6 a% \9 p8 P' L& x; G1 E { $ \1 w% E* V5 y4 H- ^
TMOD=0x01;
: M1 a5 F3 A% N O6 h, l( s9 M0 s. | TH0=(65536-45872)/256;( @+ k! P- c) ]2 j2 D
TL0=(65536-45872)%256;* z2 b$ V# [% Q/ Z
EA=1;- P8 w4 ?6 B/ f/ W0 w
ET0=1;$ v5 Y0 i. f9 } z! G
}
b( j7 V7 d$ n; m6 k: F void keyscan()
! U7 `( J3 c# f8 S {
/ Q T/ B1 B: c, w {" e4 D$ T* P if(key1==0)
: M. c9 J6 m- l {
" I' v# c: o4 a3 s: y+ X' [ delayms(10);
) m2 [, y7 p" o; I6 ^$ a" } if(key1==0)5 b( |8 V$ m) E- f# ?
{& B6 G" `" s- i( u! ]$ ^
num++;
0 E2 H& R* o8 z7 O2 ?" q; W flat++;
6 R( x, S3 i) P# |: P if(num==99)
: m5 B# j; U0 Y' ?% w+ g num=0;
. g# i& _7 C( W7 M% A, @! v( K while(!key1);8 A, d+ }/ I- y
}9 u/ E+ }) R: |( n
}
$ L5 ^ q# d- H0 E2 _$ e if(key2==0);
5 }6 V( X5 H t3 w* n { ) f# ]+ e# U0 Q
delayms(10);2 `# v* u5 b3 Y' \/ C
if(key2==0)
O/ [) W+ e* {/ d {
3 b0 m9 l: ~6 }* `; @ if(num==0)2 ?3 X$ a3 D0 D1 R$ o6 S
num=99;
: ~# W! F8 Y+ w, N flat=99;) W- g9 s6 c+ i& D% T
flat--;
1 [5 Q- i5 S, y8 g num--;' O# ^8 ]3 G+ B0 y' e
while(!key2);9 k; g3 ]8 @8 V$ P/ P& l, ~
}
& v0 v4 b9 x, h" H5 J. ?1 F }
- ~+ ]6 f' e" J L& q }
1 t' K$ |7 z8 [; u void main()& [! u" S7 r$ m% N$ i! Q4 I
{init();: p. Z: j3 T& l+ l6 \
while(1)
4 c. W# m6 I# E# T( _ {5 k5 ]7 W. d5 O$ L/ t$ K+ F8 m& ^9 s
keyscan();
1 [7 Y+ B1 u) X/ E; j display(num);
0 X# D7 n4 a6 ?. n2 H+ X }}
# c7 k$ @+ N! d. N void T0_time() interrupt 1! }* Y/ K% n7 i0 A6 D
{TH0=(65536-45872)/256;" N, a2 x1 }5 H3 s
TL0=(65536-45872)%256;+ O" _, j, l9 Y8 _4 X& z/ U+ R
numt0++;
3 ^) Q+ D4 K, ]1 ^8 [ if(numt0==20)
/ F# G$ \6 g7 r! f {numt0=0;3 d# z' h& X4 p6 R3 k
num++;1 H5 s8 l& n0 B* ` h2 b& D7 _! |! \
if(num==60)2 G! S( ~6 U- Y1 m
num=0; …………限于本文篇幅 余下代码请从论坛下载附件………… |