• 驱动蜂鸣器的实验


                           

     

    学生实验报告

     

     

     

     

     

     

     

    课程名称:单片机原理与应用 

    专业班级:嵌入式14103班  __

    姓    名:_赵存档___________

    学    号:14160310317      

     

     

    2015--2016    学年第 1 学期

     

     


     

    实验项目( 二 ) — 预习报告

    项目

    名称

    驱动蜂鸣器实验

    实验

    目的

    要求

    目的:学会本次实验是如何进行实现的,以及对实验原理的理解。

    要求:认真完成本实验的keil代码的编写,proteus电路仿真图的设计。 小组内独立完成实验项目内容。

    实验

    内容

    原理

    驱动蜂鸣器的实验:

    实验内容:先在proteus仿真软件中画好电路图,然后在keil中编写驱动蜂鸣器的代码。进行调试代码是否正确,如果正确设置好晶振频率,生成hex文件,加载到proteus 51单片机中去。

    实验原理:

    让蜂鸣器发出声音,需要给蜂鸣器一个脉冲信号。51单片机没有输出脉冲信号的引脚,就要自己编写一个脉冲信号的代码。即:先给蜂鸣器一段高电平,然后延长一段时间,给一段低电平,然后延长一段时间。最后加一个循环。

          

    预习过程中的疑问以及疑问  解答

    关于驱动蜂鸣器的实验:

    疑问一:怎么样让单片机产生一个脉冲信号给蜂鸣器?

    解答:定义一个引脚,定义一段时间为高电平,定义一段时间为低电平,然后可以加一个循环。

    疑问二:使蜂鸣器发生函数是怎么写的?

    解答:for循环里面加脉冲,即:for(i=0;i<count;i++){   buzzer=1;delay(High);buzzer=0;

    Delay(Low)};

    疑问三:void pulse_BZ(int,int,int)是什么意思?

    解答:定义蜂鸣器发声的函数,第一个括号里面的int表示传参,第一个int 表示

    Count发声的次数,第二个int表示高电平,第三个int表示低电平。

    疑问四:delay延时函数是怎么计算的?

    解答:void delay(int x){ int i,j; for(i=0;i<x;i++)for(j=0;j<1200;j++);}   这里12MHZ的晶振,一个机器周期12*1/12=1us,一个for循环8us,这里8*1200约等于10ms

    总的延时 x*10ms

    实验项目( 二 ) — 实验报告

    项目

    名称

    驱动蜂鸣器实验

    指导教师

    高照玲

    实验室

    教室

    实验日期

    2015/10/14

    分组

    情况

    赵存档、

    成    绩

    实验步骤(算法、代码、方法)给出流程图

    驱动蜂鸣器的实验:

    流程图:

        

    主要实现代码:

    延迟函数:

    void   delay(int x)

       {    int i,j;

                   for(i=0;i<x;i++)

                   for(j=0;j<60;j++); }

    蜂鸣器发声函数:  

    void   Buzzer(int count,int High,int Low)

    {  int i;

                  for(i=0;i<count;i++)

                   {  buzzer = 1;

                          delay(High);

                          buzzer = 0;

                          delay(Low);}

    }

    实验结果(结论及

    分析)

    通过实验,知道怎么样给单片机产生一个脉冲信号:一段高电平,一段低电平。

    编写代码的时候,知道怎么写一个延迟函数也就是for循环:先知道机器周期12MHZ的晶振是12*1/12=1us。X * 第2个for循环里面的数字约等于几ms;

    Delay()函数里面填写 X数字。

    画电路的时候注意一些要点:加不加电阻和二极管之类的。

    编写代码的时候:延时函数的第一个for后面没有分号的,不然会照成延时不对。

    成绩

  • 相关阅读:
    hdu 4324(dfs)
    hdu 2376(求树上任意两点之间距离之和的平均值)
    hdu 3665(最短路)
    hdu 4463(最小生成树变形)
    hdu 2242(边双连通分量)
    hdu 2682(最小生成树)
    hdu 2444(二分图的判断以及求最大匹配)
    陶哲轩实分析命题6.4.12
    陶哲轩实分析习题8.3.4
    CantorBernsteinSchroeder定理的证明
  • 原文地址:https://www.cnblogs.com/zhaocundang/p/4925742.html
Copyright © 2020-2023  润新知