嵌入式蜂鸣器实验报告.docx
《嵌入式蜂鸣器实验报告.docx》由会员分享,可在线阅读,更多相关《嵌入式蜂鸣器实验报告.docx(6页珍藏版)》请在冰豆网上搜索。
![嵌入式蜂鸣器实验报告.docx](https://file1.bdocx.com/fileroot1/2023-3/31/dccf7f7e-e3c4-4950-a342-5ab0711d0035/dccf7f7e-e3c4-4950-a342-5ab0711d00351.gif)
嵌入式蜂鸣器实验报告
竭诚为您提供优质文档/双击可除
嵌入式蜂鸣器实验报告
篇一:
嵌入式-蜂鸣器控制实验
实验二蜂鸣器控制实验
实验目的:
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。