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

基于单片机的智能计算机程序 可以实现加减乘除运算

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
基于单片机的智能计算机程序 可以实现加减乘除运算1 u; m, }. h: I" h/ I' a5 t
6 O, ~- Y% i( T+ {/ O0 T2 y
! K2 [  i5 U! h. @, G

: d  f; S: L6 P% Q  B# a- `单片机源程序:9 G, {$ r$ g& O: e
/*  S16 S12 S8 S4分别是123+
/ V3 q) W8 ]( r* f0 f  P, K        S15 S11 S7 S3分别是456-
; V# T0 }2 b  R0 W1 |% Z$ Z! h        S14 S10 S6 S2分别是789*
. K8 C( V& o5 b8 E        S13 S9 S5 S1分别是0 CLR = /* i  ^; a; _3 Y/ N7 q# e
*/$ {: \. }2 K3 C$ R- M1 [2 F8 q9 {- W! t
/* 实现两个数的运算,每个数的位数至少可以八位  */) ^( p6 X6 T- A6 `
#include<reg52.h>                        : t7 X6 I) a$ S: @
typedef unsigned char uint8;
" k; C3 w: p7 l( J4 |+ f, jtypedef unsigned int uint16;
: z% d6 {; q% @# |sbit rw=P2^5;
0 i) }/ Q8 u$ k6 Zsbit rs=P2^6;
* ~0 K9 e2 L# s% [/ V9 K* W2 Dsbit en=P2^7;* c! x/ \2 v: A" v- {3 j
sbit led=P3^7;, d* E. \  }9 B# ~5 p
sbit psb=P3^2;9 `5 q3 D: n% u) m+ D. w# H: W
sbit beep=P2^0;
; c! i5 @! [" E6 H. L! p! O+ {4 f0 kuint8 key,num;8 e+ I% M9 z2 m& B
uint8 fuhao;//定义具体的那个符号,是加减还是乘除。) J5 P- D1 ~0 @3 V
uint8 flag;        //定义有没有按下符号键,这个是统称
; g4 I! b. W, O9 H/ s7 B: plong a,b,c,d;        //定义运算数据的第一个和第二个及等于的数变量
+ K; |6 V" r& j' y' xuint8 k; //定义小数点后面显示的位数
9 c& {# |$ X8 \* |1 _! C3 \uint8 biao,keyflag;
- Q) K3 Q6 X2 I! q) K; }' Fuint8 dat1[]={1,2,3,0x2b-0x30,4,5,6,0x2d-0x30,7,8,9,0x2a-0x30,0,0x01-0x30,0x3d-0x30,0x2b-0x30 };//保存显示的数据
" f: L5 S: o3 x+ `5 h1 Fvoid delay(uint16 i)  h6 [6 ]0 U. l% x% T0 X7 {
{' g+ n( x6 D- L3 e7 [/ Z. E% ]+ j, [
        while(i--);- T/ l4 m; ~$ f) {2 n9 p
}
* o, ^4 k! ^  A$ O. l/ b9 nvoid write_com(uint16 com)
+ P6 x( a8 F3 R2 U{
* Y  B, z1 c' `  e0 G rs=0;2 w8 p- `( z+ w* A
P0=com;4 e0 J3 Q& @' c" D. Q! i/ s8 n0 y
delay(500);
* o) p4 o% v9 x  | en=1;
  Z: v6 B# g+ s9 y% S+ n delay(500);" b* b0 G& O9 k  F' b: s
en=0;- C) T$ i8 Z2 o9 E
}2 @; E7 Q: U( ]: Z" z% O; H
void write_data(uint16 date)) ^/ L  S  [7 ]4 m# J
{
6 m! W" ]$ W9 I  u  O rs=1;3 y+ }& [9 S* u% I4 H0 O) M8 n
P0=date;
6 {4 D1 w% w+ I' c! k0 Z& Q+ o delay(500);8 t8 ~, n9 V- ~7 [& a& m1 x2 R
en=1;9 d9 a' ?6 ^6 k! w2 {
delay(500);
& Q5 \8 d& X! T en=0;
8 D5 o7 Y8 T' e8 I' |: M4 k }
$ Z( o; G; j$ A5 F* ], Bvoid lcdinit()9 k- u3 `# u! G8 w3 L
{4 U' G8 L6 N! S; R
        psb=1;% X  p$ n' V5 J, s- n# o0 h
rw=0;
: D8 M8 j" d+ r en=0;
; {1 C0 H6 h" X0 p. `  S3 a  write_com(0x30);
. k; F* x& ?* t/ z" d3 r/ |4 X delay(500);
: b, Y5 v2 z: |  write_com(0x0c);
7 g4 R" }% |& X. L; v9 y delay(500);3 x- B# X+ i9 w& s7 K2 \
write_com(0x01);  [8 Q2 O( a8 p7 O; h( {' Y
delay(500);
% P; r5 O7 l* b  W" e% Z3 K2 \        key=0;
2 d" g( o/ d0 b( F        num=0;
/ l5 B6 f3 e: p' r. l: H& `        flag=0;
9 T$ o  r, `1 F% p        fuhao=0;0 y& T4 m& s4 x0 K% C+ K# ?5 X
        a=0;
4 z( ~/ J5 ?8 M5 }, x9 v/ p( Y) n        b=0;
% K- |3 l" b9 h/ J        c=0;: Q9 w, l5 \  d' `
        d=0;$ e9 z6 ]7 c( t4 o
        biao=0;
) Z! B: x& l+ d: u7 r2 _( f        led=0;
5 |, ~) c/ s+ p' d+ v$ s}* L( r. A& D: c9 F! ~6 @8 V5 h
void keyscan()
% g* U5 |' V- I% f1 n{
' a' A+ `( J# ?1 L% c        P1=0xfe;   //令第一行为0,然后判断是哪一列按下: p) `- M. b2 x) ^! y9 b, ]: N
        if(P1!=0xfe)
