《2022年蜂鸣器程序 .pdf》由会员分享,可在线阅读,更多相关《2022年蜂鸣器程序 .pdf(6页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、蜂鸣器原理图如下:汇编程序 1 如下:;- ;?蜂鸣器实验 1- 蜂鸣器发声; 功能:蜂鸣器实验 1- 让蜂鸣器发出声音 - 一直响;- ? ORG 0000H? ; 程序从 0000H开始存放? LJMP MAIN? ; 程序跳转至 MAIN处执行? ORG 0030H? MAIN:? MOV SP, #60H? ;SP 初始化名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - LOOP:? CPL P3.7? ; 取反? LCA
2、LL DELAY? ; 调用延时子程序? LJMP LOOP? ; 跳转至 LOOP 处继续执行DELAY: MOV R7, #228? ; 延时, 228是延时常数? DJNZ R7, $?; 更改延时常数可改变蜂鸣器发出的音调? RET ? END? C 语言程序 1 如下:/* 蜂鸣器实验 1-蜂鸣器发声 - 让控制蜂鸣器的接口输出高低点电平,实现蜂鸣器的发声。延时时间决定蜂鸣器发声的音调*/ #include/包含 reg.52 文件#define uint unsigned int/宏定义void delay(uint z);/声明延时函数sbit beep=P37;/位定义void
3、 main()/main函数 ? while(1)/while循环? ?beep=0;/ 蜂鸣器响?delay(1);/调用 1ms延时? ?beep=1;/ 蜂鸣器不响?delay(1);/调用 1ms延时? 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - void delay(uint z)/1ms延时,通过 z 值改变延时 ? uint x,y; ? for(x=z;x0;x-) ? for(y=110;y0;y-); 汇
4、编程序 2 如下:;- ;?蜂鸣器实验 2- 倒车警示音; 功能:蜂鸣器实验 2- 倒车警示音,同时后侧警示灯闪烁; 入口: P3.7 控制蜂鸣器, P1.0、P1.1 为后侧警示灯;- ? ORG 0000H? ? LJMP START? ? ORG 0030H? START: MOV SP,#60H? ;SP初始化? ?MOV P3,#0FFH? ; 端口初始化? MOV P1,#0FFH? MAIN: LCALL? SOUND? ;蜂鸣器发声? LCALL? DEL500MS ; 延时 500MS ? LJMP? MAIN? ;返回 MAIN处继续执行名师资料总结 - - -精品资料欢迎
5、下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - SOUND:? ;蜂鸣器发声子程序? MOV? P1,#0FCH ; 后侧 2 个警示灯闪烁? MOV? R2,#200 ; 响 200 个周期SND1: CLR? P3.7? ;T1导通, 蜂鸣器响? LCALL? DEL1MS? ; 延时? SETB? P3.7? ;T1截止,蜂鸣器不响? LCALL? DEL1MS? ; 延时? DJNZ? R2,SND1 ; 减一不为零跳转? MOV? P1,#0FFH ;
6、灭警示灯? RET ? DEL1MS: MOV R5,#0B8H ;1ms 延时,11.0592M, 误差 1 微秒DL1MS0: MOV R6,#01H ? DJNZ R6,$ ? DJNZ R5,DL1MS0 ? RET DEL500MS: MOV R5,#029H ;500ms 延时, 11.0592M.误差 0 微秒DL500MS0: MOV R6,#0D4H DL500MS1: MOV R7,#019H ? DJNZ R7,$ ? DJNZ R6,DL500MS1 ? DJNZ R5,DL500MS0 ? RET C 语言程序 2 如下:名师资料总结 - - -精品资料欢迎下载 -
7、- - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - /* 蜂鸣器实验 2-倒车警示音 - 让控制蜂鸣器的接口输出高低点电平,实现蜂鸣器的发声, 同时后侧倒车警示灯 (P1.0 、P1.1) 闪烁。延时时间决定蜂鸣器发声的音调 */ #include/包含 reg.52 文件#define uint unsigned int/宏定义#define uchar unsigned char void delay(uint z);/声明延时函数sbit beep=P37;/位定义sbi
8、t JS1=P10; sbit JS2=P11; uchar a;/定义循环变量void main()/main函数 ? while(1)/while循环? ? ? JS1=0;/警示灯亮? JS2=0;/警示灯亮? for(a=200;a0;a-) ? ? ? beep=0;/蜂鸣器响? delay(1);/1ms延时? beep=1;/蜂鸣器不响? delay(1);/调用 1ms延时? ? JS1=1;/灭警示灯? JS2=1;/灭警示灯名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - ? delay(500);/延时 500ms ? void delay(uint z)/1ms延时 ? uint x,y; ? for(x=z;x0;x-) ? for(y=110;y0;y-); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -