单片机C语言叮咚门铃设计报告,基于单片机“叮咚”门铃的设计

41528d3028836879cd698677c3999917.gif基于单片机“叮咚”门铃的设计

第四章 实验及实践课题(19) “叮咚”门铃 实验任务 当按下开关SP1,AT89S51单片机产生“叮咚”声从P1.0端口输出到LM386,经过放大之后送入喇叭。 2. 电路原理图 图4.19.1 3. 系统板上硬件连线 (1. 把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上; (2. 在“音频放大模块”区域中的SPK OUT端口上接上一个8欧或者是16欧的喇叭; (3. 把“单片机系统”区域中的P3.7/RD端口用导线连接到“独立式键盘”区域中的SP1端口上; 4. 程序设计方法 (1.我们用单片机实定时/计数器T0来产生700HZ和500HZ的频率,根据定时/计数器T0,我们取定时250us,因此,700HZ的频率要经过3次250us的定时,而500HZ的频率要经过4次250us的定时。 (忘记的请看1.闪光灯中单片机的延时及时序分析.mht) 信号产生的方法:500Hz信号周期为2ms,信号电平为每1ms(4X250us)变反1次, (2. 在设计过程,只有当按下SP1之后,才启动T0开始工作,当T0工作完毕,回到最初状态。 (3. “叮”和“咚”声音各占用0.5秒,因此定时/计数器T0要完成0.5秒的定时,对于以250us为基准定时2000次才可以。 1. 程序框图 主程序框图 开 始 T0初始化 T0开中断 SP1按键识别成功否? 启动T0工作 T0工作完毕否? T0中断服务程序框图 T05S加1 T0中断入口 T05S=2000吗? T05S=0,Flag取反 Flag=1 Flag=0 T5HZ加1 T7HZ加1 T5HZ=4吗? T7HZ=3吗? T7HZ=0 T5HZ=0 P1.0取反 中断返回 图4.19.2 6. 汇编源程序 T5HZEQU 30H T7HZEQU 31H T05SAEQU 32H T05SBEQU 33H FLAGBIT 00H STOPBIT 01H SP1BIT P3.7 ORG 00H LJMP START ORG 0BH LJMP INT_T0 START:MOV TMOD,#02H ;工作方式2就具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重加载工作方式。在这种工作方式中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。 MOV TH0,#06H ;用于自动恢复定时初值 MOV TL0,#06H ;置T0定时初值250us ( 2 的8次方减250,再转为16进制) SETB ET0 SETB EA NSP:JB SP1,NSP LCALL DELY10MS JB SP1,NSP SETB TR0 ;TR0置1,启动定时器T0 , 允许定时/计数器计数 MOV T5HZ,#00H MOV T7HZ,#00H MOV T05SA,#00H MOV T05SB,#00H CLR FLAG CLR STOP JNB STOP,$ ;等待 LJMP NSP DELY10MS:MOV R6,#20 D1:MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET INT_T0:INC T05SA MOV A,T05SA CJNE A,#100,NEXT MOV T05SA,#00H INC T05SB MOV A,T05SB CJNE A,#20,NEXT MOV T05SB,#00H JB FLAG,STP ;当FLAG为1转到STP,进而结束 CPL FLAG ;当T05S到了2000次时,FLAG求反。 LJMP NEXT STP:SETB STOP CLR TR0 LJMP DONE NEXT:JB FLAG,S5HZ INC T7HZ MOV A,T7HZ CJNE A,#03H,DONE MOV T7HZ,#00H CPL P1.0 LJMP DONE S5HZ:INC T5HZ MOV A,T5HZ CJNE A,#04H,DONE MOV T5HZ,#00H CPL P1.0 LJMP DONE DONE:RETI END

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值