EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 kinidrily 于 2018-11-27 09:41 编辑 ! _/ e" \7 s0 r; L
5 A' B& D9 N. H5 v, O2 F单片机数码管显示数值,按键设置数值 源码加proteus仿真
' A9 X2 c1 a7 W% u; a单片机源程序: #include<reg52.h>
9 [; k* H% z# X, E* @ #define uchar unsigned char) S0 y- \1 \8 B; ?
#define uint unsigned int0 ^6 p. X9 T3 Z4 x- d/ |, `
sbit key1=P3^4;
+ `( [3 y# Y" ~% ~ sbit key2=P3^5;
/ G. e9 L; f8 e( m) [# _9 f/ ~ sbit wei4=P2^0;4 \" q5 r+ j9 ^0 K8 Z- g# j
sbit wei3=P2^1;8 L- ]5 {: L h1 ^
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};
4 Q4 V5 U5 t' p) g: s/ T2 g" p h void delayms(uint);
/ x; L: Q. Z# H" _9 h uchar numt0,num,flat;9 D9 {# |) f6 u" o9 i; P, F* _
void delayms(uint xms)* k7 Z! E: Z. {% A, K% `
{
w" `4 i* _: I' |; A uint i,j;) S% p( J: J8 U5 E. z; @& z
for(i=xms;i>0;i--)
' |/ {& m" r W for(j=110;j>0;j--);7 P; C2 h' z" r+ q
}) @& ^7 Y9 t" M- _
void display(uchar numdis)
" P) J8 @- P, E4 j9 b( B* e! h {
6 i8 \6 _# ]" t3 f' ^( e7 ^% D0 ` uchar shi,ge;6 X, w0 _% Q3 g& K9 ?
shi=numdis/10;: Q: v: l2 [% I' T0 }+ |, _; G
ge=numdis%10;
7 T, d% ]# `7 c0 D7 Y( B wei4=1;
2 d/ p1 K4 Z2 u- b0 E+ `# x0 W+ L# T wei3=1;
4 |0 ]; j8 b G4 r P1=table[shi];- K) Q% d: {" O/ {+ e, y
wei4=1;8 e' g- o2 M9 h& i7 m$ T
wei3=0;
9 g- E- z+ k" P9 a+ J delayms(5);. k3 w! R, \7 n" W
wei4=1;
& L) ]2 {' w7 g; W. Z$ i6 h: ^ wei3=1;& q3 v# Z) G: W4 a
P1=table[ge];
% ~) @7 M" ^+ P; v: g# G wei4=0;
: r( ^, y- e3 C7 \' x% n wei3=1;
; n: t. c0 \' S& o1 X6 Q delayms(5);
2 f$ S" N) c9 p3 o" o }
2 I5 `& A6 z8 U* H2 k0 A* F+ V void init()- }% l& l, X7 }' }/ k
{
: P' D# b& s# Z- k( c( h TMOD=0x01;8 a6 a1 V [5 W. ]; g" A- A# E) |
TH0=(65536-45872)/256;
3 ?. O0 T* a( [5 L TL0=(65536-45872)%256;
+ q( y4 ~5 S" P- ` EA=1;3 p; D. R; R! @! T' n1 O: y/ C1 L
ET0=1;6 G7 H7 A; `% k9 J
} z7 k% i. P8 p$ @* {
void keyscan()
# N& z7 Q# n5 | i8 i, \ {
1 E: X9 ?$ }2 g7 ?6 M: d3 Q if(key1==0)
7 z8 E8 S2 R9 Q. B7 h- e { 9 {6 l( a3 i, _ [( ?
delayms(10);* p$ f: E6 h# t! j
if(key1==0)1 u/ Y5 E0 W+ B1 B
{
K- M+ b$ Y! ]2 b num++;" Z' j; T- v' t% ?& |, B
flat++;3 G2 z; [8 P* P* {9 m" |; E
if(num==99)! B O1 Z% s0 P. n% a" C
num=0;) {: \- f- X# @ F1 S% `# Y9 @
while(!key1);
# X+ s4 T5 k0 F1 C. G2 ?2 |3 M }: X" Z& ~7 M; u2 G! @$ g0 V
}
6 v2 e4 Q8 @" W+ J" d if(key2==0);0 Z0 @( ?* ~" C
{ " l7 H# o+ {& }2 i9 Z
delayms(10);) ]8 }, H) A, q
if(key2==0)
( A* Y# A5 \4 u e) Y& u4 u+ s {
5 e( c; D6 j2 p if(num==0)6 I- O5 V9 C) ]9 M$ W; r3 D
num=99;+ f+ l2 ^8 v4 ^3 K
flat=99;! l# F2 O# u5 z
flat--;% i2 j( j9 G, g3 c$ N: T2 \
num--;% Z8 d* `$ B5 o- ~ N3 k) f
while(!key2);. r7 [0 \& q. x
}
! g1 z" @# ^. e% u, H, b1 f: k }$ E( |+ f* h5 C
}
7 F& F* E" T! Z8 F% @ void main()+ O- w3 n1 @0 r" ?* c1 E5 Y( p- w$ I) ^) F
{init();
( O. d- P* i* [+ j( {. I0 V+ y while(1)
# t+ r, b: p8 _ { O: a4 N. A8 _; j6 x5 ]
keyscan();
7 H) O; }, k/ X1 X7 c6 s9 n) s3 I$ g display(num);
5 K' A1 ?/ a$ _6 G1 j }}
9 U q" [( x! t9 ~" }- n5 z5 ? void T0_time() interrupt 1
' H2 w! l# p/ L8 k9 x$ b9 J: B0 u) R {TH0=(65536-45872)/256;, N$ [1 O) o* G* P. X# u5 G0 q
TL0=(65536-45872)%256;
, Z$ R+ B2 j; Q numt0++;( ]$ m# ~! I" q% n; _1 u2 B
if(numt0==20)
- n7 Z5 c* g2 u! Q {numt0=0;
) ~& c3 c1 i- d5 y/ M5 w num++;
7 A; y _/ ]; ? if(num==60)8 k1 c2 J$ `. i/ H V
num=0; …………限于本文篇幅 余下代码请从论坛下载附件………… |