×
单片机 > 单片机程序设计 > 详情

6. 报警产生器

发布时间:2020-06-19 发布时间:
|
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.       把“单片机系统”区域中的P1.7/RD端口用导线连接到“四路拨动开关”区域中的K1端口上;
4. 程序设计内容 
(1.       信号产生的方法
500Hz信号周期为2ms,信号电平为每1ms变反1次,1KHz的信号周期为1ms,信号电平每500us变反1次;
  
5. 程序框图 
开始

K1按下了吗?

FLAG=0吗?

置200次计数
P1.0输出取反

延时500us

计数值计完了吗?

FLAG取反

置200次计数
P1.0输出取反

延时1ms

计数值计完了吗?

FLAG取反

 
图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,#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;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(); 
            } 
        } 
    } 
}
关键字:报警产生器  单片机系统 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
如何升级STM32单片机的代码