关于单片机的一些小实验_05 蜂鸣器控制实验

时间:2024.5.14

/********************************************************************************************

* 功 能:利用P1.3输出高低电平来控制蜂鸣器蜂鸣。

* 硬件条件:1.CPU型号:AT89S52

* 2.晶振:12.000MHz

* 3.短接BEEP_P1.3

* 日 期:20xx年04月24号

*********************************************************************************************/

#include "reg52.h" // 包含头文件

/* 与编译器无关的数据类型定义 */

/********************************************************************************************/

typedef unsigned char uint8; // 无符号8位整型变量

typedef signed char int8; // 有符号8位整型变量

typedef unsigned short uint16; // 无符号16位整型变量

typedef signed short int16; // 有符号16位整型变量

typedef unsigned int uint32; // 无符号32位整型变量

typedef signed int int32; // 有符号32位整型变量

typedef float fp32; // 单精度浮点数(32位长度)

typedef double fp64; // 双精度浮点数(64位长度)

/********************************************************************************************/

sbit P1_3 = P1 ^ 3; // 定义位变量

#define BEEP_ON() (P1_3=0) // 定义"BEEP_ON()"为P1.3输出低电平,控制蜂鸣器蜂鸣

#define BEEP_OFF() (P1_3=1) // 定义"BEEP_OFF()"为P1.3输出高电平,控制蜂鸣器不蜂鸣

/********************************************************************************************

* 函数名称:Delay()

* 功 能:软件延时

* 入口参数:count 延时参数,值越大,延时越长

* 出口参数:无

*********************************************************************************************/

void Delay(uint16 count)

{

uint8 i;

while(--count != 0)

{

for(i = 0; i < 125; i++); // ";" 表示空语句,CPU空转。

} // i 从0加到125,在12M晶体下CPU大概耗时1毫秒

}

/********************************************************************************************

* 函数名称:main()

* 功 能:利用P1.3输出高低电平来控制蜂鸣器蜂鸣。

*********************************************************************************************/

void main (void)

{

while(1) // 死循环

{

BEEP_ON(); // 蜂鸣器蜂鸣

Delay(200); // 延时

BEEP_OFF(); // 蜂鸣器不蜂鸣 Delay(200);

}

}


第二篇:实验二蜂鸣器控制实验


实验二蜂鸣器控制实验

实验材料(试用,仅供内部使用,有问题请及时联系)

电子科学与技术系童超

实验目的

1了解ARM处理器PWM接口的处理机制

2掌握在S3C2440A平台下进行PWM接口应用编程

实验设备

1硬件:SinoSys-EA2440a实验平台,PC机

2软件:ADS1.2开发工具,DNW工具

实验任务

实现功能:

1点击键盘的“+”号提高蜂鸣器频率,点击“-”号则降低频率。

2通过ADS1.2建立工程,编译。程序通过ICE仿真器调试。调试完成后通过DNW直接下载到实验板上运行。

实验原理

3.1概述

脉冲宽度调制(PWM),是英文“PulseWidthModulation”的缩写,简称脉宽调制,其广泛应用在从测量、通信到功率控制与变换的许多领域中,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。脉冲宽度调制是一种模拟控制方式,从物理意义上说,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,从实际使用上说,其通过高分辨率计数器,将方波的占空比来编码一个具体的模拟信号。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。

PWM控制技术以其控制简单,灵活和动态响应好的优点而成为电力电子技术最广泛应用的控制方式,也是人们研究的热点。由于当今科学技术的发展已经没有了学科之间的界限,结合现代控制理论思想或实现无谐振软开关技术将会成为PWM控制技术发展的主要方向之一。

3.2S3C2440的PWM

由于PWM的实际应用和相关寄存器非常之多,因此本文仅仅介绍和使用本系统所使用的相关概念和使用方法。PWM控制器主要有4个特征:1、由5个16位定时器、2个8位预分频器以及2个4位分割器组成;2、拥有自动重载模式或者单击脉冲模式;3、可编程控制输出波形;4、死区发生器。其中除了定时器4以外,其余三个均具有脉宽调制(PWM)功能,定时器4仅仅是一个内部定时器,没有输出引脚。开发板定时器结构框图如下:

实验二蜂鸣器控制实验

3.3PWM相关寄存器介绍

PWM的寄存器共有17个,相应的寄存器分为5组,分别为配置和模式选择寄存器(TCFG0~TCFG1),定时器计数缓存寄存器(TCNTB0~TCNTB4),定时器比较缓存寄存器(TCMPB0~TCMPB3),定时器控制寄存器(TCON),定时器计数观测寄存器(TCNTO0~TCNTO4)。

由于PWM寄存器相对较多,不需要全部使用,只需要使用系统需要的即可。本系统中最为重要的是TCNTB0和TCMPB0,TCNTB0决定着PWM的脉冲频率,而PWM的宽度则由TCMPB0决定。一般来说,如果要得到一个较高的PWM的输出值,就需要增加TCMPB0的值,如果说输出反转器被时能,那么增加和减少的结果也是反转的。基于双缓冲器的特性,下一个PWM周期的TCMPB0的值可以通过中断或者其他手段在当前PWM周期中任何一点写入。

