EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 kinidrily 于 2018-11-27 09:41 编辑
; A* J0 p: | e: J& w M g8 |( y; e, J t( g$ C9 C6 _' q
单片机数码管显示数值,按键设置数值 源码加proteus仿真 % `" j: ` M. ^# ` ^0 k5 }, w: k
单片机源程序: #include<reg52.h>
; s, j, ?6 G2 X. k$ M, G( T0 e, s' O #define uchar unsigned char$ M5 z) X1 f* l5 Y4 F
#define uint unsigned int
, A$ e( H6 Y4 L7 q7 M9 B0 _ sbit key1=P3^4;* |3 H O5 |8 R
sbit key2=P3^5;
1 K0 r7 o1 T e; J, T$ } sbit wei4=P2^0;2 B* \* N, \/ s* I5 w! R8 F; S
sbit wei3=P2^1;4 u3 B) f- ^9 {" @
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};0 F" x" g% ~9 L5 n: V! i
void delayms(uint);1 R3 {* y+ z5 X) w
uchar numt0,num,flat;( @ j3 C7 M4 |3 h7 ?
void delayms(uint xms)7 \; c& b+ H+ @! ]3 v4 j4 |. c
{
+ x8 @5 d# I: j9 } uint i,j;
1 F. q3 }8 l% v( t3 g% k for(i=xms;i>0;i--); m% @; B- B+ \" K/ y9 _ y) Y
for(j=110;j>0;j--);
+ O' f: u$ P6 i }
4 n2 q S5 V7 V8 u& ]6 C# R( b' `+ h" Q void display(uchar numdis)
# f n4 Q- V8 X: F {
6 w1 y: T$ d) b O/ O2 X# a uchar shi,ge;3 [( v) I. e' k3 l( J( {
shi=numdis/10;
9 N" p1 a3 S7 R9 U Z3 o* F ge=numdis%10;$ U2 y5 N f: f) x7 R
wei4=1;
- ~+ a+ i. w1 R+ |$ B! n wei3=1;: L4 o' x( p4 c. h+ t
P1=table[shi];
" h. R* I. G, W: ^ wei4=1;
( l6 l, M/ ?- _* b" R8 E- F; G) T wei3=0;( z7 n& s% H! M8 Q
delayms(5);- @" c" s) S3 {7 E4 o
wei4=1;
1 C) X6 ? I. O; l k! v wei3=1;: O9 ?1 @* P% f! E$ F* l1 x
P1=table[ge];0 ?% R, \0 T+ ~. @/ \+ p
wei4=0;3 I$ _7 y1 a" `3 ~
wei3=1;
5 S4 J. M" L- q' n delayms(5);
3 \+ r4 @$ H7 a* E Z }
\" M' o: J" G$ Q4 I- S0 ~0 w: @8 N" Z* | void init()
& y: _8 S' z3 T0 a }, t { ! [: ?7 @% C, I, D! R9 _; x
TMOD=0x01;
/ Z* u' B+ k2 v" T$ A6 s4 K2 Z! c0 | TH0=(65536-45872)/256;
9 ^3 F! Z0 |. J8 J8 s1 P. D1 f! W TL0=(65536-45872)%256;
9 Z: A, w2 R9 R- K8 B EA=1;/ p/ n( j4 n/ H: e4 j* c% S5 t
ET0=1;
3 }! p( ?# O+ R' N$ S3 D3 V. O. w$ D }2 H9 ^$ R. e& u2 W9 A* W) Z4 i
void keyscan()0 W) P. i% a, F. y0 b- d
{
! [' }, W- O* s( J B7 C- C if(key1==0)9 b' T9 n' k1 x
{ / k: l. |: ?: K: V' L' K/ Q
delayms(10);
4 ]4 S& X' o* l if(key1==0)
u+ j A9 V9 p9 S5 ` {
. t7 F0 B# \: B6 Q+ Q2 _ num++;
9 J) B# x5 P% T3 g flat++;
8 _, `! x% z& X( J9 J/ m4 d if(num==99)
. c& l6 F7 B1 M3 F7 R/ N- o/ t# z num=0;
. g' m- \$ l5 }" G/ R7 @" l5 a while(!key1);
7 g- V& { I H' s* o$ t& k. _. [% d0 o }
, f* ?. V2 _- i" D8 _ }
: m# {; {2 ^' `7 S# K" g. u if(key2==0);
) T2 B& v; H$ ~9 k( _ { L, d7 x V% Y4 P7 X& h/ W
delayms(10);
, U3 M& |! E7 O$ h g if(key2==0)0 L: T9 e {* T+ f4 `& ]
{: e9 _/ h9 E) i# {4 x+ j- W7 I
if(num==0)
: t/ b& {& |6 K2 V: t# `- ~ num=99;
& s Q4 I6 L% j' V" t4 ^0 M# G flat=99;
+ Y8 K& {0 }6 e3 X flat--;
/ l$ c7 J2 t d9 p3 R num--;
. X, w0 ?7 A) |5 D6 k$ B! r) u while(!key2);
* h% w8 E# C P% E* X" x }
' I0 k+ F% f p" Z7 K1 M$ @- i }4 W: K" L2 a$ r/ U4 v( v
}1 U) D/ _1 R: T; A2 p3 l
void main()
$ N$ Q+ L/ J5 T. ~) z {init();
; G/ g5 {" b4 W# C2 m# A3 @- Z; b8 U while(1)
j) p7 J9 Z/ Q {
8 Y6 z9 J8 d- H1 L1 h' a& O, _4 r keyscan();
( I3 `+ C1 c' {- Q+ _$ p display(num);
& U+ M: K4 \. l/ [, f; ^ }}% X4 u' }% c. ]7 c
void T0_time() interrupt 1% i) I: F. k7 N( c
{TH0=(65536-45872)/256;
# f% z: Z8 r( F" M( [ TL0=(65536-45872)%256;
( N2 n# P& M( N9 e* ~# W4 U numt0++;
/ C* R# _# O3 q if(numt0==20)$ y) T! k' h g' f/ z1 [
{numt0=0;
4 x6 H( H( |& h2 \+ _9 G, a ?1 l num++;
6 s& k9 O+ U7 \ if(num==60)- r6 E" h Z. {1 J! `
num=0; …………限于本文篇幅 余下代码请从论坛下载附件………… |