找回密码
 注册
关于网站域名变更的通知
查看: 358|回复: 1
打印 上一主题 下一主题

单片机智能计算程序设计 LCD1602液晶显示

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-10 09:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
单片机智能计算程序设计 LCD1602液晶显示2 @" o5 R' F1 a
单片机智能计算$ [4 b3 \! Z2 r7 @
# B2 P' `+ [" C4 L8 e/ c
& c0 n. b( @2 n  o2 r% R8 A
单片机源程序:* {7 u# g  l1 l7 ?2 \
/*  S16 S12 S8 S4分别是123+
8 P3 Z/ D8 C, i9 Y1 V        S15 S11 S7 S3分别是456-
, S  ~* p' z+ n# y, D        S14 S10 S6 S2分别是789*
* t6 T/ R9 X* i9 X* B( C& b* ?* u0 U        S13 S9 S5 S1分别是0 CLR = /2 g" K: }  C+ b
*/
3 c, X# Z4 }( M$ t+ Q5 E; \
. c0 h# |" p7 _, r- [5 t

, k. B4 s# u: z& w7 i, }6 p) c% N# u/* 实现两个数的运算,每个数的位数至少可以八位  *// H1 G* M& J7 H$ q& O5 \
#include<reg52.h>                        
) D" }! t8 l  a: e. G& S. @typedef unsigned char uint8;
- v$ }! W9 w* R! h6 f! Q" itypedef unsigned int uint16;5 {9 |: r6 h% L+ P5 X! g

9 m) s! }6 d8 M' ^7 q8 d' t# A

. C$ E' P- p* K' |sbit rw=P2^5;
. `% e8 {7 g5 D# j8 F2 g9 B" Fsbit rs=P2^6;, k9 K( B" A+ L
sbit e=P2^7;& I, `, q. @& z* g
sbit led=P3^7;/ D' }; x/ B$ o

: G7 M8 G. f- }! z9 f2 I/ a
- L8 F* K; u/ b* k8 a4 `' N# z
sbit beep=P2^0;
+ I  M' ~! q9 X# }$ Cuint8 key,num;
. u+ I1 F* c  e9 kuint8 fuhao;//定义具体的那个符号,是加减还是乘除。
2 }( K7 f1 U0 t! a" ~6 ~uint8 flag;        //定义有没有按下符号键,这个是统称1 v* W& V- o' y" N+ j# D
long a,b,c,d;        //定义运算数据的第一个和第二个及等于的数变量
, {: g0 e6 u" ~5 g. Luint8 k; //定义小数点后面显示的位数8 x+ H% E1 r1 \7 U5 p+ H' y) k" O, }
uint8 biao;
0 y. z& ]$ [2 ], U) s
% P( ~5 B/ e" b# Q6 _( B

7 E  ?+ [0 I" K( r% u( U1 H5 quint8 dat1[]={1,2,3,0x2b-0x30, 4,5,6,0x2d-0x30, 7,8,9,0x2a-0x30, 0,0x01-0x30,0x3d-0x30,0x2b-0x30 };//保存显示的数据9 R: k& _4 z  A7 S" F
; c, ^2 j4 p  F% M, ~, y' Y

3 c! d& j3 s0 }: h! v7 Y1 Lvoid delay(uint16 i)+ K' o: o; e2 [: u* E  h
{
, E9 V& C' O6 f0 L& z. _        while(i--);
9 k3 J7 _& B4 f. b! z& ~- h}
+ r* A. z% E6 u$ y/ Z  \1 ~void lcdwrc(uint8 c)
( {/ L! M- ]/ L1 e{: I* h- O9 _7 |
        delay(1000);
+ J( ^) K0 S6 X8 e$ m2 K        rs=0;
# j0 C: t9 Z4 n4 R* z" y% T        rw=0;3 ]2 v2 i  u0 G9 G" T
        e=0;0 Q7 p# k2 z, m$ J: A
        P0=c;* h. W4 l" b$ K3 {/ [+ `
        e=1;
