900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 单片机实例19—— “叮咚”门铃(硬件电路图+汇编程序+C语言程序)

单片机实例19—— “叮咚”门铃(硬件电路图+汇编程序+C语言程序)

时间:2023-06-08 11:26:17

相关推荐

单片机实例19—— “叮咚”门铃(硬件电路图+汇编程序+C语言程序)

19. “叮咚”门铃

1. 实验任务

当按下开关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的定时。

(2. 在设计过程,只有当按下SP1之后,才启动T0开始工作,当T0工作完毕,回到最初状态。

(3. “叮”和“咚”声音各占用0.5秒,因此定时/计数器T0要完成0.5秒的定时,对于以250us为基准定时2000次才可以。

5. 程序框图

主程序框图

T0中断服务程序框图

图4.19.2

6. 汇编源程序

T5HZ EQU 30H

T7HZ EQU 31H

T05SA EQU 32H

T05SB EQU 33H

FLAG BIT 00H

STOP BIT 01H

SP1 BIT P3.7

ORG 00H

LJMP START

ORG 0BH

LJMP INT_T0

START: MOV TMOD,#02H

MOV TH0,#06H

MOV TL0,#06H

SETB ET0

SETB EA

NSP: JB SP1,NSP

LCALL DELY10MS

JB SP1,NSP

SETB TR0

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

CPL 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

7. C语言源程序

#include <AT89X51.H>unsigned char t5hz;unsigned char t7hz;unsigned int tcnt;bit stop;bit flag;void main(void){unsigned char i,j;TMOD=0x02;TH0=0x06;TL0=0x06;ET0=1;EA=1;while(1){if(P3_7==0){for(i=10;i>0;i--)for(j=248;j>0;j--);if(P3_7==0){t5hz=0;t7hz=0;tcnt=0;flag=0;stop=0;TR0=1;while(stop==0);}}}}void t0(void) interrupt 1 using 0{tcnt++;if(tcnt==2000){tcnt=0;if(flag==0){flag=~flag;}else{stop=1;TR0=0;}}if(flag==0){t7hz++;if(t7hz==3){t7hz=0;P1_0=~P1_0;}}else{t5hz++;if(t5hz==4){t5hz=0;P1_0=~P1_0;}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。