嵌入式蜂鸣器实验报告.docx

上传人:b****5 文档编号:11748679 上传时间:2023-03-31 格式:DOCX 页数:6 大小:17.71KB
下载 相关 举报
嵌入式蜂鸣器实验报告.docx_第1页
第1页 / 共6页
嵌入式蜂鸣器实验报告.docx_第2页
第2页 / 共6页
嵌入式蜂鸣器实验报告.docx_第3页
第3页 / 共6页
嵌入式蜂鸣器实验报告.docx_第4页
第4页 / 共6页
嵌入式蜂鸣器实验报告.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

嵌入式蜂鸣器实验报告.docx

《嵌入式蜂鸣器实验报告.docx》由会员分享,可在线阅读,更多相关《嵌入式蜂鸣器实验报告.docx(6页珍藏版)》请在冰豆网上搜索。

嵌入式蜂鸣器实验报告.docx

嵌入式蜂鸣器实验报告

竭诚为您提供优质文档/双击可除

嵌入式蜂鸣器实验报告

  篇一:

嵌入式-蜂鸣器控制实验

  实验二蜂鸣器控制实验

  实验目的:

1了解ARm处理器pwm接口的处理机制

  2掌握在s3c2440A平台下进行pwm接口应用编程

  实验器材:

sinosys-eA2440实验箱pc机

  实验原理:

脉冲宽度调制(pwm)是一种对模拟信号电平进行数字编码的方法。

通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。

即通过改变方波的占空比表示不同的模拟信号的电平。

  在ARm嵌入式实验中,其实是通过微处理器中的计数器,对经过频率变换的输出频率周期进行计数,在pwm中,是通过两个寄存器(TcnTbn和Tcmpbn)对输出信号的占空比进行调制,TcnTbn可以设置为Tcmpbn+x,当TcnTbn在Tcmpbn和Tcmpbn+x之间计数时,TouTn(即输出信号)输出低电平,当TcnTbn计数下降到Tcmpbn时,TouTn电平反转,变为高电平,直到TcnTbn计数减到0,如果此时开启了重载,则又把预定的值重新装入TcnTbn和Tcmpbn中,重复以上过程。

  在ARm嵌入式pwm中,会提供一个基准时钟作为输入时钟,pwm调制会对输入的时钟进行分频等操作进入计时器逻辑,其电路图2.1如下:

  图2.1pwm计时器框图

  如图2.1,输入的时钟pcLK经过一个8bit预置器和一个分频器,将得到的时钟进入计数器逻辑板块作为驱动时钟,而输出的TouT则作为蜂鸣器(蜂鸣器控制电路如图2.2)的驱动信号。

  图2.2蜂鸣器控制电路

  实验总结:

实验的主函数首先设置时钟,端口初始化,并捕捉进入测试函数的指令,与实验一大致相同,在此不在赘述,重点分析测试函数。