* d) }+ {' U) `& W        {' @: \. L4 c. E. ]
                delay(1000);/ O6 Z9 E9 y! h- ]4 U6 [6 q( }0 |5 g
                if(P1!=0xfe)
4 Z3 @' f7 C: i                {4 A2 T9 T5 v7 m: ]+ \
                        key=P1&0xf0;
+ z8 A( u  n+ r* E" Y2 F                        switch(key)
, j5 i+ H  @4 w/ I8 J                        {/ _8 l5 C2 T6 X! f: x  ~/ |
                                case 0xe0: num=0;if(keyflag==1){keyflag=0;write_com(0x01);};break;          //1: H! F$ C' O6 g7 Y# p" S
                                case 0xd0: num=1;if(keyflag==1){keyflag=0;write_com(0x01);};break;          //2) I+ ~  g; P5 r! n
                                case 0xb0: num=2;if(keyflag==1){keyflag=0;write_com(0x01);};break;          //3
+ {! Z4 t4 V" n) z; X( u                                case 0x70: num=3;break;          //加
2 k+ e! Y7 q5 C                        }/ G( ]$ c+ ], {) y
                }: u) x3 I: x7 j
                while(P1!=0xfe);
# |' N6 v+ K: H& Q                if(num==0||num==1||num==2)         //确认第一行的数1,2,33 I( I! d9 ^) o1 L* R
                {' Q) g$ X/ r; E+ `% f% m
                        if(flag==0)         //没有按下符号键/ y+ V& h3 x' \  Z+ T8 T' @
                        {
# c0 p. B/ m  U3 _5 J1 t  Z& \                                //led=1;+ o. }; |5 p4 a' R# u
                                a=a*10+dat1[num];          ?; n0 ?; s. ]2 ~% ~( V/ [
                        }5 ]. `8 y" [& G
                        else  U' Q" V- n% D6 H
                        {
" _0 x: l9 V; L8 B4 ~                                //led=1;
8 ]$ G/ q4 G* ~6 g" W, u                                b=b*10+dat1[num];! U: {( x0 P' K
                        }, P! w9 n% |& p, o# X
                & a% M# K6 \5 @3 r3 E& s
                }. {5 ?4 W* I+ l9 a) b+ X& h2 c1 i
                if(num==3)  S! n, n. h: k
                {
7 L) C5 W: e- u' C' b* _* r                        //led=0;
- P+ m0 C) P% w" T* d' h1 t                        flag=1;
+ [. Q9 A! R8 @% L5 G2 O                        fuhao=1;//加号+        
$ C# f: b0 B! Z. c- j+ ~                }
) a) s) Q" C+ y( j5 O! U0 G3 Y% s                write_data(0x30+dat1[num]);
% w7 R- P( V9 f& g% z" c9 f3 C        }
" z* U- C/ L$ i3 H$ p2 u2 G9 n4 V8 c
# b! I! Q+ @& c3 ]2 \  o        P1=0xfd;                                //令第二行为0,判断是哪一列按下
' j+ u5 Z% t' f# V% h( w5 M        if(P1!=0xfd)
5 ~* `$ K9 B9 t$ Q        {
4 u2 b+ T4 C) T$ _  Z( p                delay(1000);
2 O  Y2 x3 |0 s7 d                if(P1!=0xfd)2 G3 ]- e, M1 g3 c
                {3 {0 z0 s6 d% \% z
                        key=P1&0xf0;
  L* T$ A1 c. I* T& F                        switch(key)7 ]# R- M+ K9 M' I5 K% h
                        {
& F0 a/ Q  ~+ }+ q6 O. W                                case 0xe0: num=4;if(keyflag==1){keyflag=0;write_com(0x01);};break;          //4                                 
" F3 j5 h9 w" ^5 K  O                                case 0xd0: num=5;if(keyflag==1){keyflag=0;write_com(0x01);};break;          //5+ F  t$ J& ?3 v1 ]1 V
                                case 0xb0: num=6;if(keyflag==1){keyflag=0;write_com(0x01);};break;          //6
6 d( S( _. h. v                                case 0x70: num=7;break;          //减—
1 e9 Q$ E3 c6 d( r; O                        }        
; H' d0 l# d" x% y                }
# C4 U* K: K! o, I                while(P1!=0xfd);
) A% Z6 H  Y8 U0 e6 h                if(num==4||num==5||num==6)( i; A6 V7 G( J& A
                {
/ b, K  n$ s4 A; g0 J, I                        if(flag==0)         //没有按下符号键* l5 G# X4 m; [/ V. i; z& _$ k( T. ]
                        {
2 Y% U$ Y- d9 u1 f. G, u3 z7 Y                                //led=1;
' t& M/ O8 j4 w) ?8 u7 M                                a=a*10+dat1[num];        . h0 V0 P" k; N
                        }- O* x7 ~2 N( I/ \0 g8 R- [6 {
                        else6 m8 ?% N" g) _# B! \+ |
                        {- `8 W$ }5 H' B# w0 t
                                //led=1;
; ~; V  u. w1 x, [: [; E                                b=b*10+dat1[num];
  B; I. l$ y+ H7 W+ ]$ t: V- l* r                        }                        3 B  J/ k  R& E* B) }4 p9 v- f( N
                }; K% h- E" K$ R& _: K8 T
                else
- |6 q; }7 u* L" U                {. z  }# u' F& E) e. X$ S
                        flag=1;+ J3 P( N. N1 w9 t
                        fuhao=2;//带表减号  e! E  @2 h" ]# q
                }" I# I" x6 w% L' U5 Y5 O5 I
                write_data(0x30+dat1[num]);& y2 C5 G% N! w  H* u5 \4 @; V
        }
7 n3 W& u/ }5 {7 P! U7 j
; h# ~5 o- l, a% U+ P# h) r        P1=0xfb;                 //令第三行为0,判断哪一列按下
# _5 _7 L( D1 [. \/ v        if(P1!=0xfb): L6 B% X+ a$ F" v5 n3 K! R$ O
        {
$ A" Q/ B7 R6 U! V4 }9 F! \) ]                delay(1000);. c$ [& J( a* `+ H  |4 V  Y
                if(P1!=0xfb)
6 T  i$ }) |2 S. T4 a                {
& o7 Z+ G' G: H: V' C3 M( k                        key=P1&0xf0;  X" a5 N! i$ p- t
                        switch(key)
: |8 O! K6 Y! e) t8 ]                        {! p4 W3 N: H! \' ?. }' b8 u5 T
                                case 0xe0: num=8;if(keyflag==1){keyflag=0;write_com(0x01);};break;          //7
( v5 K. I' {+ w) h* l& o                                case 0xd0: num=9;if(keyflag==1){keyflag=0;write_com(0x01);};break;          //8
. V8 s" X1 F6 a6 i" e! m  Y* k                                case 0xb0: num=10;if(keyflag==1){keyflag=0;write_com(0x01);};break;  //9
! E) L$ [* }2 P+ L; {$ F0 L                                case 0x70: num=11;break;  //乘** b: I$ P9 T4 f  _5 o& C, N
                        }        
- m# l7 e2 S5 {- z0 P8 |8 _                }
" [. k" q2 r* g) ^% i6 q* ^                while(P1!=0xfb);6 N1 N; s3 v0 Z; N) P& W. r# K; n
                if(num==8||num==9||num==10)
9 s4 |, L% c; w                {% u0 G" o' f: a, ]1 i
                        if(flag==0)         //没有按下符号键
2 H. \# L7 X& q6 @" ~) c1 j  x                        {
* _+ r- h6 |* F                                //led=1;8 w) s4 Y9 z% S7 p/ W, s
                                a=a*10+dat1[num];        
9 z! W  I! W& Y. u5 O7 b4 x' V                        }
: R$ Y. A/ n' v% S* M6 q                        else5 x  I) ]- n; L$ V2 k8 q( W
                        {
4 _4 T( y2 U) M) K8 \% [                                //led=1;6 u/ Q, L8 ?. C0 S( u- o6 }
                                b=b*10+dat1[num];) U8 w+ D$ C2 z; Q* i0 [
                        }                        : |- ^/ Y, s) F# S6 g) {
                }
& K5 q+ G! p/ I, d, V                else
7 ~% H: d/ d2 w                {$ r- Q& u9 d1 W- r2 {0 ]5 C2 n3 f
                        flag=1;
" j% v" ~8 A3 n3 H4 b9 X3 e                        fuhao=3;//带表乘号*( V" |/ ~+ p3 W3 r+ V$ p9 h. x! a& k
                }; ?& D$ A* d/ n" v# C! i
                write_data(0x30+dat1[num]);
7 ^) a1 c: W) v) p" r        }1 w: ]# ?+ v4 a$ ^0 }: s; Z2 n

% ?& H& @( t8 Z7 e) W        P1=0xf7;                 //令第四行为0,判断哪一列按下
. [& {7 C1 L" q7 F8 P" F$ V' Y% W. L        if(P1!=0xf7)  g# I! T! X  u# @: h. \- Y" o
        {
& `2 E+ O( w4 a- K+ X- S                delay(1000);7 U( s! k2 B8 A% L/ z, e7 Y; l
                if(P1!=0xf7)
* P- C' n& q6 @$ o! `0 h3 v( K' M/ K                {  Z) d: o6 s7 ~' u2 ]% i
                        key=P1&0xf0;
: o1 K& _- M7 V8 A: H( X# i; E                        switch(key)
) g9 w- f/ a. F/ P                        {0 M$ }: B: I+ H% M( ~  Y
                                case 0xe0: num=12;if(keyflag==1){keyflag=0;write_data(0x01);};break;  //0& ?2 d2 T* y5 B& \2 O( _, U) X
                                case 0xd0: num=13;break;  //清除rst# ], E% x: ~4 T+ n$ G/ K
                                case 0xb0: num=14;break;  //等号=
. J. s8 I$ d: u* |                                case 0x70: num=15;break;  //除/# e4 X" C! y" T9 V
                        }        * a, t2 c. F% ?( M. ~7 a
                }: W6 X! T- Y! b5 K0 e- w) }
                while(P1!=0xf7);, F3 x* Z; Y- P8 s0 s8 I
                switch(num)
  q- F6 G& `6 ?" }; ~/ c                {! x8 j! p% R7 [; @. g
                        case 12:
  j2 _/ Y+ p. V3 _3 v( O                                        if(flag==0)         //没有按下符号键
! n- p- d9 f, X3 O: `( _# Z" \                                        {
9 ?0 E, r& {1 C! N                                                //led=1;4 C, g9 N6 Y6 ^0 Z2 \
                                                a=a*10+dat1[num];% v, N6 _0 J3 N: E7 k1 r
                                                write_data(0x30);        
/ l. x: n; S+ |' y                                        }
6 ~! I) B8 H2 L1 ]7 I2 \8 X0 u                                        else, x# W' P& V  Q( I( `' h% i' @7 {3 P
                                        {8 N5 `- K1 L0 B# N
                                                //led=1;8 N; K  N/ L9 B8 b4 N/ J
                                                b=b*10+dat1[num];
' |! d' I8 Y# E                                                write_data(0x30);$ |) F0 {% [* P6 L! h
                                        }
5 _# X6 H% d  v! I6 o                                        break;
- J; y. ]& }) O                        & d1 J2 K2 n$ f! B, v3 J$ f9 s
                        case 13:
" N  X) O: c" {' V4 w                                        write_com(0x01);        //清屏指令                        
% c' J% @* X' a. Q: b                                        a=0;3 q1 Z* h: Q/ Q: E3 W: s
                                        b=0;  Y) T* J; ^* M, s* F, @
                                        flag=0;
7 I, O) O) P7 U4 |( O- Z" Y4 ~                                        fuhao=0;! m9 v1 p% n5 `
                                        break;  g; \+ @. U, j- z. q% x/ C
                        case 15:  x: N7 Q0 n* x8 I% t$ R. l
                        
- Z& _# Y5 v' y) f9 U' O                                        flag=1;
7 k+ p4 Y# d. R) a8 n$ h; T7 v                                        fuhao=4;
) ^+ K' W# @9 Y! _4 Q                                        write_data(0x2f);//除号/
' i7 U. g% t4 s  j$ j                                        break;" ]; V, b" s2 P! t( r, F+ q) |' ?9 P0 u
                                       
% G, A+ @! {  J3 [                        case 14:                                 
' e& A, `, a/ v7 h% N                                        if(fuhao==1)//加7 ?, f; {6 ]. Q$ I0 K% I
                                        {& h, e8 a# t6 X- E5 U9 s7 W6 r7 g
                                            write_com(0x4f+0x80);
$ b$ O9 t4 Z3 i8 j6 I+ U* e                                                write_com(0x04);//设置光标左移,屏幕不移动
5 I5 `, y/ O5 f$ `+ g4 B                                                c=a+b;) m( L' T( P% y, J
                                                while(c!=0)         //一位一位显示
- l1 a2 B) p9 T- t                                                {5 q7 c+ k8 j6 E% H9 b9 e6 Q+ U
                                                        write_data(0x30+c%10);//显示结果的最后一位在0x4f的位置
" W' Q5 m; Q$ t0 z' }                                                        c=c/10;//取前面的结果数据        
7 o# y: B3 ~. n+ x+ w  q4 h                                                        keyflag=1;1 z2 I$ n: c; C/ v" A7 f6 U: x
                                                }8 i# V2 \  }: v
                                                write_data(0x3d); //显示等于号=% e8 f* _; B" A9 L
                                                a=0;' {5 c1 c. i* K4 u/ f  m0 m
                                                b=0;
+ X) y# W# p: \: A                                                flag=0;# u0 d& o6 _2 Y% v- Y& T0 X/ A8 [
                                                fuhao=0;//全部清除为0
9 _% @9 s. D6 {4 w" p7 s2 @& Y. x" s                                        }1 \3 d2 p: ], |; j/ C* g
                                        if(fuhao==2)   //减
9 y2 b3 I: c3 a: ~4 }. r2 U* ~                                        {
% b# H3 K, t/ b& u) f                                                write_com(0x4f+0x80);
4 }# ^* m' D1 k2 q: H' ^6 w6 X# N                                            write_com(0x04);//设置光标左移,屏幕不移动1 H$ ]6 T1 z1 y6 @
                                                if(a>b)! u6 V5 [% X9 e7 G- m+ v' b' s
                                                        c=a-b;6 y7 K4 J2 U: D1 Z* c
                                                else8 A7 N1 ?" {& E: ^7 y" X% I4 e
                                                        c=b-a;# S6 L9 r: ], s  L* i
                                                
# h7 A$ E5 s% F5 i                                                while(c!=0)         //一位一位显示& a/ ~% R" X6 x; n- r0 D
                                                {" |' |$ u" A4 J* o  U
                                                        write_data(0x30+c%10);//显示结果的最后一位在0x4f的位置
6 ?$ e- A6 v$ j9 O' l                                                        c=c/10;//取前面的结果数据        ( M9 _/ d: B5 [; ]* T( V6 M( {
                                                        keyflag=1;
# ?# s; ]- k4 z* o2 w                                                }. m7 E' s4 g# s* a% O1 \* Z* A
                                                if(a<b)        write_data(0x2d); //显示-号7 @- S, Q6 c5 K- R8 o
                                                write_data(0x3d); //显示等于号=6 V" u  i, l* W7 I: E
                                                a=0;% Y5 C2 a' G, {+ u
                                                b=0;% L' r3 y$ Q- c# b
                                                flag=0;' \0 r$ b6 u3 z9 U# J
                                                fuhao=0;//全部清除为0% G  _7 g4 O% j% H# o" f) r" M7 s
                                        }1 L( g' }' y' w- Z, D3 M2 |
                                        if(fuhao==3)//乘法               
8 i$ ^* M9 e; s  X9 t: W3 z; L                                        {( Y% {+ I" ^+ P' \6 f! Z
                                                write_com(0x4f+0x80);7 j( [* i" q1 a% w. a6 M: C$ f; B
                                                write_com(0x04);//设置光标左移,屏幕不移动
4 N0 s4 j, _% P# D' l% i                                                c=a*b;
/ ?% [' U6 \+ S( ]                                                while(c!=0)         //一位一位显示
/ O/ M3 j% t7 {* H, Q                                                {/ \3 A0 E- K, w# U+ p+ ]- [% {
                                                        write_data(0x30+c%10);//显示结果的最后一位在0x4f的位置
" T5 O* @% @) }% ~                                                        c=c/10;//取前面的结果数据        
) a+ R' t* a3 o7 D/ h                                                        keyflag=1;
% ?: N/ s6 L- g9 o( ^% N! K                                                }/ U/ Y  L- i8 t1 e
                                                write_data(0x3d); //显示等于号=+ N4 w; [/ G, f% [9 r
                                                a=0;( `5 b' v2 j5 l
                                                b=0;
! O1 [8 I7 _+ v0 u                                                flag=0;
% |) t7 k* n) w) b- @% r                                                fuhao=0;//全部清除为0        
5 N, i* ]+ s2 Q- s9 u                                        }
& C( q! p/ \  u  ^" ~9 d3 t& E                                        if(fuhao==3)//乘法               
- J) B. _% X5 k9 i; Y/ u2 C; N) ~  g                                        {
0 K' `7 G2 l: q5 u5 [0 @                                                write_com(0x4f+0x80);: ^5 {& m, d- n9 P; p
                                                write_com(0x04);//设置光标左移,屏幕不移动2 M# }3 O3 W$ m# k# L( R
                                                c=a*b;$ z8 n( \7 d, ^, R2 Y
                                                while(c!=0)         //一位一位显示
* A  i6 `1 {; S) ~( ^1 \9 V2 L* Y                                                {
% B- ]/ ^& D7 R" d! |" f                                                        write_data(0x30+c%10);//显示结果的最后一位在0x4f的位置
; S7 [' T( K- S% s; i  z9 G  w+ V                                                        c=c/10;//取前面的结果数据        % w, d! y; o# M
                                                        keyflag=1;3 K8 B: L8 i: g& W
                                                }; B3 v6 U) W  @, ?0 ?
                                                write_data(0x3d); //显示等于号=
! n; ^' A# z! ~2 e9 w5 n5 v                                                a=0;' Y8 f  q% S' ~( N! T( r% y/ d
                                                b=0;$ t  d) w( a& \& H
                                                flag=0;
# J8 |2 Q0 C  s; g, W8 d                                                fuhao=0;//全部清除为0        
/ o' n, h& B% |' T' ?. f  p- @7 x                                        }5 v$ ]* a- h* B0 E# I
                                        if(fuhao==4). N& o; v5 g( r
                                        {
: t/ [# d4 O+ @! l1 A6 K6 r                                                k=0;
2 }8 v. V$ R- W# R1 t                                                write_com(0x4f+0x80);
: M3 p8 `& N, r1 O4 y                                                write_com(0x04);//设置光标左移,屏幕不移动, u6 [2 x( v( _' [' y3 M$ t* r
                                                c=(long)(((float)a/b)*1000);//强制转换为long。
6 x- @$ O# u) V$ L) B7 P$ O" q0 R, M                                                while(c!=0)         //一位一位显示. o# e8 P3 z8 s- c+ `1 o
                                                {
) R$ q" J) w3 S$ z/ b0 w0 F* Z                                                        k++;0 b) F& u! X3 J8 O
                                                        write_data(0x30+c%10);//显示结果的最后一位在0x4f的位置, S6 W3 V5 ?4 t6 y
                                                        c=c/10;//取前面的结果数据' ~8 ^: l' x3 a" \
                                                        if(k==3)
" I0 o6 g3 D2 v# [* W( V" d                                                        {
8 A$ V8 k# \8 J* S& h+ A                                                                write_data(0x2e);
7 h* Y6 p9 ~! _4 _+ `- c9 Y                                                                k=0;, k6 c  N0 X. b' a. d4 Y* y
                                                        }               
, ]7 ^  ], \: e- l7 M. T% u                                                        keyflag=1;
5 o0 h  G. w6 S8 p4 u                                                }
, X- l% J' p2 ?/ Z; D/ h5 O                                                if(a/b<0)          //如果a比b小的话那么除的结果最高位是09 z/ n* `# l: u( z& p- y0 s
                                                {
  W$ y+ B3 I, i$ N$ I! d6 f                                                        write_data(0x30);        6 z6 x. M- ?5 [# X% N( V& ^
                                                }
& L* D$ c1 z; C                                                write_data(0x3d); //显示等号
0 j2 i: \! L7 \+ C4 n) P$ Y8 t/ ]* W; I% @
…………限于本文篇幅 余下代码请下载附件…………
; [& K8 h1 S5 d
游客,如果您要查看本帖隐藏内容请回复

  X# W  |, A4 A% p" j" R1 \% H4 n6 {* x" L3 j- ]% D

该用户从未签到

2#
发表于 2019-1-10 17:01 | 只看该作者
看看楼主的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-17 07:29 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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