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

单片机简单计算器仿真+源程序 用数码管来显示的

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机简单计算器仿真+源程序 用数码管来显示的

" e! h% _( |. a- w  X$ M

! J8 b9 G8 F# {& {, W
简单计算器  k+ l6 O3 P" Z& j3 ~( Q

) t5 C; J$ N& R1 q
//12M晶振。4位共阴数码管,P0 段码,P2.0~P2.3 位控6 V1 d' o5 H& ?! d- A1 d
//显示 00.00~99.99  ( v- E: G. ^) e# f# W
//2011 07 07   EPJ_C.00.00.c
#include
: T, f, a4 U7 a, E4 {7 T7 T#define uchar unsigned char8 C8 S0 q' ]* K' N# t) T3 b4 e  D
sbit P20=P2^0;0 a$ S& Q; n  {# V3 _% G: e0 v* |7 S
sbit P21=P2^1;
* L# c# Q4 F+ d9 V% C% m' bsbit P22=P2^2;! G8 o1 Z9 [* ]/ R) n: d
sbit P23=P2^3;
sbit P27=P0^7;, D, N2 D3 G" r" G
sbit KS=P1^0; //开始
& q$ l. g4 l  i. j# F/ ]( X$ nsbit KR=P1^1; //复位
uchar time,xs,ge,shi,bai,qian;! h6 p8 B' S9 e) ?. }- D& A5 O1 z
uchar code tab[ ]=        {        
8 X8 O$ o8 t, ]/ ]0 J                                        0x3F,/*0*/0 o! s/ U4 `& s* @" v
                                0x06,/*1*/6 v1 {# j$ \' T+ d( G1 P* M
                                0x5B,/*2*/: ~# ?/ Z  x8 q: v- P
                                0x4F,/*3*/
0 Q  c2 p( r) k# i2 g, P                                0x66,/*4*/
& w# ~( u0 V8 j  A% F8 m; B9 G# M, p                                0x6D,/*5*/2 n2 e- N( L' U- C  S6 h, |+ r* i
                                0x7D,/*6*/
5 F0 H7 D  s9 u! _5 |                                0x07,/*7*/
" Q) {3 p; y3 w8 w                                0x7F,/*8*/2 d# L' `& C% J3 ]7 E
                                0x6F,/*9*/
! u( _) k- q6 D: R( M$ Q                                        };2 [: @, a1 p; U& w' d7 c
4 k' Z- Y% ]6 I2 I9 ~, ~) o/ B
void delay_ms(unsigned int ms)  //1ms延时3 q" ]& C5 z) D4 P9 `/ ]8 n3 i
{
" S. b0 K$ T; V; W; [) ^; _  T           uchar a;
7 t! h- o0 u& I- E0 \           while(ms--)
8 a% z1 y; ]% y$ T% @3 i7 T7 ?- T; N        for(a=123;a>0;a--);
2 `# p; x6 {; J1 A8 D6 {0 E}
# O- Z8 J1 b2 k# q  
( Y( X. D+ B. `) X  Mvoid display();
void T0intinit( )        //定时器T0初始化
( e& J& i* z5 E: U8 E. C: v  S{
- h3 g. `2 o& O* v6 n9 p1 D        TMOD=0x01;+ P, ?# o2 a2 r2 J4 c' y# r
        TH0=(65536-10000)/256;       //10ms定时
7 `) R  J  @. f9 _" H$ H$ b        TL0=(65536-10000)%256;
  J7 S, Q5 V. f        EA=1;
" F4 h; U  z/ N, W- i$ H# e/ o9 s        ET0=1;/ _. |! I( O2 d# @5 D
}
void main()
# ~( f$ o( S) K' U, a: S8 b+ {{         2 }9 r( Q# S. Q% T  V0 p
        T0intinit( );
