您的位置:首页技术文栏毕业课程设计
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

单片机课程设计--报警产生器

[日期:2008-07-18 ] [来源:东哥单片机学习网 www.picavr.com 整理 作者:佚名] [字体: (投递新闻)

1.    实验任务
用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。
2.    电路原理图


 

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.    程序框图

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 <AT89X51.H>
#include <INTRINS.H>

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();
            }
        }
    }
}

阅读:
录入:petta

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
站长推荐