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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机简单计算器仿真+源程序 用数码管来显示的
+ f/ K0 s9 H8 d- _! {0 G9 n- @: |
8 H7 N6 p8 Q# q# }; j
简单计算器
/ ^. r0 q+ q) w/ L5 }4 l

7 I7 E. w8 @* n& w3 U
//12M晶振。4位共阴数码管,P0 段码,P2.0~P2.3 位控5 V- o; \: R' F* Q8 C5 G
//显示 00.00~99.99  6 W! b; U% j& ]4 K! k2 q6 }& d
//2011 07 07   EPJ_C.00.00.c
#include ; ?' }  g2 o0 u- Z, u
#define uchar unsigned char
$ J4 U! O8 l  l1 {8 i) C/ vsbit P20=P2^0;
4 a8 D  ]# v. b! j7 C- Tsbit P21=P2^1;
# e$ u& v, ~4 k5 [sbit P22=P2^2;8 J4 B: L' ]4 ?2 ^7 x3 a
sbit P23=P2^3;
sbit P27=P0^7;7 Q* E( Y) P$ U% r
sbit KS=P1^0; //开始+ X! O) ^2 x3 U" M+ v$ M
sbit KR=P1^1; //复位
uchar time,xs,ge,shi,bai,qian;; f0 v% l) f" \6 i' H7 T8 D2 x
uchar code tab[ ]=        {        
* {& N7 p6 s: h1 l% n                                        0x3F,/*0*/$ u0 }; [+ E' ^7 C0 s/ R+ l" a
                                0x06,/*1*/0 F4 X1 ]2 ~$ e  S$ y3 J
                                0x5B,/*2*/" v4 E9 M# g! j7 ]; M
                                0x4F,/*3*/' ]* `: S+ t  p
                                0x66,/*4*/
8 \2 o& B# S% s: _$ J/ d) y1 h! U                                0x6D,/*5*/
1 i0 h' S$ ~6 i                                0x7D,/*6*/
7 i) Y2 d" ]3 D  v# P" g                                0x07,/*7*/2 e; R' S6 s  Z, S2 F% C
                                0x7F,/*8*/
