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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
#include <reg52.h>
/ r2 t7 C8 {0 P) h% O9 a
# z9 A  x0 `- y8 N8 R6 a, jsbit DGT0=P2^3;//数码管控制位  [" q( m( B2 s& m
sbit DGT1=P2^2;
6 I+ {. b% z5 y1 q" Rsbit DGT2=P2^1;
9 Z0 l; G7 U+ }+ w- X2 Csbit DGT3=P2^0;
* Y' C) V. K3 jsbit BEEP=P2^5;" T0 h  J( e' v  ~$ ^# n  U

* z- a8 u/ s- b4 f! k2 T& g4 Z5 G; e9 X, F
unsigned char code  LedChar[]={
: B+ v5 f3 r4 ^        0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
8 m1 A( E) |. B2 R& \  ~unsigned char LedBuff[4]={0xF9,0xC0,0xC0,0xC0};//显示数据储存空间: J! T0 h& k0 _0 m1 n! Q4 f" }
unsigned char  flagls=0;//工作表示7 G2 s! I% E" i; s# U
unsigned int cnt=0;//计数器
% C( B2 v- F8 \; R8 E% Ounsigned char i=0;//循环变量
7 k& l; n6 ~( i- S/ u. g3 nvoid main()
' X$ ^+ u% T! R{
! U! k* d# p* e/ |' W/ F# N        unsigned int sec=1000;//定义变量,倒计时起始数据
" E! w1 \# U" |* h8 q8 V        
# h! r# {1 u; j9 `: M) h* x5 y3 Z        TMOD=0x01;//MOV TMOD,#01H//12M晶振产生1ms定时
7 f0 w# v: K: Q        TH0=0xFC;//定时器初置
; I; [9 I; o+ Y9 X        TL0=0x18;
  S: W; S' c' S) M          TR0=1;//启动定时计数( C, b) k! g& z) G# _
        EA=1;//允许中断& M' u2 ?3 w" v. J& G: @! B5 I
        ET0=1;//允许定时器0中断
! v& k' e7 o  p8 e        while(1). _" W( {+ _8 s
        {         
, m4 c; w1 D4 ]- X9 N- O! g3 Z                LedBuff[0]=LedChar[sec%10];//计数值个位存入
+ L) z* g9 `  ?8 ^4 H1 t2 ?6 E                        LedBuff[1]=LedChar[sec%100/10];//十位
" g/ k; }( p: T                        LedBuff[2]=LedChar[sec%1000/100];//百位* s; s$ Q" i  I
                        LedBuff[3]=LedChar[sec/1000];//千位) X8 S; C8 G0 O7 [
2 \9 n- S3 \( w, ~8 K$ t# j  N
                if(flagls==1)//判断1秒时间到,工作表示有效
3 |& m7 U& P+ c                {/ @6 S( u/ {# T) i- t/ m* m
                        flagls=0;//等等下一秒,清零
1 ~. R2 r9 E* ~5 [, T                        sec--;/ ~+ Y3 P4 e4 o" D9 @0 K
                        , Q5 ]  K" k: x2 _, J4 m# `6 d
               8 {7 S9 i. x" p( h+ K& Z
                }
) E3 D: q! z, t! @8 P        }5 y( @: N  L3 `* ?* U
         ) X0 b# }2 W# t( z& ~4 F
        
. f& s6 ^: V0 q( ?/ _' o: c}7 D% n; m9 R1 l3 z& f2 d6 }4 M
void InterruptTime0() interrupt 1//定时中断
+ R& o& i$ }4 u; R: ?# a{
" n1 S& f- K, P        TH0=0xFC;//重赋初始值
* C* W! [) K; B7 N        TL0=0x18;# Q7 v; i/ a. [% Q! \
        cnt++;//计数器加1! l& U. I. J/ t
        if (cnt>=200)//时间5 T4 z! l& c3 ]  E+ X# g
        {, Q9 L" Y1 ?' R9 c3 l/ q
                cnt=0;//准备下一秒记时$ S4 u/ d- ^6 K1 b% m8 L
                flagls=1;//1秒时间到
+ h  |$ b$ F  j, f' w9 g7 f              
, h) z* F) H( H        }
% d5 w, f/ Q+ N; d1 |9 _        P0=0xFF;//熄灭,P0高电平
. i5 I3 h/ x: v" s% E0 d' ]7 K. q! i9 x% @) O
         switch (i)8 b7 U$ j- V& ^. e. T4 r5 j
        {' {6 X, n. Z) C" U: W" s
                case 0GT3=0;DGT2=0;DGT1=0;DGT0=1;i++0=LedBuff[0];break;//个位
( R7 F2 ~) e: N% O2 z; E1 F5 `& f                case 1GT3=0;DGT2=0;DGT1=1;DGT0=0;i++0=LedBuff[1];break;//十位" g) H- {  \) @" ?6 k- h' m! S
                case 2GT3=0;DGT2=1;DGT1=0;DGT0=0;i++0=LedBuff[2];break;//百位
3 @: W6 S" [$ S$ c9 ^                case 3:DGT3=1;DGT2=0;DGT1=0;DGT0=0;i=0;P0=LedBuff[3];break;//千位
! f5 n/ ~+ s, t2 y" u+ k7 F* K1 @% a- g        }
7 g# c" ^$ \+ q7 h2 D}
0 i& k  A3 _$ k% z# n* `
  e5 G2 n. [) g( |) Y& C6 k
% z$ s' I+ `7 |% Y
: S' V4 z$ o" l. D5 t& C4 n! L% ^6 p6 V+ ^3 B

2 \) [7 T: Q" q+ \3 g  如何把修改程序加进去?
8 s1 m: N$ f' b
! O) \2 f7 \# ^) z3 p- a! N

该用户从未签到

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

该用户从未签到

3#
发表于 2021-12-22 16:04 | 只看该作者
& ^/ @7 [* W8 {8 n7 |1 c
倒计为0时蜂鸣器响 ?
6 K# Q/ e$ B+ e: z3 r, y1、以什么频率响?
$ o( Y0 F  r9 z' T& h2、响时要不要显示闪烁?- ?; `% A) ]8 {" @
3、响多久?或者以什么方式停响?
3 D. E( K6 U" ]% W2 g3 B4、响的过程中是否允许关闭响?
: c! P3 h& W8 @5、响完了是重新开始计时,还是就停在那边?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-18 12:26 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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