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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

8 d* G7 g9 x" j3 S* x' j. d

, [9 S, \: O# K$ E3 N( c0 S& d
简单计算器; ~2 p2 _$ f% x6 g% v

0 a  |/ r+ n/ l4 c  X) p+ |) W  X& k1 U
//12M晶振。4位共阴数码管,P0 段码,P2.0~P2.3 位控
' U) ]1 H4 b7 z" M//显示 00.00~99.99  
$ X, w) @3 O  W//2011 07 07   EPJ_C.00.00.c
#include 4 B% N9 M6 r, J8 r  r
#define uchar unsigned char- |2 j: S5 w4 l& o/ k
sbit P20=P2^0;3 I: D: H6 e( `
sbit P21=P2^1;
+ r( {& z; l1 D# e6 Dsbit P22=P2^2;* |2 }6 F( h/ Y) p0 H
sbit P23=P2^3;
sbit P27=P0^7;0 x9 n- d! J# n/ Q8 ^- Q
sbit KS=P1^0; //开始
2 r5 u  W* a* gsbit KR=P1^1; //复位
uchar time,xs,ge,shi,bai,qian;
& N0 ~, K* F* ^6 buchar code tab[ ]=        {        
: v; u# S1 R8 \- {+ U" L                                        0x3F,/*0*/1 Y0 W2 @  A* L/ L$ j. X" \4 d2 c3 L
                                0x06,/*1*/( Z5 [7 p0 V. A5 u
                                0x5B,/*2*/
# u6 {) t; q* x0 [! ~) c+ x0 i                                0x4F,/*3*/, ~. n; {: t/ e9 x5 H1 K" S& G
                                0x66,/*4*/
0 z6 E' R; z6 q, ], p                                0x6D,/*5*/
/ M2 c, [7 x& ?# p' Y                                0x7D,/*6*/! r8 t0 I1 `" d: l) [. l
                                0x07,/*7*/
% r# n: C+ J; m3 c' z                                0x7F,/*8*/
5 w# D; B9 X  e, b( e' P4 k0 W" I% q                                0x6F,/*9*/  h  J5 d: s1 }  a
                                        };  _+ V; N& J8 V* V2 O) c

- o) ?% U* [+ x) r- k4 Ivoid delay_ms(unsigned int ms)  //1ms延时
" M  h4 N; c& y, e# N( Q7 h! L{
# u) _/ P; o, ?. N! P           uchar a;0 h. y7 ~( S1 b) j  {2 W& p
           while(ms--). F/ K2 W: t  B
        for(a=123;a>0;a--);
+ J8 H& Q( P2 F9 p, l! c}
6 E- a) e3 F; k* g0 f2 z. Y  
" f4 |% f3 j8 M5 v$ ivoid display();
void T0intinit( )        //定时器T0初始化3 K1 \& D5 f& p5 G% y+ y, K
{; G6 M: [+ Z) r: M9 M4 i
        TMOD=0x01;
) ~. U' K  U! D9 U$ V        TH0=(65536-10000)/256;       //10ms定时( _! _9 s$ z$ E! H* F; B! o
        TL0=(65536-10000)%256;
