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

10秒秒表 精确到0.1 proteus仿真

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
10秒秒表 精确到0.1 proteus仿真
. M0 S1 K' w* o& G6 j& U) {
6 t3 }' O7 X( q4 |
1 d. g/ j: v  H) M/ l' ^
10秒秒表  精确到0.1  . A3 [3 k( K1 c# ^# ]! b# q$ [$ w
用proteus仿真4 {- x; H% C- f: Q4 B
带源文件   j6 q4 r( J8 h
仿真工程文件下载:
4 B4 ]/ Z7 n! X' @0 ~7 H! q; W2 ?
游客,如果您要查看本帖隐藏内容请回复
& u* c. i! B6 S( b, I% N1 Y4 C

# X" P7 g2 s9 Z* B: p
; ]* d! G4 u: Y$ T) ]8 D+ Z
3 i& p" p4 K4 Q) s# C  {) d: B

, j6 E; J+ n, T4 e7 R源程序:
% o: e5 X- G% j. z' v" U/*     名称:10s 的秒表3 D& v( _7 Y( L! U# Z5 s
       说明:首次按键计时开始,再次按键暂停,第三次按键清零。
  _" e: A- B2 v3 |8 s*/$ G. `0 I  L( M# E0 q
           #include<reg51.h>5 v4 |" Q4 l$ M
#define uchar unsigned char3 _' O3 x  [8 G8 O5 @
#define uint unsigned int! U' n/ @3 X4 S
sbit K1=P3^7;
; |0 V2 Z/ ^& l. ~' ~. a: _3 Z/ A1 guchar
/ W7 w0 d2 W, ?/ l) ui,Second_Counts,Key_Flag_Idx;' n  R2 v( i" P) W& {+ c
bit Key_State;( f8 {- H; b6 t) v; n; \0 A% {2 W. _
uchar
: [( `- {! g6 KDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
. \8 a5 A% b% m//延时
' Y4 _: f" u" Y+ tvoid DelayMS(uint ms)6 n) ~- V& s6 P4 b! \" S! n4 f' }6 W  \
{' U0 ?* u2 a: U1 k  E% B
uchar t;, c- h! P: g2 i: B8 V2 b3 ^
while(ms--) for(t=0;t<120;t++);
0 q9 u( z# T( v; _, h  b+ `* d}
& x# _) ]2 q8 K//处理按键事件
' ]$ \/ w; [* X* v- \$ uvoid Key_Event_Handle()
! P" b& D+ G: @2 ~# b" `{* A$ C, J* D, D9 d* M+ [# o5 r
if(Key_State==0)
! n+ C9 `/ S1 `; H9 {6 V {
' X: Y$ L! Q8 X/ |, [8 E$ n Key_Flag_Idx=(Key_Flag_Idx+1)%3;3 h& o0 _+ `$ T, G- O3 p
switch(Key_Flag_Idx)
1 I) a$ o+ r3 ~: T8 ] {
/ @; L* e+ [: H, T! A' s8 c, }5 } case 1: EA=1;ET0=1;TR0=1;break;
9 d, w% X5 t2 v  m! q case 2: EA=0;ET0=0;TR0=0;break;- }! _0 I4 v3 U: A+ N6 L4 ]
case 0: P0=0x3f2=0x3f;i=0;Second_Counts=0;
, F6 \9 `( Y9 @ }
# _; @; [9 Q+ c; U}
1 m0 _0 y. U% b$ S- X# w0 y}
$ s6 @7 T; u6 ~+ a* x3 J/ D) v//主程序
, j! W4 f' J1 V1 @void main()
. d$ }* z: G: u2 v  m) |: t# A; D{
/ w0 z2 U8 r6 a, t. T! Y P0=0x3f; //显示 00$ E5 T/ S5 c, L) s# U  F
P2=0x3f;
4 w2 w9 Q- q. o i=0;$ d/ Q$ f) m% C$ h. F; e
Second_Counts=0;
6 Q" A( r* h5 T; D" ]1 o+ K Key_Flag_Idx=0; //按键次数(取值 0,1,2,3)* g' `9 y* ]3 U8 L3 i& s* v
Key_State=1; //按键状态3 p; e- w3 ]- u; j8 O: @+ J
TMOD=0x01; //定时器 0 方式 1
6 D" d+ A5 x  E, d TH0=(65536-50000)/256; //定时器 0:15ms, U% |/ u- C" n" _) s: S/ N$ o
TL0=(65536-50000)%256;
; F- E# G4 v1 Y# b while(1)+ V+ [# X8 Q) {- W& F
{
* m0 c& N! ^3 Y3 Q. `0 J; ~ if(Key_State!=K1)
( T. i. O5 t7 a4 I {9 Y  s& s4 [9 Q' I
DelayMS(10);
6 D6 T/ A2 O7 c; m+ y! k, C6 ] Key_State=K1;
/ j, U7 F) \& D2 Q1 G' } Key_Event_Handle();
: A. ~* |- R% \5 j. C/ v }
$ `$ W  N: R  w }+ v" D. R; O9 e% E
}
; e3 W! k$ i; |2 p* n0 C  X//T0 中断函数' E% p  ]0 q7 n5 p! {' h( F
void DSY_Refresh() interrupt 18 B2 Y9 S; ?/ `9 _, g5 P
{/ @' ^2 L% q" K9 ?0 i" O6 D* Z
TH0=(65536-50000)/256; //恢复定时器 0 初值
  E+ L- w" m& _ TL0=(65536-50000)%256;
* N/ {6 h  Q, D5 y3 L! W if(++i==2) //50ms*2=0.1s 转换状态
6 ~7 O- S) n  ]* J- T/ x$ o; h {% Q( n8 E& e" \. B
i=0;: c8 ^; ]& ?( S5 k
Second_Counts++;& A' m9 ]9 v" ~* i  n; k& K& f; ~* b& ~
P0=DSY_CODE[Second_Counts/10];6 q  w  }# H3 [* \! F( N7 @
P2=DSY_CODE[Second_Counts%10];
) `! E% V. l# ~* a3 c  T+ a4 P& Q9 z if(Second_Counts==100) Second_Counts=0; //满 100(10s)后显示 00
1 i( G! V" u7 k/ z# x }
% E/ N8 s# t. w* p! s  t; ]}
, l  O* B1 X3 W
+ G0 `& C" `6 [& l" K% U
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-21 22:24 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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