EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 kinidrily 于 2018-11-27 09:41 编辑
# r+ Y4 p# d1 D) S
+ G8 _* d: |! M8 Z, s9 m单片机数码管显示数值,按键设置数值 源码加proteus仿真
9 [4 ?2 q `6 X$ a单片机源程序: #include<reg52.h>
; H. c3 r" w! A #define uchar unsigned char
: ?6 r# ^! W+ U4 h. N) ]: l #define uint unsigned int$ k1 i' M( i/ K! q8 B1 o& M
sbit key1=P3^4;
1 D; n ^$ a4 ~0 ` n sbit key2=P3^5;
5 y l, E2 B* P% M4 q1 ? sbit wei4=P2^0;1 w! D2 d7 @) ^2 H9 P% z
sbit wei3=P2^1;3 b$ s5 a' B- c# V0 s) Z! \* S3 Y
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};
" U. v! ~; P& Y void delayms(uint);
2 @2 A2 L" P& ?4 H+ Y8 d& _3 ] d- } uchar numt0,num,flat;
& G5 ^* m8 W% q void delayms(uint xms)# N5 i5 {6 U( @4 r
{
0 b/ I# U; J: ~- X6 b8 J* c3 ? uint i,j;
6 M* _& f Q+ k$ E* e0 b for(i=xms;i>0;i--)
+ f8 m y) B. P5 V' J3 a; X0 N) i for(j=110;j>0;j--);! s6 N9 q3 T$ [6 F- u) _
}/ }& c2 n! s- t& S
void display(uchar numdis)
4 \ k2 b& j" R* V8 ?" K; j {
. G7 Y: p4 g% m4 X# B/ r9 g uchar shi,ge;$ c7 l* a1 v7 o3 ]& i# Q
shi=numdis/10;
6 l: b J- r- y* R ge=numdis%10;% Z' C7 A4 J4 w
wei4=1;
) X9 C/ E( s- B0 K) l, w0 b wei3=1;5 Z& W5 {. J9 V/ N/ F2 n
P1=table[shi];
; \% r) q; f/ [) m V" n. B- V! C7 Q wei4=1;8 X) r9 `+ a5 v$ o. I2 i7 o
wei3=0;, p/ [3 [1 s5 T) j5 e7 a! @
delayms(5);% J" o, K! n4 s+ h+ t
wei4=1;
1 b0 A( m! ^1 [$ Z( d# P8 v3 { wei3=1;- ^2 L; h0 x% S' f* U7 g$ Q9 |1 Y
P1=table[ge];
?; e" }. {( @ wei4=0;7 G k* z6 {) t% G
wei3=1;
# v! x z1 b6 e" T: C% P& ` delayms(5);: X) n4 e/ s' N: T7 Q9 d
}
4 F e( s* Q( z" x6 V6 D7 h void init()$ i% r' p0 Y6 d% R, d" T1 z
{
: Z3 ]8 h6 v/ E @ TMOD=0x01;
) f; D6 T9 V$ e0 z" w TH0=(65536-45872)/256;
$ _, m' y, i9 E! S3 ^ TL0=(65536-45872)%256;
6 M5 V+ b8 K3 i, E2 ]8 n" } EA=1;* K8 ]& H# a* u: G3 X0 U) ~, M Y/ `
ET0=1;
- |' M$ f$ [! K% D3 Y$ K2 d5 h }0 |$ J/ u8 f, `3 x
void keyscan()8 H/ \" c; Z! E* B! m9 h
{ 3 L+ q! l% I/ b6 V
if(key1==0)
! H# Q! y9 Z$ C: }& b5 i; U { 0 L* i' j% C$ m/ \/ K7 d, x
delayms(10);
/ Q& w7 L2 g+ i" F4 Q if(key1==0), t3 Y# F, q1 L0 m
{
; C d7 v' R Q+ w num++;
1 R( z$ F2 w1 E0 W9 u/ U1 r8 { flat++;! r' N& Y; {. e, B8 P8 W" {6 F
if(num==99)3 s) W7 l4 |+ Q0 G
num=0;$ i( T5 C" X k/ }' m: @2 H3 m
while(!key1);
2 W, _# c5 P0 D2 h2 Y3 l }
6 k4 E/ t$ A2 \0 V } p+ E' a( o. |
if(key2==0);
8 J$ G+ |6 w0 }( n9 |" b {
, L, S+ g- l' Q$ l* C delayms(10);
# D5 A2 V+ G2 K if(key2==0)
* B3 N3 D" p' D+ M {
7 B/ M! r+ ^$ o$ t% i, ]4 I; q if(num==0)( `1 S; {% x$ _' z7 |* h9 ~% K
num=99;
0 o4 s. E k' i3 p4 X! w4 m( | flat=99;
0 }6 H; _* K% U& I" X9 n flat--;! e" K+ P+ w- n' H# `- ]) [) }
num--;
, m( `1 R5 ^4 ?" Q A3 K! n' s while(!key2);
6 \8 o l1 ?! j) {; v; G/ A) b" D }
9 O" O0 N' Z/ b; x2 t, r- M! m }
1 x. ]/ Q1 H1 \4 B) ? }. Y" K$ x4 W \9 o* F1 Z
void main()& H" S& o+ ?$ ]& G
{init();
+ Q6 _ {8 U6 o# h# A( W3 V1 H; O while(1)
/ f! B( u" c& n; m H6 ^ {; K% k& s) p8 o. l# w
keyscan();
) C6 s* }+ D! @ display(num);
& K! w' `2 E9 b5 g" m }}
% Y" t0 Z7 K, u* q% a% R" I7 y void T0_time() interrupt 1
9 Y! t+ K1 p" T+ L: \ {TH0=(65536-45872)/256;( P" F% H! {, I; N2 `8 k7 o
TL0=(65536-45872)%256;: ] B1 t# c/ W
numt0++;
3 j7 |* g( \. j0 l+ P7 i9 F/ X% C if(numt0==20)( @& P* R% |2 E
{numt0=0;
. |& \' i, B: `( f5 W num++;
9 F9 |. R# L; A$ U& ~4 [/ z if(num==60)1 P* y* a/ C! Y
num=0; …………限于本文篇幅 余下代码请从论坛下载附件………… |