测试函数如下:

  voidbeep(intfreq,intms)

  {

  intdiv,i

  rgpbcon//将gpb0作为输入口

  rgpbcon|=0x2;//接入TImeR0

  rTcFg0//设置prescaler为32

  rTcFg0|=0xF;

  rTcFg1//选择mux=1/16

  rTcFg1|=0x3;

  div=plck/32/16/freq计算TcnTb0的值

  rTcnTb0=div;

  rTcmpb0=rTcnTb0>>2;占空比为4:

1

  rTcon设置死区自动重载反转人工载入开始rTcon|=0xb;关闭死区开启重(:

嵌入式蜂鸣器实验报告)载关反转开人工载入开始rTcon关闭人工载入

  for(i=1,i  voidbeep_test(void)

  {

  u8key;

  freq=1000;beep(freq,0);

  while

(1)

  {

  uart_printf("\nwanttoquitAlarmI/otest,oK?

(Y/n)\n");key=uart_getch();

  if(key==y||key==Y)

  break;

  elseif(key==+)

  {freq+=100;beep(freq,0);//加号增加频率uart_printf("press+toincrease/reducethefrequencyofbeep!

\n");

  }

  elseif(key==-)//减号降低频率{freq-=100;beep(freq,0);uart_printf("press-toincrease/reducethefrequencyofbeep!

\n");}

  实验中,通过Dnw将bin文件下载到实验箱中,发现蜂鸣器开始想起,通过“+”“-”的控制,使得频率改变,明显感到蜂鸣器的响声变尖或者变低沉,说明程序有效。

  篇二:

嵌入式实验报告

  嵌入式实验报告

  学院:

信息工程学院

  专业:

计算机科学与技术

  班级:

计算机班

  姓名:

  学号:

  指导老师:

  实验目录

  实验一嵌入式系统开发环境实验......................................2

  实验二系统节拍定时器实验..........................................12

  实验三gpIo控制实验...............................................16

  实验四外部中断实验................................................19

  实验五串口通讯实验................................................23

  实验一嵌入式系统开发环境实验

  【实验目的】

  1.熟悉RealViewmDK集成开发环境以及使用方法。

  2.熟悉嵌入式系统软件设计方法和流程。

  【实验内容】

  1.通过例程熟悉、掌握嵌入式系统的编辑、编译、调试、下载及运行过程。

  2.建立自己的工程文件,在开发板板上调试程序。

  【实验步骤】

  

(一)程序安装

  1.建议在安装之前关闭所有的应用程序,双击安装文件,弹出如图对话框,

  next

  2.默认选择c盘文件下安装。

  3.这样就在c盘底下出现keil文件夹。

  4.单击选择菜单“File”-->"Licensemanagement"将弹出下面一张图的界面:

复制其中cID号,以便在粘贴到下一步中的破解软件。

  5.复制

  cID

  篇三:

嵌入式实验报告

  实验一cVT6410gpIo控制LeD

  1.1实验目的

  1.熟悉RVDs2.2开发环境。

  2.掌握s3c6410内部相关寄存器的操作方法,最终实现对外部设备的控制。

  3.熟悉在ARm裸机环境下的c语言编程。

  1.2实验内容

  建立RVDs开发环境。

编程显示二进制的0到15,如15全部灯亮,0全灭,最右边灯为最低位,最左边灯为最高位,轮流显示你学号的低四位

  1.3实验设备

  1.硬件:

cVT6410教学实验箱、pc机;

  2.软件:

pc机操作系统windows98(2000、xp)+RVDs开发环境。

  3.JLInK仿真器。

  1.4实验原理

  从电路图上我们可以看到,发光二极管LeD的一端连接到了ARm的gpIo,另一端经过一个限流电阻接电源VDD33V。

当gpIo口为低电平时,LeD两端产生电压降,这时LeD有电流通过并发光。

反之当gpIo为高电平时,LeD将熄灭。

注意亮灭之间要有一定的延时,以便人眼能够区分出来。

  实验相应寄存器

  端口配置寄存器

  端口数据寄存器

  端口上拉电路使能寄存器

  1.5实验步骤及结果

  1.准备好实验环境,将JLInK连接好。

给开发板上电,使bootloader停在菜单处。

  2.打开软件‘codewarriorforRVDs’,新建工程‘gpioled.mcp’,并添加两个程序文件‘main.c’和‘init.s’(汇编文件)。

  3.对工程文件进行相应设置

  4.编译该工程,成功后将生成映像文件‘gpioled.axf’。

打开AxD,装载映像文件‘gpioled.axf’。

  5.运行程序,观察结果。

  原程序:

  #definergpmcon(*(volatileunsigned*)(0x7F008820))

  #definergpmDAT(*(volatileunsigned*)(0x7F008824))

  #definergpmpuD(*(volatileunsigned*)(0x7F008828))

  voidmsDelay(inttime)

  {

  volatileunsignedinti,j;

  for(i=0;i  for(j=0;j  }

  voidgpIo_Init(void)

  {

  rgpmcon=0x11111;

  //端口均设为输出

  rgpmpuD=0x00;

  rgpmDAT=0x1F;

  }

  voidLedTest(void)

  {

  volatileunsignedinti;

  while

(1)

  {

  for(i=0;i  {

  rgpmDAT=~(1  msDelay(10);

  }

  }

  }

  voidmain(void)

  {

  gpIo_Init();

  LedTest();

  }

  结果:

四个发光二极管LeD将轮流闪烁,最终实现流水灯效果。

  改进1:

显示二进制0-15

  unsignedcharnum[15]=

  {

  0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,

  0x08,0x09,0x0A,0x0b,0x0c,0x0D,0x0e,0x0F

  };

  //端口数据寄存器赋值,LeD依次显示二进制0-15

  voidLedTest(void)

  {

  volatileunsignedinti;

  while

(1)

  {

  for(i=0;i  {

  rgpmDAT=~num[i];

  msDelay(10);

  }

  }

  }

  结果:

最右边灯为最低位,最左边灯为最高位,显示二进制的0到15,15全部灯亮,0全灭。

如下图所示,显示数据2。

  改进2:

显示学号低四位0134

  voidLedTest(void)

  {

  }

  volatileunsignedinti;while

(1){rgpmDAT//数据状态维持rgpmDAT|=0x0;msDelay(15);rgpmDATrgpmDAT|=0x1;msDelay(15);rgpmDATrgpmDAT|=0x3;msDelay(15);rgpmDATrgpmDAT|=0x4;msDelay(15);}

  结果:

LeD灯按二进制依次闪烁0134。

  

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1