0 k: y5 l, c$ w3 n6 v        while(1)
5 l4 P* O) V5 ~0 v& u" z        {         
* ?% b9 L! d% w& e; a                display( );
% P4 Z+ Z1 M+ C* s4 b4 V6 S! x3 j* K' p                while(!KS)            //开始/暂停 键. b! B' w* O) N8 }
                {           ! J: `" Q7 c. M# o
                        display( );+ E  [7 Y+ M0 w" J& O" O  q
                        if(KS)
  M! }. o. f4 d! X; ~! ^                        TR0=!TR0;
6 e/ p' b$ S5 ^* m, o                }
. A0 ?4 d; @9 w: n3 s! p               
6 H: B+ o# I2 E* L7 ~                while(!KR)         //清零键
& z" U$ ]8 J/ F3 f) U1 C                {6 n4 l6 f% \( a2 p( F) [0 r; ~9 m
                        display( );
2 l3 F2 W9 o7 N" t4 t8 w2 k                        if(KR)
# U7 s, R. ]8 W; h) T                        TR0=0;
; k8 l  ^: s- m! `9 L5 H. H* U: C                        qian=0;3 F1 t# r' I, w# U
                        bai=0;2 t7 a3 p% B: X; G, ]: F9 \
                        shi=0;
; [- C- l0 e7 {% e7 o& |                        ge=0;9 ?! I2 x1 b$ N: ]$ D, M
                }
7 Q/ h% @0 x6 c- f) C1 R* @. A                if(bai==10)8 Y  d" ]7 P4 k1 m7 T0 k
                {5 _1 z/ N; u9 B* r( H4 n
                        bai=0;
) U; D( @4 a$ L8 h                        qian++;% G# E/ c( C" r, `  f  [
                }
0 d. k5 m# I" \% ?4 i+ _                if(qian==10)- {: O8 }# b& k
                {) K& _( k' l* T/ d9 w& O
                        qian=0;
5 U# O* Z7 x) K% D                        TR0=0;/ X- [$ G  j* Y. w" H+ m: F
                }/ o7 w0 U" I, L& `; p* x. a
        }
7 b* M: d: j0 w}

% z0 {$ J* K( z) n6 {. Avoid display( )2 H5 v5 L, g2 N; T
{1 J+ z* Y& E# b) R- ~$ h- ]1 u
        P23=0;
) s1 v8 J- y1 l: i& i        P0=tab[ge];* N' d- d# D* h( W+ Z2 l$ Y
        delay_ms(1);
% E7 c/ l! [% D- ]/ ~6 M        P23=1;0 f- K# H3 P: f; O, E3 F
        P22=0;4 E1 A9 {& r5 P4 v' l8 `* c
        P0=tab[shi];
" m0 h1 Q% D. W: y        delay_ms(1);
  D  U# u& v0 y6 y9 {+ Q2 q6 ~        P22=1;
5 w8 u/ Z" B2 r* h) `        P21=0;' w# G0 ^; U% q% M
        P0=tab[bai]|0x80;
  B6 j2 ]5 S1 ~! k$ i9 M        delay_ms(1);) I& d9 i3 ]8 C; r# g1 m
        P21=1;$ k2 T& j: r& w8 l
        P20=0;
4 k# I+ O4 O: b" B- t        P0=tab[qian];
9 t0 y3 m4 w9 i0 |2 `# p        delay_ms(1);) Q( B9 U- F# w4 _& @/ l! @5 g' `
        P20=1;
" Z% ?# Q8 B* I' l}
void T0int( ) interrupt 1 //定时器T0中断 方式1
5 H3 m7 @- `( o% |1 x* _{( m" s' S( d1 h  ~: L
        TH0=(65536-10000)/256;       //重装10ms定时常数
* y% J& F* O8 ?5 y        TL0=(65536-10000)%256;, G; K% R8 A7 Q6 U" k7 T: f
        ge++;2 ^0 W/ e2 n" V
                if(ge==10)
, Y) d: @( D7 x2 |                {: ]/ Y+ h$ W; c4 A; ?
                        ge=0;/ ]* Z! C8 i) {% O; e
                        shi++;
8 k2 u  {/ c, b$ m: \                }
5 X, A- Q& |0 N( E: ?6 S# O! E                if(shi==10), j" |4 `5 O; Q3 p1 e! J- r
                {
2 a; Q! ^  p2 ?' r                        shi=0;6 J2 n' a, Z& M/ j$ z+ [$ }
                        bai++;
; u/ j6 y3 t( L+ h  S                }
& V  u( m$ Y$ r, [5 C7 ?9 E' c}

3 n2 Q$ l0 g3 R+ b
0 z% j" |) w/ A, _1 p7 |+ i% J' }
所有资料下载:
游客,如果您要查看本帖隐藏内容请回复

" P$ R+ P9 h5 G. o

该用户从未签到

2#
发表于 2019-1-14 15:39 | 只看该作者
谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-3 01:59 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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