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

单片机门铃Proteus仿真程序设计

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-17 09:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
门铃设计
; f( L* O1 Y7 l! Q6 {" x+ l' N8 z功能:按键K1按下就会触发蜂鸣器门铃“叮咚”响  X; k# O% ?. D3 g3 X) g
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
, S' x4 F; m) [6 f$ l
4 F3 Z' t& x/ ~1 q6 @$ u  v
/ h3 S* Q0 I5 r9 v& w: a( \1 D单片机源程序如下:6 c4 X' z% B& N
  • //下载程序后按键K1按下就会触发蜂鸣器门铃“叮咚”响
  • #include<reg52.h>
  • typedef unsigned char u8;
  • typedef unsigned int u16;
  • sbit beep=P1^5;
  • sbit k1=P3^1;
  • u8 ding,dong,flag,stop;
  • u16 n;
  • void delay(u16 i)
  • {
  •         while(i--);
  • }
  • void time0init()          //定时器0初始化
  • {
  •         TMOD=0X01;         //定时器0 方式1
  •         TH0=0Xff;
  •         TL0=0X06; //定时250us
  •            //        TR0=1;
  •         EA=1;
  •         ET0=1;
  • }
  • void biaohaoinit()           //各个标号初始化
  • {
  •         ding=0;                //叮声音  计数标志
  •         dong=0;                //咚声音  计数标志
  •         n=0;                //定时0.5s标志
  •         flag=0;
  •         stop=0;           //结束标志
  • }
  • void main()
  • {
  •         time0init();
  •         biaohaoinit();
  •         while(1)
  •         {
  •                 if(k1==0)           //判断按键是否按下
  •                 {
  •                         delay(1000);  //消抖
  •                         if(k1==0)
  •                         {
  •                                 TR0=1;        //打开定时器0
  •                                 while(!stop);
  •                         }
  •                 }
  •         }
  • }
  • void time0() interrupt 1
  • {
  •         n++;
  •         TH0=0Xff;
  •         TL0=0X06;    //250us
  •         if(n==2000)                     //定时0.5s  叮响0.5秒,咚响0.5秒
  •         {
  •                 n=0;
  •                 if(flag==0)
  •                 {
  •                         flag=~flag;
  •                 }
  •                 else
  •                 {
  •                         flag=0;
  •                         stop=1;
  •                         TR0=0;          //关闭定时器0
  •                 }
  •         }
  •         if(flag==0)
  •         {                                              //通过改变定时计数时间可以改变门铃的声音
  •                 ding++;                           //叮
  •                 if(ding==1)
  •                 {
  •                         ding=0;
  •                         beep=~beep;
  •                 }
  •         }
  •         else
  •         {
  •                 dong++;
  •                 if(dong==2)                    //咚
  •                 {
  •                         dong=0;
  •                         beep=~beep;
  •                 }
  •         }
  • }+ C; N" q* j, o8 \4 G
7 ]: p. i6 B% t) N: m- ^* G

该用户从未签到

3#
发表于 2022-6-17 17:19 | 只看该作者
学习到了。嘿嘿。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-9 11:02 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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