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

51单片机倒计时后如何让蜂鸣器响

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Clap3hame3 于 2021-12-15 14:01 编辑
7 p" [" K6 `- h& M
5 _; m7 x) ^4 V9 @' c6 [( |- j#include <reg52.h>
- S" g! r2 T* B2 }: u# i4 U
. C* C3 F7 [7 H7 ksbit DGT0=P2^3;//数码管控制位" d2 s4 X  ^; Z! Q$ X0 H  s
sbit DGT1=P2^2;
# s9 Z7 R( ^) X* [) E7 i7 _7 ~sbit DGT2=P2^1;
+ C8 A# A1 B6 v; isbit DGT3=P2^0;
+ Y+ O3 @, d/ G, l* ^
% O3 A) X7 _/ D  ]; @' Vunsigned char code  LedChar[]={9 W  u" B6 Z: `: h; t
        0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};9 J5 u1 ~3 v4 s- h
unsigned char LedBuff[4]={0xF9,0xC0,0xC0,0xC0};//显示数据储存空间
4 f; k5 K( y( Dunsigned char  flagls=0;//工作表示( c" N7 [) x1 r8 \; e9 \' R, m
unsigned int cnt=0;//计数器
6 Q: x% B8 ~! f& junsigned char i=0;//循环变量
0 f6 A  s& W8 I" _/ l) Dvoid main()
9 v+ ^# I, C! Q1 x{
- d$ R' ^1 n* I+ n4 C        unsigned int sec=1000;//定义变量,倒计时起始数据
2 y' Z5 I+ J: q" J
: U1 T5 P0 r4 u: E        TMOD=0x01;//MOV TMOD,#01H//12M晶振产生1ms定时
, @8 A1 L7 M) H$ r/ n& h5 P        TH0=0xFC;//定时器初置
" Y) ^2 E4 B2 }& B) f4 P' ~3 v2 I        TL0=0x18;
" V6 ?! u; K  q- Q0 f$ M. Y         TR0=1;//启动定时计数: J' T% s) E) ~
        EA=1;//允许中断: @5 g9 [( f2 v
        ET0=1;//允许定时器0中断+ H8 ]" t& p* D
        while(1)
5 Z$ ~4 K; ?% s3 C5 x/ h0 b' w5 w        {         
* |! t6 Z- S7 |4 K% Z3 q                LedBuff[0]=LedChar[sec%10];//计数值个位存入" ~3 ?  E, m5 z( L$ `. j8 [2 p4 {
                        LedBuff[1]=LedChar[sec%100/10];//十位
* U0 @0 _! W% s( j                        LedBuff[2]=LedChar[sec%1000/100];//百位
% p1 |3 x0 c2 _" @& t                        LedBuff[3]=LedChar[sec/1000];//千位. J: j( g/ W- K/ S
# _% [5 }0 E4 Y% P3 P1 B, |
                if(flagls==1)//判断1秒时间到,工作表示有效: G: T' K. x7 ]
                {' N; z. Z" r7 U. `$ d3 }. k- f
                        flagls=0;//等等下一秒,清零3 n7 }' Z0 i( I" b0 q6 Y
                        sec--;//倒计数3 g: U) }& P) j3 C0 }; c

" j1 ~' C, h$ b0 I: L& r! K
6 `! {2 n; t1 B3 I                }7 n, Y5 [7 u1 p; y- g7 R
        }
! ^- F9 N6 v7 c, }. {  L9 T
; v, O& X! E: B1 }7 M
, F. }  K9 j- ^9 Q" G% G}; Z& G" z0 f* Z) }" o$ o7 }
void InterruptTime0() interrupt 1//定时中断; m! [- Z6 H1 o! A* m
{, G  O% d0 s/ U' a7 Y8 r9 \  q
        TH0=0xFC;//重赋初始值
$ J( P8 A8 A9 g& @        TL0=0x18;8 C6 R' u1 f4 X. V
        cnt++;//计数器加1
$ n9 v& B% m9 \* Z3 _        if (cnt>=200)//中断1000次得1秒,工作表示
8 x. I$ d8 f1 w; e  C        {
) N- x* J- s& w' }# c                cnt=0;//准备下一秒记时$ U0 }1 J- p; f9 A+ ~( O2 u' I$ c4 {
                flagls=1;//1秒时间到
- l# N+ j/ ]; ?- X' P8 z# s3 `9 B
0 n% n5 f5 I  \- t        }
" t  V: G0 w8 O( a        P0=0xFF;//熄灭,P0高电平9 \9 Y5 @: V3 v
         switch (i)
' u# ?4 g' I# B8 s/ R        {3 @/ h3 q4 \: f' j8 a7 f
                case 0GT3=0;DGT2=0;DGT1=0;DGT0=1;i++0=LedBuff[0];break;//个位4 e# g! L2 R8 h' L
                case 1GT3=0;DGT2=0;DGT1=1;DGT0=0;i++0=LedBuff[1];break;//十位/ P' R4 L1 R! A6 c( D
                case 2GT3=0;DGT2=1;DGT1=0;DGT0=0;i++0=LedBuff[2];break;//百位
. g5 A, M! h, g2 H/ U% R0 w! n                case 3:DGT3=1;DGT2=0;DGT1=0;DGT0=0;i=0;P0=LedBuff[3];break;//千位/ M9 c. G& a, @+ \, H! Q
        }2 l5 Z5 c. L% p( W3 U' d+ A& e
}
8 F: r3 I# o- j# a. D( ?; f这怎么让蜂鸣器响啊
% n) Y0 k& e& L. g3 N( [- Y  k# _# R- E" ~) c" ^9 T( A" F6 f

该用户从未签到

2#
发表于 2021-12-15 14:23 | 只看该作者
& B! ~+ f# n; [& W
问题不说清,只好瞎猜了……' X8 G$ Y# z2 s/ F7 k
. h! o8 b7 F. `$ D
假定,你是有源蜂鸣器。(瞎猜)/ y* k; W+ R. }; i
假定驱动蜂鸣器 IO 是P17(瞎猜)
+ x  z: S2 _" l* m假定低电平驱动(瞎猜)! i. {0 [, v) c. u8 X& P# d
那么,一句话搞定:
) G6 o3 q+ Y( u) J+ J  H+ G$ z9 W0 s* d
if(sec==0)     P17 = 0;

该用户从未签到

3#
发表于 2021-12-15 15:57 | 只看该作者
主循环加
3 w- E" l* N* R2 [  k1 ~if(sec==0)
6 \' w8 P- J! |0 ~8 j" F  w{ P2^4 =1;//蜂鸣器控制IO
. o. }4 |) d/ K" F5 A  XTR0=0;//停止计时* o+ A4 r  x5 Q$ H
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-16 10:08 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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