返回主页 单片机教程XL2000开发板 单片机学习 自制编程器 单片机资料 软件下载 电子技术产品介绍如何购买 进入论坛

第一章硬件资源模块第二章:keilc软件使用
at89s51单片机实验及实践课题     at89s51单片机实验及实践课题
1.闪烁灯2.模拟开关灯
3.多路开关状态指示4.广告灯的左移右移
5.广告灯(利用取表方式)6.报警产生器
7.I/O并行口直接驱动LED显示8.按键识别方法之一
9.一键多功能按键识别技术10.00-99计数器
11.00-59秒计时器(软件延时)12.可预置可逆4位计数器
13.动态数码显示技术14.4×4矩阵式键盘识别技术
15.定时计数器T0作定时(一)16.定时计数器T0作定时应用技术(二)
17.99秒马表设计18.“嘀、嘀、……”报警声
19.“叮咚”门铃20.数字钟(★)
21.拉幕式数码显示技术22.电子琴
23.模拟计算器数字输入及显示24.8×8LED点阵显示技术
25.点阵LED“0-9”数字显示技术26.点阵式LED简单图形显示技术
27.ADC0809A/D转换器基本应用技术28.数字电压表
29.两点间温度控制30.四位数数字温度计
31.6位数显频率计数器32.电子密码锁设计
33.4×4键盘的电子密码锁34.带有存储器功能的数字温度计-DS1624技术应用
35.DS18B20数字温度计使用

单片机c语言<>欢迎进入51单片机学习网论坛讨论

本站新域名www.8951.com开通WWW.51C51.COM 中国单片机编程技术普及推广第一站!

6.         报警产生器

1.实验任务

P1.0输出1KHz500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms500Hz信号响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.程序框图

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

            }

        }

    }

}