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

51单片机在倒计时的时候蜂鸣器不响,倒计为0时蜂鸣器响

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
#include <reg52.h>
/ C/ O, k4 W% b2 B! g0 `/ M* i- F
sbit DGT0=P2^3;//数码管控制位
% Y2 l! [* P4 Z8 U7 k$ ^- U0 Xsbit DGT1=P2^2;/ a) h& a; |1 }' U, M1 m
sbit DGT2=P2^1;
+ J( Y2 ]4 A7 H* U' J5 M9 \- U5 ksbit DGT3=P2^0;
3 \& O4 M" Y9 D1 ^sbit BEEP=P2^5;
  Y; r+ t" e9 L. i/ F3 P8 B
- W! S6 I/ E) m8 T
( G1 }' n- h+ cunsigned char code  LedChar[]={
0 m& e4 u9 i$ F. t7 w        0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
4 J! ~" _) N% @' `& V0 s  _unsigned char LedBuff[4]={0xF9,0xC0,0xC0,0xC0};//显示数据储存空间
+ X  p4 M6 m( [- Bunsigned char  flagls=0;//工作表示
( F  M( m0 \& J: Z8 nunsigned int cnt=0;//计数器4 [0 g8 r0 G0 r% E* T+ B' O& Z
unsigned char i=0;//循环变量
5 h! F3 K' k, ]1 vvoid main()
' Z0 ^1 G3 p3 X6 ~9 X{
" p& K' W% D4 p2 R        unsigned int sec=1000;//定义变量,倒计时起始数据
  D% S* P- G7 Q" @        7 R2 ~4 @8 P* |$ p% I. c5 B* b4 g
        TMOD=0x01;//MOV TMOD,#01H//12M晶振产生1ms定时# ?  `: ^' e4 u" m0 I; j
        TH0=0xFC;//定时器初置" M, W2 _  P5 F
        TL0=0x18;
% g8 j! y+ t9 z4 o0 y3 v. ~) W          TR0=1;//启动定时计数
2 d/ s  g2 |5 ]/ _% p. \8 W- T6 C        EA=1;//允许中断
! ]( @( o5 @1 d" m/ |: g        ET0=1;//允许定时器0中断5 D6 ^. j- Z) [8 N6 j0 ~  _
        while(1)
% N! W6 M& t: Y% a3 w, n/ x        {         
! R" g7 A5 ]# r) |4 v% f                LedBuff[0]=LedChar[sec%10];//计数值个位存入0 S. @1 u8 C* C: G7 j! S" J
                        LedBuff[1]=LedChar[sec%100/10];//十位5 }9 R  z' P) b; D3 R
                        LedBuff[2]=LedChar[sec%1000/100];//百位* P; Z  ]. i& K0 n. k0 }# L5 M
                        LedBuff[3]=LedChar[sec/1000];//千位" _% Q+ D- K- T2 ]6 r5 O
2 y$ `9 X3 [6 \# N/ U; _% T/ h' w5 Q. R
                if(flagls==1)//判断1秒时间到,工作表示有效
5 _& x- d; ~. W+ ]! w0 @1 O                {
. m: T% a3 `- v( J                        flagls=0;//等等下一秒,清零- s) O% o2 }8 l0 C. O2 g. ], S
                        sec--;
1 n% x' G  M; ~, |' f9 `  _1 ?1 c* _/ z                        / W4 H) {$ ]% f" a9 E' O
               * x/ Q7 C" S3 i0 a
                }
% }& k: M# Q& b- ^        }
" `8 o: b) @! D# r- e+ Q         
- |* l+ n/ v) ~$ E" r        
- Q0 x( V4 k3 b; w}' k4 N4 x* t6 I: p* I6 \
void InterruptTime0() interrupt 1//定时中断) s/ @* ^" ]: g
{7 y5 S+ H: _  {, Y& r# R+ d
        TH0=0xFC;//重赋初始值
+ V, q$ O! M2 i# L9 r, O        TL0=0x18;( T8 G- Q7 v3 j! `% E, F
        cnt++;//计数器加1' p; q* M; K0 G2 o: F
        if (cnt>=200)//时间  w/ L- `7 J7 c6 R; M
        {. ~' f8 q: _( s
                cnt=0;//准备下一秒记时! @# h! L2 O4 I& L2 m8 `# ?
                flagls=1;//1秒时间到
+ v9 j: [5 [$ j              + W; n: J$ ]: p. L% v$ l
        }9 k1 @1 z$ n' d# `1 X
        P0=0xFF;//熄灭,P0高电平
7 }6 H8 }, L9 o
6 Q. X9 g( q& F3 f7 ~         switch (i)4 M7 I' N3 d5 A; v' H1 V1 E; ~
        {
: t/ M1 j6 w% v                case 0GT3=0;DGT2=0;DGT1=0;DGT0=1;i++0=LedBuff[0];break;//个位$ N* |' K/ _! {! ]
                case 1GT3=0;DGT2=0;DGT1=1;DGT0=0;i++0=LedBuff[1];break;//十位1 ?. T2 ~9 m, t" B& w
                case 2GT3=0;DGT2=1;DGT1=0;DGT0=0;i++0=LedBuff[2];break;//百位/ O, d; t, K3 G' D3 }
                case 3:DGT3=1;DGT2=0;DGT1=0;DGT0=0;i=0;P0=LedBuff[3];break;//千位; F* u0 N" f" D. ?: p
        }( w5 n/ ]& h' W2 J0 y
}
8 k  d! ~+ ]' \7 ?1 Z6 V0 [3 C2 p! k- p

6 R/ e- }/ l4 u
: ^+ T/ J! O. p/ X
" M5 |7 R. ?3 _/ c& B8 E' c! u! R" W0 f- Q
  如何把修改程序加进去?
: }1 p4 ^0 ]9 M2 R  q; a8 G! W- B

该用户从未签到

2#
发表于 2021-12-22 14:56 | 只看该作者
我这可以给你一点建议,可以用case语句写

该用户从未签到

3#
发表于 2021-12-22 16:04 | 只看该作者
$ E3 f' f. n" ?" \& w" z+ s& T
倒计为0时蜂鸣器响 ?: Q$ R- [; n+ B0 r( Y
1、以什么频率响?$ K5 ~8 B) H9 L. y( h- U
2、响时要不要显示闪烁?
9 h8 j" Q$ i/ w2 X( e2 P6 d4 o3、响多久?或者以什么方式停响?2 Z. M4 p; T/ O2 ?0 L. G
4、响的过程中是否允许关闭响?
3 W* Z$ _" q( G  u) V" \* N5、响完了是重新开始计时,还是就停在那边?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-20 23:59 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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