! h4 C9 P2 _5 y' F        EA=1;
/ r9 u* o1 ]- v9 x9 ?        ET0=1;4 s* N& ?+ J& l9 W
}
void main()
; w% R! Q/ j( R/ {) G{         / Z" J# Z  ^8 h
        T0intinit( );
. E9 G0 C  \/ r4 u        while(1)
( q. ^2 @0 ^5 p        {         . \# \! q( E- V+ |
                display( );
3 j$ H; |; ?: U. v3 Q* ^3 a; G                while(!KS)            //开始/暂停 键
; O/ V5 N6 R# c                {           5 v* p, c' B/ P0 S
                        display( );
# e; D  M" m) B: \* ^- Q. i                        if(KS)
" }' V& a2 a9 \" b" r" N* j                        TR0=!TR0;; I' P# z, R1 E3 T% Y% T7 ]: u
                }( r' O/ o5 t9 x5 g" |2 w
               
: Y8 k5 h) W9 J; _5 y4 }  k, }0 w                while(!KR)         //清零键
! C9 F$ q. n* ]  k8 F                {
& D: U% _, X- p. }% ^                        display( );
9 K, `! A5 \2 S  O! a( q: N                        if(KR)- k5 c5 @5 E, y1 b$ x6 o
                        TR0=0;
, X5 s1 F, l9 q                        qian=0;
# I' s2 g) ~( S  m6 U( B' Z1 g3 n                        bai=0;
' ?3 E4 y. i5 v8 H. c' u6 \* ?                        shi=0;# Y1 R7 ?" H. R" \$ s
                        ge=0;
5 k( M4 T0 }$ P/ A" i                }8 f2 {. s7 r' F, Z9 {
                if(bai==10)
2 S7 F. Q% U2 S; j" e' Q" W) Y% _                {' P* ]$ Q1 V. t" g8 t
                        bai=0;
9 y' }& [& F6 s, O  [7 H2 O: z2 e                        qian++;
" n7 m3 z* E; d/ b                }1 L9 }9 k7 ~: g+ B$ i6 r
                if(qian==10)
7 `' [6 ~# S) Y# c$ o3 ]8 v5 o                {
0 Y* ^  a$ `, F& v# H                        qian=0;
( ~6 M% d1 ^! ~  e  w- T: ?                        TR0=0;' F, Z* r& ~9 w7 |' V0 S
                }
' F/ \1 o% i. [# t        }
: M/ `( H% N- G6 L0 d1 q4 V; R}
0 w. u2 ?, q) Y0 f3 R% Z
void display( )6 @' c2 k/ G0 N3 V
{! D3 _% t. h5 ?. s$ K& c2 c" p
        P23=0;. Y! }7 Z5 v4 ?( D
        P0=tab[ge];
; T" E) h4 Y& c5 }        delay_ms(1);# i9 I+ L/ G# l0 B
        P23=1;' ^8 }% e( \1 Z# y& d# E
        P22=0;
$ ]4 m! \+ T+ u* e/ z2 ?        P0=tab[shi];( W* @  ?$ t2 c* Y$ ?5 Y9 M& x
        delay_ms(1);# g: l" j$ V* I1 x! i1 P
        P22=1;  \) k% G; f4 W2 y3 U# Z
        P21=0;
, u1 ~; Q! I: ^0 h$ L        P0=tab[bai]|0x80;
2 i$ v$ R# z8 m+ Z. d/ [; u/ k6 g" F        delay_ms(1);6 K% E6 u: Y* G+ T5 s
        P21=1;5 {, Z( }; Q; f% ~0 e
        P20=0;' R) ?' u7 S& J  G6 y: W
        P0=tab[qian];1 q+ o/ L! b( }% j* q5 k. W
        delay_ms(1);/ U8 A8 d- M0 u& w* @$ Q( h8 h0 C4 ]
        P20=1;5 X# O+ B0 {8 M( f' O  A/ p# ?
}
void T0int( ) interrupt 1 //定时器T0中断 方式1
$ X  `4 B. N* a, s4 u{
4 z, Y* k" F4 Y8 E# H        TH0=(65536-10000)/256;       //重装10ms定时常数" b, M3 L- K/ b3 d9 K4 O$ k
        TL0=(65536-10000)%256;: ?3 e# P$ m# Q8 c" ~8 X
        ge++;2 ~  U: D; T( F2 y' m2 d' s, \
                if(ge==10), H1 Z: z6 U+ n+ U; v* F
                {  i2 ]( [! t6 k
                        ge=0;0 g/ r# Z! r" Q9 h: v
                        shi++;: m) t! m( U! }4 E4 z
                }+ p  w" u; I# u9 C3 u9 U
                if(shi==10)
1 k* u5 p. n0 R6 z; R  V                {
' z# r* ?! ~* a. t" t                        shi=0;
4 l2 Z4 [& X* U; F                        bai++;
0 ^# `0 a) l6 e$ t8 c% R- v9 ~                }7 n/ o* v. q3 t! N, D/ _
}
% N' v% V0 Q2 d. }: S
. _: X- W/ L. w3 J, M1 O3 r
所有资料下载:
游客,如果您要查看本帖隐藏内容请回复
7 G/ A7 ]0 @8 ~: @) s% N

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-19 09:10 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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