1、6 报警产生器 1 实验任务 用 P1.0 输出 1KHz 和 500Hz 的音频信号驱动扬声器,作报警信号,要求 1KHz信号响 100ms, 500Hz 信号响 200ms,交替进行, P1.7 接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。 2 电路原理图 图 4.6.1 3 系统板上硬件连线 ( 1 把 “ 单片机系统 ” 区域中 的 P1.0 端口用导线连接到 “ 音频放大模块 ”区域中的 SPK IN 端口上; ( 2 在 “ 音频放大模块 ” 区域中的 SPK OUT 端口上接上一个 8 欧的或者是16 欧的喇叭; ( 3 把 “ 单片机系统 ” 区域
2、中的 P1.7/RD 端口用导线连接到 “ 四路拨动开关 ” 区域中的 K1 端口上; 4 程序设计内容 ( 1 信号产生的方法 500Hz 信号周期为 2ms,信号电平为每 1ms 变反 1 次, 1KHz 的信号周期为 1ms,信号电平每 500us 变反 1次; 5 程序框图 图 4.6.2 6 汇编源程序 FLAG BIT 00H ORG 00H START: JB P1.7,START JNB FLAG,NEXT MOV R2,#200 DV: CPL P1.0 LCALL DELY500 LCALL DELY500 DJNZ R2,DV CPL FLAG NEXT: MOV R2,
3、#200 DV1: CPL P1.0 LCALL DELY500 DJNZ R2,DV1 CPL FLAG SJMP START DELY500: MOV R7,#250 LOOP: NOP DJNZ R7,LOOP RET END 7 C语言源程序 #include #include bit flag; unsigned char count; void dely500(void) unsigned char i; for(i=250;i0;i-) _nop_(); void main(void) while(1) if(P1_7=0) for(count=200;count0;count-) P1_0=P1_0; dely500(); for(count=200;count0;count-) P1_0=P1_0; dely500(); dely500();