: j- x$ o/ B) {# r        delay(1000);
# k& Q+ [2 g' A4 h" i        e=0;
$ k/ ]: \. ^, x( [}
: {. Q" o- d- m/ O1 e7 avoid lcdwrd(uint8 dat)
! d) M" m) x8 f{
# K$ ]% O: _1 U& r* j  q4 ?7 h        delay(1000);6 m. K3 Q9 U* r8 j
        rs=1;+ U) I7 d: e0 m7 h
        rw=0;8 r% E& D1 [: K) _7 H  t
        e=0;
( M1 }& v# A0 z+ c( Y5 J5 g# I        P0=dat;
, t- U: U9 ^( C/ y        e=1;' q% b# R2 ^$ a/ D+ R. b& }# V1 ?
        delay(1000);( I! x: g1 [! @3 c0 r
        e=0;3 I% R, G' ~0 E
        rs=0;
+ O, L, Y8 g# f. Q$ K& j. k}
% D0 `% r6 P" _' F! p& ^" v  s4 ~/ a9 N
* R1 ~- g/ _7 ~  Q" J9 N
void lcdinit()% g$ v2 A1 V! t8 ~/ n) L
{. \; c: m  k9 }4 D" @
        delay(1500);
1 Y  C1 b( |/ S2 Z2 }3 g8 c* N        lcdwrc(0x38);
4 w" Y" B; z+ Y5 I        delay(500);
% Q; A/ {. w) c/ `* T( `1 Y) \        lcdwrc(0x38);2 ]% J' L+ q$ s
        delay(500);# k$ t4 w: d) U* I; e7 a% p
        lcdwrc(0x38);/ B' J$ @7 M" ]; w$ U3 W/ c
        delay(500);
& X- F1 S0 H$ r9 b" A& m5 X( Q        lcdwrc(0x38);
/ b5 g3 c7 A" r, U. \" Y' J1 r7 H; x        lcdwrc(0x08);
: }/ U; S. L- ~        lcdwrc(0x01);
7 ~6 N) ?1 r8 p0 Y) ]/ I- b        lcdwrc(0x06);
& \' l3 M2 f! T% O' y% \: J        lcdwrc(0x0c);
$ e, \3 e" x' b        key=0;
- K+ b2 M9 d- Y+ c( @  m        num=0;
9 }* x- ]' g: _6 l* X6 k: E1 D2 `        flag=0;, S. }) I( C5 E; v
        fuhao=0;
. K# ~+ I( d* R" x4 ~        a=0;
- ]& ]! G6 V, {1 f        b=0;
3 S7 d  X, x: Q! s$ c+ T        c=0;
4 C- s$ Y' b" ]3 A# \- \        d=0;) B* e$ ]3 ?4 Q" U4 d/ m
        biao=0;
* \% ?& |, g0 G        led=0;
' a" q; Z) S; w# S6 N9 t/ u; q; ~; I2 u. G
+ M& d2 a! B4 Q! \( m, _- v
}4 k! W: T8 f: a
3 U- m* v: C4 f4 [2 _8 e
3 L; h( H2 I% r+ R
void keyscan()
9 k, W2 X' \' y. J7 B{( t: Z% y. [0 W
        P1=0xfe;   //令第一行为0,然后判断是哪一列按下
3 l- A' C! e( w# b/ @. u. O8 k        if(P1!=0xfe)
6 h; l2 M& C1 ]4 s3 C        {( Q) k' M" P- I$ b
                delay(1000);# A5 B. D0 \% p. v$ M  K( X
                if(P1!=0xfe)
- `1 b7 `- {! u/ A2 x, M                {
* I1 c" q# [4 I                        key=P1&0xf0;
& P, u1 ]( @. S& J& D0 V# v                        switch(key)
# j9 h4 f) h& y8 t9 a8 @                        {8 s1 d6 Q6 n/ r! y- m' S
                                case 0xe0: num=0;break;          //1
0 W1 a1 i0 t1 z8 _* X0 i                                case 0xd0: num=1;break;          //2# r; }3 _2 R, A1 q% R
                                case 0xb0: num=2;break;          //3$ a0 }, h2 F: d5 ?# M1 U8 R" C
                                case 0x70: num=3;break;          //加) @7 N5 c( {0 B" S- p+ q
                        }
) M- V% B) g$ Q8 T3 a                }1 G8 A. M/ D4 i0 W! a2 J; [' o# v. Q0 [
                while(P1!=0xfe);
- p% i8 A$ Z3 |) s' }                if(num==0||num==1||num==2)         //确认第一行的数1,2,3/ }1 J  O* n% }8 ~. H
                {/ k* c* B8 w. I, M! X! Y, D; z( ~& j* b
                        if(flag==0)         //没有按下符号键* I: L  e! ]3 ]6 T$ O
                        {
- Y' S( ^  b  Z, r) r" I; ?                                //led=1;9 X" U9 I" D: K0 p5 ?  I$ v! I2 K" t
                                a=a*10+dat1[num];        5 M. n& h; K& a* k; V; R
                        }0 Z, v5 v+ N- P0 k" U; p" j' r6 ^
                        else
: ^! p; R$ v: }1 N- o& X                        {+ e/ y0 R- Z" z" X
                                //led=1;
) F7 }8 o+ b) K2 Q" q4 }  `                                b=b*10+dat1[num];
# f2 k( W4 y  C! M( m5 ]                        }
4 y6 b7 i4 s" F/ h( a               
$ s  j; K6 H) ]2 g+ k                }; O& R% D7 x4 J  K4 _
                if(num==3)& w2 M8 a+ b5 @( p+ q0 C8 D
                {
- H9 x. s7 N4 \, W                        //led=0;& c" d+ o* L4 p7 R: W6 Q
                        flag=1;
9 f1 j0 X* \6 n$ q+ a; l                        fuhao=1;//加号+        ; s2 J' h7 U5 j9 Z. O# z1 E1 T
                }
4 q$ N) P. T% z! o+ Y                lcdwrd(0x30+dat1[num]);
! O# B% [2 l; \! L4 X. A1 w+ r        }
& W; s3 Z. F7 [- U8 [4 G
7 F6 r2 m/ Z! K- u

2 w8 n$ h  d, V$ x
( [* o1 H: K( t0 ?
# t, @" }! P1 n
        P1=0xfd;                                //令第二行为0,判断是哪一列按下! w; a. T$ B2 Q, A
        if(P1!=0xfd)
% m% p7 D& K, K7 T4 j        {0 ^& Y- M$ Z2 N* P3 m6 T
                delay(1000);+ V3 Z. H- \+ G% g: h
                if(P1!=0xfd)
2 P* E2 U. K$ b0 S. e; i: P                {
# H1 m/ t% b( v/ b7 }                        key=P1&0xf0;
1 X. V9 Y: p1 r2 G* L* [; E5 d! A                        switch(key)3 u1 X# D+ E. G
                        {
5 D8 \, p& Q3 A/ r9 }                                case 0xe0: num=4;break;          //4
+ ~7 g4 E, w+ z) B                                case 0xd0: num=5;break;          //5
/ }4 n5 ~/ x  v7 S  o                                case 0xb0: num=6;break;          //6
' P, Y* c# Y" T$ T8 I  \# e                                case 0x70: num=7;break;          //减—* [! N- j, `8 Z. t
                        }        - U( J4 x5 Q6 i7 K8 k# O" w
                }! Z. D4 [8 H- i$ L( u
                while(P1!=0xfd);
* W, e7 Y9 e1 N% N( A" c                if(num==4||num==5||num==6)2 `: v( `' l7 S+ `1 W( a+ I
                {$ b2 t' z5 m+ S  k$ u
                        if(flag==0)         //没有按下符号键7 l! k# u$ B  B/ t0 T, |0 d
                        {
% n$ U. @' O! F0 d! v                                //led=1;
( {: w" h" k+ f# @8 S7 s                                a=a*10+dat1[num];        , A! d5 j- e8 @  {% t  S
                        }( I* x' X* E+ c
                        else1 i* b# \7 u& ?
                        {
3 v( y& F* f$ y# V3 I7 w! |                                //led=1;
5 o( `2 O( h" |: r5 a+ Z4 |8 M                                b=b*10+dat1[num];% ^7 k! E9 U6 n* D
                        }                        
: W0 X% ~* @5 Z- g( r2 L                }
" W" _/ e! n5 s. T+ @                else
' U0 h% [5 s) L  T& K                {9 C6 P' H, N4 [4 V+ p! Q- Q
                        flag=1;
2 b) ?2 I  k  H                        fuhao=2;//带表减号8 X" y$ w4 @' `5 t
                }( ?. O; X" f- O% s6 z( _
                lcdwrd(0x30+dat1[num]);% I9 j- g* O+ |& L
        }
' y0 J- M) \) y1 k
" g& w4 n  c1 n' e
& |$ Y3 u; ^+ W! x2 c; F

" |7 d- Q; f, x9 U9 z
! B6 c" ~6 Q0 M; J& B
        P1=0xfb;                 //令第三行为0,判断哪一列按下
. Y# @7 {1 ~( M+ l" n2 _5 }        if(P1!=0xfb)
6 ?' ^3 c" L/ V. n( ^8 f0 _        {: C, ]$ Q3 I# ~) t! [
                delay(1000);
( n% v# B- v, w" Q* h+ ~                if(P1!=0xfb)
' V4 y3 d8 k# b" a7 [) c7 [+ J                {( \2 e" O& I; c5 G# X
                        key=P1&0xf0;$ M1 m! k( F# r
                        switch(key)
" z) N- ]9 O, y9 {                        {
* k3 h( p' ^4 {$ b" w! h0 ]                                case 0xe0: num=8;break;          //7
+ L! d/ g/ _" p' a5 R6 V4 C                                case 0xd0: num=9;break;          //8" h' s+ U  n7 b% c2 o' L
                                case 0xb0: num=10;break;  //9* Z" l4 J0 E3 Z. R2 l5 R& K4 E
                                case 0x70: num=11;break;  //乘*/ O" i! B8 e+ A, E5 `+ Y
                        }        
* q7 h3 A( ~  V: g1 ?3 J  I                }
. R( F3 @+ N% `+ L                while(P1!=0xfb);) }" q# o" s  Z. w/ R# e0 T; ]
                if(num==8||num==9||num==10)
( `' V6 e. {( r9 S                {
1 Y  b0 r2 O% ]- l                        if(flag==0)         //没有按下符号键
6 E7 N( t  V! n( e" W3 ?                        {
' L: l. E0 \# O% \$ S8 c1 [& b                                //led=1;4 E, |9 j; ~# Z+ s. _0 Z
                                a=a*10+dat1[num];        - A( x3 _1 S2 ?+ C" A9 O
                        }6 K2 e5 T8 ]4 `1 E
                        else
8 }, C7 V8 D& J; W2 v3 W                        {
' H  K  e% j9 l* T                                //led=1;
3 J4 A+ W6 }9 C8 }                                b=b*10+dat1[num];2 j- ^7 ]& \5 b
                        }                        
) O0 ^+ b; L" c8 u# s- p2 d                }3 Y9 d0 d$ A; h6 f
                else
, l6 Q* B" }, j7 E6 @- V                {( P) B# e' j) u: S
                        flag=1;
) C, B5 E, T- Q8 A5 r4 v                        fuhao=3;//带表乘号*
& _1 {. `1 u) U. O8 W7 f) n                }" q4 [! \/ e. L& {
                lcdwrd(0x30+dat1[num]);( q! W* q+ d' V; T. ^# [$ ]
        }$ {& y+ Z/ o6 i7 U
8 s' S3 w" v+ u/ G; }2 F. x  c% t$ u
1 K' Q' v, D6 Q5 H0 f6 y! ^

) F) o: ~- y' q) H
/ }; j0 B* q  m9 Y  `5 x/ k5 u8 K1 R
        P1=0xf7;                 //令第四行为0,判断哪一列按下/ e8 q/ g. C: m# f9 M  A
        if(P1!=0xf7)
1 P( @! s9 _- K        {/ d  \7 X* Q" c, h; f. O
                delay(1000);$ b0 f- U8 G9 U+ W; }, t
                if(P1!=0xf7)
0 T1 _) i- ~2 \6 y                {
$ @) b9 O4 A" ~2 Q2 p% p: O                        key=P1&0xf0;$ E! D+ e- q7 L
                        switch(key)
5 r$ d5 h3 t) n, z                        {1 L1 W2 H$ Z# J" ~3 T" S
                                case 0xe0: num=12;break;  //03 {! D1 P2 j+ q% W3 }8 c
                                case 0xd0: num=13;break;  //清除rst
! K! J2 y) }: G' u                                case 0xb0: num=14;break;  //等号=
0 ]8 B/ E$ y- S                                case 0x70: num=15;break;  //除/7 e: Z4 V) ?$ h" g
                        }        
8 e- }9 V( O; g# t                }5 @: e  b; B( g% s7 B) C8 N  x
                while(P1!=0xf7);
* z) E" s( I$ W4 L. J                switch(num)
$ ~3 K7 c6 n! S$ |: }5 o; z                {0 m& h9 @# J* h3 j1 T$ _1 F
                        case 12:
6 ~( r  E# D, b! B                                        if(flag==0)         //没有按下符号键- v* [& u( \7 _) f0 {
                                        {
. k+ I9 i2 C  f0 ]                                                //led=1;
) \  Q; V/ ^  w/ i# M# F) ]                                                a=a*10+dat1[num];
; x, {5 {% P5 t& G9 Y+ g9 m+ [3 W                                                lcdwrd(0x30);        - D( F2 l8 n& w* ^
                                        }
/ Z0 n( e% r, J                                        else/ @4 E0 Q, A% g- F& S
                                        {  ^8 r; f# B) s4 ~( Q+ `5 U  r
                                                //led=1;
- H: x# S: P, \4 w$ v2 g                                                b=b*10+dat1[num];
8 A: E( j3 C0 c  `. N; {                                                lcdwrd(0x30);
8 I1 B6 s, o- n                                        }7 z2 }. v) ]! o3 t6 s
                                        break;. G! v8 D6 _& ?5 H' C, Q
                        3 |' I: M( c. b4 ?
                        case 13: 9 U, J+ w( a1 {- b7 p
                                        lcdwrc(0x01);        //清屏指令                        
' {& w1 g* x: [, T+ {0 O                                        a=0;
8 m5 }+ q( p/ |                                        b=0;& U( p% ]6 S3 c: t/ \- S; N+ I
                                        flag=0;
' B6 r& k( f$ z7 Z; [                                        fuhao=0;; x/ L# a9 D' B" c8 l
                                        break;
, Z6 L9 _5 C* j$ d1 b4 A+ U9 T
8 n- h: x6 d1 i3 p5 N

/ u  U$ q1 I% e  i                        case 15:
/ e; \' ]4 d4 Y* S( M+ Y                        
) T4 Z/ \; g0 c( J6 c/ B& V                                        flag=1;
7 c4 \" X0 Q0 e( {) F                                        fuhao=4;
$ d5 \2 M* k$ t5 C- ]# m                                        lcdwrd(0x2f);//除号/! @6 U* K! d0 l  }. }( R$ H
                                        break;
# s. f  B# m' [  I5 j* ^( [                                        6 U( W6 Q: t- C
                        case 14:
0 _7 z1 ~0 _. U% P/ m7 S, |8 @                                        if(fuhao==1)//加
+ L2 s  d3 X6 i9 o8 k* Q4 [                                        {0 ^' g, I+ g  \7 d9 b* U  K
                                                lcdwrc(0x4f+0x80);% T2 T; J8 D5 H6 h4 s! Y
                                                lcdwrc(0x04);//设置光标左移,屏幕不移动
9 H: m' d! L& H9 c9 X7 \                                                c=a+b;
3 b3 y9 Q- R* T9 C                                                while(c!=0)         //一位一位显示
% j; F3 v8 p2 ]1 b  @                                                {* n( K% j  L$ W- `# _: x  n% ^
                                                        lcdwrd(0x30+c%10);//显示结果的最后一位在0x4f的位置
- g, T; @0 z% V; }( X                                                        c=c/10;//取前面的结果数据        
  A* @; x" J8 {3 G1 v* v                                                }
, A, _+ n8 }  Y                                                lcdwrd(0x3d); //显示等于号=
5 s/ R6 M- y' G+ [4 c/ T5 n                                                a=0;
: G" Q# s( \  i# V' I                                                b=0;5 [' S7 \! N7 c7 j( O
                                                flag=0;, l3 ]! j& p4 ^% B
                                                fuhao=0;//全部清除为09 s5 l; H- N+ t8 U4 s, u* L1 c
                                        }
5 n# ^- [% |3 ]7 \$ \. J, j                                        if(fuhao==2)   //减
( d( p2 }% h. m5 f2 Q                                        {
0 l8 P! W9 _- X1 P                                                lcdwrc(0x4f+0x80);
& i# O! J9 B  n; I  z7 I9 L( @                                                lcdwrc(0x04);//设置光标左移,屏幕不移动
6 }9 [3 Y+ X# o" a( ]# ~2 H                                                if(a>b)
3 B/ {) e0 X* h2 [, {  M% ~                                                        c=a-b;
' M) F$ b$ O; L/ I                                                else2 w5 ?9 Z7 W  R- v% f# K7 E; w
                                                        c=b-a;
8 T6 A& ~" g! o. e0 W+ c6 m; s9 \                                                
; p" R8 I. B" y; S9 \* j9 l9 v4 f                                                while(c!=0)         //一位一位显示. |* i8 ?2 b! w: g2 b; ^
                                                {
/ a3 L/ V0 F1 M9 I$ ~! l                                                        lcdwrd(0x30+c%10);//显示结果的最后一位在0x4f的位置$ |5 ?7 l5 j' E9 _8 z
                                                        c=c/10;//取前面的结果数据        / H" J' ~3 i/ H+ W
                                                }5 p' c; y, G$ @& r1 q
                                                if(a<b)        lcdwrd(0x2d); //显示-号3 I4 c/ r" f2 _% h" Z! ?
                                                lcdwrd(0x3d); //显示等于号=$ v! [' m6 N, v5 `# u* q
                                                a=0;+ B5 ^; Z- b* m/ t% E. K: n
                                                b=0;
1 _: o0 k2 i+ i) n                                                flag=0;; a  Q* L$ X6 H
                                                fuhao=0;//全部清除为0* j! W! @  @/ R6 q0 E7 {, g
                                        }
; Q2 {8 r. K" |( A8 j# G7 {                                        if(fuhao==3)//乘法                8 G, P4 z/ {% f& i0 t
                                        {
! R- [) n! a9 i- `( E                                                lcdwrc(0x4f+0x80);
' n( l3 i' c) e5 k                                                lcdwrc(0x04);//设置光标左移,屏幕不移动
  v8 g% k- N4 b+ K) f; w                                                c=a*b;* \  n. @/ ~& U+ Q9 l5 F
                                                while(c!=0)         //一位一位显示
% o- \, ]# y# v8 w                                                {
5 \# a+ U5 k9 s6 z0 ^! O! Q+ q2 R                                                        lcdwrd(0x30+c%10);//显示结果的最后一位在0x4f的位置
1 C$ [; Q* \5 {$ c                                                        c=c/10;//取前面的结果数据        
2 Q" E4 \+ U8 B* W7 t0 }5 a" N& D. \" k                                                }
0 u& ?% ~, W2 j1 ^                                                lcdwrd(0x3d); //显示等于号=( \% S; P: I$ f
                                                a=0;
+ {/ D2 x& S# I- @4 I$ x                                                b=0;  H) I: N/ s3 p( b6 j( `, f
                                                flag=0;, N& @1 S- w- r( {+ A* Z. I
                                                fuhao=0;//全部清除为0          g# f2 C3 i* Q4 D- x% q
                                        }
7 k  \2 d& k, C8 X+ D2 I                                        if(fuhao==3)//乘法               
1 t7 X+ n& U5 w7 h/ J  `                                        {7 p- H0 [2 a' w; M
                                                lcdwrc(0x4f+0x80);( m1 B2 y) ^% d
                                                lcdwrc(0x04);//设置光标左移,屏幕不移动
. q% S/ ~9 g- Y/ B5 |                                                c=a*b;
# e9 S' k6 g; r# s7 M                                                while(c!=0)         //一位一位显示5 Y( X, W) i2 P+ V
                                                {" c$ v( K# a* @# f' A2 M3 E- E0 q
                                                        lcdwrd(0x30+c%10);//显示结果的最后一位在0x4f的位置
- p" I: G' c" R: A; o                                                        c=c/10;//取前面的结果数据        + i0 s/ g. Y/ Q2 @
                                                }
0 ~# l% Y. }! }1 O) M6 q                                                lcdwrd(0x3d); //显示等于号=
6 y. h( e: @- [  M1 Z2 ~1 }                                                a=0;
  ?7 v0 A8 _  C. x" f4 s                                                b=0;
3 {1 `" P5 h; G* H* g" Y                                                flag=0;
/ X0 A0 z$ r* }- k& l: R: E- L* |                                                fuhao=0;//全部清除为0        
4 Q2 p6 D3 g/ ^5 i7 y% h                                        }
9 Y. [# f3 E6 Y! V0 h6 y. P1 m6 x                                        if(fuhao==4)" r: A( W: Z8 e  _( e& v
                                        {# e- Z- U- \8 {3 U* F
                                                k=0;
1 D; t/ d3 s  g' t8 C! a% C                                                lcdwrc(0x4f+0x80);
. g. I; _6 }# E                                                lcdwrc(0x04);//设置光标左移,屏幕不移动
2 y3 ~) I: h. s+ l: j" f5 m) }* w                                                c=(long)(((float)a/b)*1000);//强制转换为long。
% U" @4 }  C: E- x8 n! W+ S                                                while(c!=0)         //一位一位显示8 e2 h: d4 @- ?4 M
                                                {
* x7 r) Z4 W, D5 C! ^! F                                                        k++;4 n, M7 e$ S5 T; _& m6 d6 o
                                                        lcdwrd(0x30+c%10);//显示结果的最后一位在0x4f的位置
6 d% @" c5 t( Y% ~) j- D. E                                                        c=c/10;//取前面的结果数据! Z- ^4 Z9 _1 _
                                                        if(k==3)
" Y' H9 K+ f: h$ a' u& C+ @                                                        {
! i2 {# u4 T8 C$ K                                                                lcdwrd(0x2e);
# u7 m- l) l! V! ]$ [! K  t2 n                                                                k=0;5 Y: O% ~) r% e$ w: I+ P2 t. q
                                                        }               
7 x* i& W+ t$ T5 }) E                                                }
5 u' P7 E4 _% A  J( X                                                if(a/b<0)          //如果a比b小的话那么除的结果最高位是0
; ?$ L5 [2 z% Z                                                {
" e; F8 U$ n; ?) N2 h                                                        
" W. _+ B2 e+ F2 Y/ U9 F( n- w2 d…………限于本文篇幅 余下代码请下载附件…………6 u; A/ q0 S  L& z5 j- _

6 }3 b3 L% U9 f1 i5 ?4 l

+ `( ?6 l( _% [7 c, F" G下载:% a! X; ?, A; r, H0 ~
游客,如果您要查看本帖隐藏内容请回复

9 J- }) o3 m1 `
. F% b2 m3 L' i9 m3 V( }( R1 X! E8 N

9 M% @# ~8 y  B: E6 ^' Z. X
, \! B! X( R, m' L! `

2 x3 h( g  K  R- @+ V% ~! Y3 Q9 P( ^1 V4 E% L" h3 m
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-18 18:05 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表