' s, z& F9 x# }$ y                                0x6F,/*9*/6 }$ a) i2 n3 j6 e$ {
                                        };9 u' z$ l7 c$ b% y

) N0 r* U7 R% B$ j' H% b4 Fvoid delay_ms(unsigned int ms)  //1ms延时; j$ C: P" G# g. @3 }, _) k
{( e$ \& v" i. z& O) y( ]/ p
           uchar a;: R& \0 r+ U5 k$ l; b' b
           while(ms--)
( {) k7 D2 V3 w, _" P/ D        for(a=123;a>0;a--);) S4 P9 N/ c6 K' @
}' N9 G7 c6 A0 F0 x7 c+ z
  
% @! T& s* {9 M0 }, k, Pvoid display();
void T0intinit( )        //定时器T0初始化
4 \$ w# Q7 m& K& O1 L6 C{* b9 J" ^: u: @
        TMOD=0x01;/ a- z$ p0 u5 ^; t6 G& Y$ B) h
        TH0=(65536-10000)/256;       //10ms定时5 L9 m3 b; p+ j' V5 r6 Q) h/ G6 A
        TL0=(65536-10000)%256;- g; c" l- }6 ]7 U4 H: g
        EA=1;
  k- j* o# {" F2 E        ET0=1;
% x' f) Y0 C0 Q  q8 L. g0 }, y}
void main()3 D/ R( ]8 m9 W4 ~& ^' A) m
{         , ^3 Q/ o) s" S$ K( a
        T0intinit( );
* ~; ~, j' ]' P! c        while(1)* z9 t7 H9 A+ Q$ w  T8 \4 p
        {         9 \  Q# W7 r9 b% @/ E: P
                display( );1 @( w, r( U6 ]4 a
                while(!KS)            //开始/暂停 键6 D% w6 A3 r* o) q# W7 ~
                {           
6 j& {& s) a: \) {8 M( x/ Y  @                        display( );
( `/ @  W1 {3 _# H& F9 O                        if(KS)
7 H. Q2 l* r# s; A9 l$ f                        TR0=!TR0;
/ n- K9 @1 B" H) l8 j                }6 i. f5 ^9 M& X( ?+ G( _0 T8 @
                / l" B6 [! x9 n+ w0 O8 g# L( o
                while(!KR)         //清零键
( Y( u, O2 Z# W6 ~                {, ~( v4 G: Z  z. T' v  Q6 A
                        display( );
9 F* |% o. w. s2 ~                        if(KR)- q1 S9 B4 ~5 j( Z, I; E5 ]1 o
                        TR0=0;
! J( p$ e4 r0 w4 n0 e5 V' W$ c( e. M  I) g                        qian=0;& D  G' F+ g5 M3 Z' n
                        bai=0;
# @, N3 z4 |4 [                        shi=0;
  u3 V# A$ d6 ~" A                        ge=0;
2 G  b; Z+ O: `7 \" ]                }
* ], M0 B5 i7 N3 T& c                if(bai==10)* m& }4 t( d# L; j" N
                {
: K& a, L/ i, |( p# \                        bai=0;4 X6 l1 F3 d6 \( {% u! g3 @) E
                        qian++;/ ]% n# @/ B! {9 ~/ E
                }
$ r, c' S# D1 Z7 b                if(qian==10)0 e+ F2 z6 k( c0 e3 @8 M
                {! k1 q0 z( h9 F3 e' r
                        qian=0;& F7 h/ Q; u- t$ t; R
                        TR0=0;5 H( q) [: x) `6 g) K! I
                }
( {. E) p3 `( p/ l( }        }) o7 @4 i" _. x; p9 I) F1 g- `6 [
}

" H/ K1 G% P5 n2 D1 N$ Uvoid display( )7 a8 [8 Y2 E4 w( }0 ]' y6 f
{
$ t0 c  o. K/ N        P23=0;
; J# M: M+ d" ]        P0=tab[ge];
% X# ?, f5 @' p        delay_ms(1);: f' i% W: J$ u$ t/ x
        P23=1;+ c; G3 o% X4 g. J8 L
        P22=0;
" E2 N0 q( x  ^- d! J        P0=tab[shi];
& ^/ X5 d$ J3 v# P" h+ p        delay_ms(1);
% w4 v9 r* r$ j        P22=1;% n+ l- G; k5 C1 q! i, W
        P21=0;
4 P5 K, c- I% g# x$ U1 C        P0=tab[bai]|0x80;
+ [6 }  l' S8 O: f! |        delay_ms(1);7 T8 \/ ]; z3 m3 `8 _- r
        P21=1;
) K" O7 _8 E+ R  [: B# r# [        P20=0;" \; i; m$ B# j1 q  c. t1 B
        P0=tab[qian];
, J% B1 N  N7 M* d' J4 C        delay_ms(1);7 d3 f+ c9 @& ]1 G0 G& K- g. v
        P20=1;
6 G8 r; W6 e' @# }" D3 T}
void T0int( ) interrupt 1 //定时器T0中断 方式1( R5 A" {" i) c0 z) Z8 v7 |# n5 C
{! i# }9 t/ q2 b  `
        TH0=(65536-10000)/256;       //重装10ms定时常数
$ e8 Q' X0 X7 Y        TL0=(65536-10000)%256;5 K+ O, ^3 u4 H7 b+ t
        ge++;% S" X5 V. F  r
                if(ge==10)
8 J. v' v2 E! A6 w( @9 n                {  j) `: Q8 ~( P+ D3 S+ f
                        ge=0;! Q, A3 e/ w0 d# z
                        shi++;
, F. e+ Y+ I3 Y8 J7 c- u) W                }
  {- K7 a; D8 B( a% K' u3 c8 W                if(shi==10)
; _6 I8 Y# I/ Q" ^% q( k                {
, W/ p8 ^  W) j% I4 [! Y                        shi=0;
2 a8 l! W: O2 q( H: ?                        bai++;( l% I+ ]% }! [/ U! s5 f
                }
. x8 Q4 j4 ]1 y: M* f/ k& p  h& Q}

! x- E+ E6 x8 _/ F. v3 J
# p, c0 l. c0 I( s/ a5 e' ^% i
所有资料下载:
游客,如果您要查看本帖隐藏内容请回复
. D" p' y7 ^3 s" f  d

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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