3.4设置占空比和输出频率

报警器采用TOUT0作为其脉冲输入信号,通过修改TCFG0和TCFG1设置预分频值和计时器分割器的选择(可查询表3.2),占空比(rate)由TCNTB0和TCMPB0决定其值的计算公式如下:

div=PCLK/{prevalue+1}/{divvalue}/freq

{prevalue+1}=0~255由TCFG0决定

{divvalue}=2,4,6,8,16,32由TCFG1决定

rate={cmpvalue}/{tcnvalue}

最终的value由div和rate生成,即

value=div*rate//rate<1;

实验流程图(简化)分析如下,设置TCNTB0为180(70+110),设置TCMPB0为110,设置人工加载位、配置极性转换位。同时设置下一次TCNTB0为80(40+40),设置TCMPB0为40作为下一次定时的参数。定时器延迟一定时间后定时器下降计数器开始计数,当TCNTB0和TCMPB0数值一致时,TOUT0的逻辑将由低变高。当TCNTB0计数为0时,定时器中断打开,同时将寄存器数据更新,从而继续上一次操作。从而形成了下图的波形图,

此时报警器会根据所设置的频率发出不同大小的声音,已基本实现所要功能。

实验二蜂鸣器控制实验

实验二蜂鸣器控制实验

3.5蜂鸣器接口电路

系统的报警器电路就是由平台将S3C2440的定时器0的脉冲输出端口(TOUT0)GPB0与报警器的脉冲输入端口相连。在系统初始化时,就要进行I/O端口初始化,设置端口控制寄存器(将再下面讲到),将GPB0设置为工作方式1,并设置为输出状态。控制电路如图所示,

3.6实现过程和结果

参考\SourceCode\Interface\beep_test的程序。其中大部分的代码已经给出,请参考上面的原理和s3c2440的手册,写出实验代码并完成实验。

更多相关推荐:
单片机实验心得

通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真…

单片机实验小结

这学期的单片机实验课程已经结束了,虽然做的实验是比较简答的,但麻雀虽小五脏俱全,因此自己也通过实验课学到了很多知识。单片机实验课是为了更好的学习单片机使用单片机而开设的一门课程。单片机在实际生活中的应用非常广泛…

单片机实验心得体会

时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。在学习单片机这门课程之前,就早早的听各种任课老师和学长学姐们说过这门课程的重要性和学好这门课程的关键~~多做单片机实验。这个学期,我们除…

单片机实验心得体会

单片机实验心得体会时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。在学习单片机这门课程之前,就早早的听各种任课老师和学长学姐们说过这门课程的重要性和学好这门课程的关键~~多做单片机实验…

单片机实验总结报告

福建农林大学计算机与信息学院信息工程类实验报告课程名称:单片机技术姓名:系:电子信息工程系专业:电子信息工程年级:学号:指导教师:**职称:副教授20**年10月28日实验项目列表福建农林大学计算机与信息学院信…

单片机实验期末小结

上海大学电气工程及其自动化宋凯11121676单片机实践课程小结姓名宋凯学号11121676专业电气工程及其自动化任课老师高守玮1上海大学电气工程及其自动化宋凯11121676单片机实践课程总结转眼之间六次的单...

单片机实验报告

通信与信息工程学院20xx20xx学年第二学期实验报告课程名称单片机原理及应用专业班级学号学生姓名指导教师日期20xx年4月15日1实验一单片机汇编语言程序设计一实验目的1学习MedWin或Keilc51仿真软...

单片机实验报告八

HUBEIUNIVERSITYOFEDUCATION院系计算机学院专业计算机科学与技术班级姓名学号同组人实验室S4306组号日期课程单片机技术指导教师成绩实验项目编号810320xx08实验项目名称双机通信一实...

单片机实验报告二

HUBEIUNIVERSITYOFEDUCATION院系计算机学院专业计算机科学与技术班级姓名学号同组人实验室S4306组号日期课程单片机技术指导教师成绩实验项目编号810320xx02实验项目名称指示灯开关控...

单片机实验报告六

HUBEIUNIVERSITYOFEDUCATION院系计算机学院专业计算机科学与技术班级姓名学号同组人实验室S4306组号日期课程单片机技术指导教师成绩实验项目编号810320xx06实验项目名称双机通信一实...

单片机系统键盘的设计小结

单片机系统键盘的设计小结一概述键盘在单片机应用系统中实现输入数据传送命令的功能是人工干预的主要手段键盘分两大类编码键盘和非编码键盘编码键盘由硬件逻辑电路完成必要的键识别工作与可靠性措施每按一次键键盘自动提供被按...

单片机实验2实验报告

实验二交通灯程序设计谢鑫20xx0740123一实验题目交通灯控制系统设计二实验目的1学会用8051单片机开发简单的计算机控制系统2学会用汇编语言和C语言开发系统软件3学会8051单片机开发环境wave或Kei...

单片机实验小结(39篇)