6. 报警产生器
1. 实验任务
用P10输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P17接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。
2. 电路原理图
图461
3. 系统板上硬件连线
(1. 把“单片机系统”区域中的P10端口用导线连接到“音频放大模块”区域中的SPK IN端口上;
(2. 在“音频放大模块”区域中的SPK OUT端口上接上一个8欧的或者是16欧的喇叭;
(3. 把“单片机系统”区域中的P17/RD端口用导线连接到“四路拨动开关”区域中的K1端口上;
4. 程序设计内容
(1. 信号产生的方法
500Hz信号周期为2ms,信号电平为每1ms变反1次,1KHz的信号周期为1ms,信号电平每500us变反1次;
5. 程序框图
图462
6. 汇编源程序
FLAG BIT 00H
ORG 00H
START: JB P17,START
JNB FLAG,NEXT
MOV R2,#200
DV: CPL P10
LCALL DELY500
LCALL DELY500
DJNZ R2,DV
CPL FLAG
NEXT: MOV R2,#200
DV1: CPL P10
LCALL DELY500
DJNZ R2,DV1
CPL FLAG
SJMP START
DELY500: MOV R7,#250
LOOP: NOP
DJNZ R7,LOOP
RET
END
7. C语言源程序
#include <AT89X51H>
#include <INTRINSH>
bit flag;
unsigned char count;
void dely500(void)
{
unsigned char i;
for(i=250;i>0;i--)
{
_nop_();
}
}
void main(void)
{
while(1)
{
if(P1_7==0)
{
for(count=200;count>0;count--)
{
P1_0=~P1_0;
dely500();
}
for(count=200;count>0;count--)
{
P1_0=~P1_0;
dely500();
dely500();
}
}
}
}
你定义字符
char
a=7;//这个输出就可以发声。。这是系统的发生。。
#include
#include
#include
#include
#define N 10
void fun()
{
printf("OK,now fun() start!!");
printf("%c",7);//这里发声
}
void main()
{
clock_t start,end;
int i=0;
Sleep(1000); //这里定时
fun();
}
我写的一个简单的C程序
Just for you information!^_^^_^^_^
#include <reg51H>
#include <INTRINSH>
bit flag;
sbit P1_7=P1^7;
sbit P1_0=P1^0;
unsigned char count;
void dely500(void)
{
unsigned char i;
for(i=250;i>0;i--)
{
_nop_();
}
}
void main(void)
{
while(1)
{
if(P1_7==0)
{
for(count=200;count>0;count--)
{
P1_0=~P1_0;
dely500();
}
for(count=200;count>0;count--)
{
P1_0=~P1_0;
dely500();
dely500();
}
}
}
}
1、写入头文件。
2、加入宏定义。
3、位定义 给出蜂鸣器变量 beep,接口是P2^3。sbit beep = P2^3;。
4、设计延迟函数:void delay(uint z){uint x,y;for(x = z; x > 0; x--)for(y = 60; y > 0 ; y--);} 。
5、设计主函数。
6、加入循环效果,蜂鸣器。beep = ~beep中: ~按位取反。
程序名: MCS51U实验板配套程序-歌曲:兰花草
;电路介绍:蜂鸣器接P20;实验前要连接J12
;
OUT BIT P20
ORG 0
AJMP START
ORG 0BH
AJMP TIM0
START: MOV TMOD,#1
MOV IE,#10000010B
START0: MOV 30H,#0
NEXT: MOV A,30H
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV R2,A
JZ END0
ANL A,#0FH
MOV R5,A
MOV A,R2
SWAP A
ANL A,#0FH
JNZ SING
CLR TR0
AJMP D1
SING: DEC A
MOV 22H,A
RL A
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV TH0,A
MOV 21H,A
MOV A,22H
RL A
INC A
MOVC A,@A+DPTR
MOV TL0,A
MOV 20H,A
SETB TR0
D1: CALL DELAY
INC 30H
AJMP NEXT
END0: CLR TR0
AJMP START0
TIM0: PUSH ACC
PUSH PSW
MOV TL0,20H
MOV TH0,21H
CPL OUT
POP PSW
POP ACC
RETI
DELAY: MOV R7,#2
D2: MOV R4,#125
D3: MOV R3,#248
DJNZ R3,$
DJNZ R4,D3
DJNZ R7,D2
DJNZ R5,DELAY
RET
;====================================
TABLE1: DW 64021,64103,64260,64400
DW 64524,64580,64684,64777
DW 64820,64898,64968,65030
DW 64934
TABLE: ;1
DB 42H,82H,82H,82H,84H,02H,72H
DB 62H,72H,62H,52H,48H
DB 0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2H
;2
DB 12H,0A2H,0D2H,92H,88H
DB 82H,0B2H,0B2H,0A2H,84H,02H,72H
DB 62H,72H,62H,52H,44H,02H,12H
;3
DB 12H,62H,62H,52H,44H,02H,82H
DB 72H,62H,52H,32H,48H
DB 00H
END
以上就是关于求一个关于单片机的蜂鸣器的C语言程序,如果好,可行的话有追加分~全部的内容,包括:求一个关于单片机的蜂鸣器的C语言程序,如果好,可行的话有追加分~、我用C语言程序实现了仿真,但是还要再加个蜂鸣器,请问怎么编程、单片机 蜂鸣器 滴滴声音c程序怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)