嵌入式--蜂鸣器控制实验_第1页
嵌入式--蜂鸣器控制实验_第2页
嵌入式--蜂鸣器控制实验_第3页
嵌入式--蜂鸣器控制实验_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 实验二 蜂鸣器控制实验实验目的:1 了解ARM处理器PWM接口的处理机制 2 掌握在S3C2440A平台下进行PWM接口应用编程实验器材: Sinosys-EA2440实验箱 PC机实验原理:脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。即通过改变方波的占空比表示不同的模拟信号的电平。在ARM嵌入式实验中,其实是通过微处理器中的计数器,对经过频率变换的输出频率周期进行计数,在PWM中,是通过两个寄存器(TCNTBn和TCMPBn)对输出信号的占空比进行调制,TCNTBn可以设置为TCMPBn+X

2、,当TCNTBn在TCMPBn和TCMPBn+X 之间计数时,TOUTn(即输出信号)输出低电平,当TCNTBn计数下降到TCMPBn时,TOUTn电平反转,变为高电平,直到TCNTBn计数减到0,如果此时开启了重载,则又把预定的值重新装入TCNTBn和TCMPBn中,重复以上过程。在ARM嵌入式PWM中,会提供一个基准时钟作为输入时钟,PWM调制会对输入的时钟进行分频等操作进入计时器逻辑,其电路图2.1如下: 图2.1 PWM计时器框图如图2.1,输入的时钟PCLK经过一个8bit预置器和一个分频器,将得到的时钟进入计数器逻辑板块作为驱动时钟,而输出的TOUT则作为蜂鸣器(蜂鸣器控制电路如图

3、2.2)的驱动信号。 图2.2 蜂鸣器控制电路实验总结:实验的主函数首先设置时钟,端口初始化,并捕捉进入测试函数的指令,与实验一大致相同,在此不在赘述,重点分析测试函数。测试函数如下:void Beep(int freq,int ms)int div,irGPBCON&=0x3; /将GPB0作为输入口rGPBCON|=0X2; / 接入TIMER0rTCFG0&=0XFF; / 设置prescaler为32rTCFG0|=0XF;rTCFG1&=0XF; /选择mux=1/16rTCFG1|=0X3;div=plck/32/16/freq 计算TCNTB0的值rTCN

4、TB0=div;rTCMPB0=rTCNTB0>>2; 占空比为4:1rTCON&=0X1F; 设置死区 自动重载 反转 人工载入 开始rTCON|=0XB; 关闭死区 开启重载 关反转 开人工载入 开始rTCON&=2; 关闭人工载入for(i=1,i<ms,i+);void beep_test(void) U8 key; freq=1000; beep(freq,0); while(1) Uart_Printf("nWant to quit Alarm I/O test,OK? (Y/N)n"); key=Uart_Getch(); i

5、f(key='y'|key='Y') break; else if(key='+') freq+=100; beep(freq,0) ; /加号增加频率 Uart_Printf( "Press +to increase/reduce the frequency of beep !n" ) ; else if( key = '-' ) /减号降低频率freq-=100; beep(freq,0) ; Uart_Printf( "Press - to increase/reduce the frequency of beep !n" )

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论