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

10秒秒表 精确到0.1 proteus仿真

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
10秒秒表 精确到0.1 proteus仿真
' l* K2 p. X0 ?" Q0 U5 u! D0 l/ b- F" z2 b3 r, p2 ]- F. g# u) T* X! a
6 G/ F( I* @$ E$ d5 j( ^; H7 A& G
10秒秒表  精确到0.1  
* ^2 ?6 K" c# I2 V用proteus仿真
" {  B1 i. ?( {# S# ^带源文件
* g" Q% v/ a3 Y$ s/ d仿真工程文件下载:
1 T3 ^- ~5 {- ?% V1 x; G
游客,如果您要查看本帖隐藏内容请回复
  y" X4 v- V  C$ Y2 w3 L3 M2 d

' f- w2 w- i3 x1 z
7 A' A# v1 `0 A* {

4 C: W' M; a8 D- v2 I
5 I0 n- @8 V6 F# D, n, _
源程序:
2 |% Q* [( j5 ~3 G$ V/*     名称:10s 的秒表
" g8 V$ Z( p3 M+ ?* N( [' P, k! s       说明:首次按键计时开始,再次按键暂停,第三次按键清零。
% d1 r( B2 Y& t) l# F# G- G4 o9 {: B*/( l/ H+ ]+ F2 ~8 }/ z7 T( L9 X
           #include<reg51.h>/ [5 Q! q5 ~6 n# d+ i
#define uchar unsigned char
: ?$ |7 J7 M  p4 J7 k" N#define uint unsigned int
; d. k( o1 z8 d3 C+ _sbit K1=P3^7;- Q5 t0 ?2 A) M. R: u
uchar
3 L3 ~, W* J7 I) i0 Q' E/ F7 oi,Second_Counts,Key_Flag_Idx;
0 N4 k1 [. P+ ~! M+ gbit Key_State;* I  _* K$ N7 D) N0 b) Z; y
uchar- S2 B, l& k2 @8 r
DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
: R/ P3 I6 a; J, J" H//延时
6 S' }7 O. h1 S9 n: r" s( T- fvoid DelayMS(uint ms)4 _7 d; j, b& N8 q7 W8 j
{( k) P. n# e: q- Z: O1 A
uchar t;4 M6 r2 R# Z  s4 N- T; t
while(ms--) for(t=0;t<120;t++);
5 w& x+ p- T8 P+ }: z+ b}4 W" p# S7 l1 u1 e* x
//处理按键事件/ R! x! m+ C$ z- C  x( f$ ~) y3 j
void Key_Event_Handle()0 a- r: {8 T( x$ A0 S" G, _
{
5 A4 y1 O% W0 H2 N+ |2 d+ P if(Key_State==0)& N1 v4 K( z4 H  Q/ g
{3 M/ q0 c2 B3 _' i( c
Key_Flag_Idx=(Key_Flag_Idx+1)%3;- p- b2 x/ P2 ^1 M# {8 z5 g
switch(Key_Flag_Idx)
- ~8 h( N9 Z7 T; \7 ? {- L; w) H( r5 v. t
case 1: EA=1;ET0=1;TR0=1;break;/ g9 f+ [: E7 _' w: m
case 2: EA=0;ET0=0;TR0=0;break;
) O1 @/ S$ @  V0 e8 e case 0: P0=0x3f2=0x3f;i=0;Second_Counts=0;# [* [) d! r( \: K) x# S
}
, Q$ J. c) o4 a+ C$ V3 u5 e5 i}
4 @1 H( i& J# K6 P( u}
4 p8 Y2 j+ b, g7 e7 U# v//主程序
4 Y: [6 T2 W7 X6 A  Kvoid main()- S3 {9 \3 T  w+ G$ u
{. D' s0 a7 r1 t
P0=0x3f; //显示 00) o% H6 p$ C  u& s9 R0 Z- A: Q
P2=0x3f;: ^+ _: D' h8 [& Y0 h, q
i=0;8 K; K' L" n+ x) l
Second_Counts=0;
! p' q2 r4 ~' ]! l Key_Flag_Idx=0; //按键次数(取值 0,1,2,3)4 ]+ E7 a3 i7 l
Key_State=1; //按键状态: ^3 ^4 j1 f& ]+ J; r/ ~
TMOD=0x01; //定时器 0 方式 1
* Z; R  h' l! U, j2 }! N$ g TH0=(65536-50000)/256; //定时器 0:15ms/ H, |4 |0 {/ l- O# p( S0 b3 l1 c
TL0=(65536-50000)%256;
, a- ^% a" i; e" Q! ? while(1)
' L0 u$ F% S$ m+ H8 a- d0 n {
9 ~; ~( |3 m) _) b% q# j, x* I7 J if(Key_State!=K1)" \2 _! S- j! g" p
{5 T# k, H, }1 S6 H; t
DelayMS(10);" |% x# c$ v8 L9 T$ q6 A# K/ _0 _
Key_State=K1;
4 E; C9 A' F5 H& H9 |5 |0 u Key_Event_Handle();4 X0 n) `" w% d5 e3 i
}
* i2 U4 F: M: m }
1 p7 M+ P5 `* N1 x. J6 j" B}5 D: v6 F$ H# h+ c7 q2 b1 {( r
//T0 中断函数
5 @$ Q/ X5 t/ m- ]2 w; bvoid DSY_Refresh() interrupt 1
- f$ \5 A; B5 D5 y! |, f* n5 ]" S{
5 u' R# [! R2 L TH0=(65536-50000)/256; //恢复定时器 0 初值" w5 r3 a6 @& |+ `" p
TL0=(65536-50000)%256;5 D$ [- L! y$ L2 j
if(++i==2) //50ms*2=0.1s 转换状态7 Y8 i3 S# E- B# ?" \
{' |0 @( V  X# K& l! t( Y& F$ B
i=0;/ _2 o8 }- H3 v( O- Y; H
Second_Counts++;
6 F; z/ q5 e- e P0=DSY_CODE[Second_Counts/10];
* Z2 W" ^6 A: ^3 i, L P2=DSY_CODE[Second_Counts%10];
8 ^4 W+ i, H( l- y" u if(Second_Counts==100) Second_Counts=0; //满 100(10s)后显示 00/ @8 j: C3 z9 x6 c6 a. P# h, T' _
}
; X! D- |2 Y0 D; y}
; o7 y: {7 V8 L5 x
- j& b$ j, p" t! n: O
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-17 22:10 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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