您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > PWM灯光亮暗控制实验
班级学号姓名同组人实验日期室温大气压成绩PWM灯光亮暗控制实验一、实验目的1、利用P0.21口作为PWM5的输出端口,并用杜邦线将此端口与LED1相连,通过占空比的调节来控制LED1的亮度,并且实现在LED1亮度最亮与亮度为零的两种情况下,蜂鸣器会报警。2、让自己更好的掌握PWM占空比调节的控制功能,因为PWM也是电子系统中经常用的东西,做此实验的实用性也更强。二、实验仪器装有ADS1.2及EasyJTAG仿真器的电脑一、ARM7开发板一块三、实验原理LPC3131/2132/2138的脉宽调制器建立在前一章的标准定时器0/1之上。应用可在PWM和匹配当中进行选择。特性7个匹配寄存器,可实现6个单边沿控制或3个双边沿控制PWM输出,或这两种类型的混合输出:●连续操作,可选择在匹配时产生中断●匹配时停止定时器,可选择产生中断●匹配时复位定时器,可选择产生中断每个匹配寄存器对应一个外部输出,具有下列特性:●匹配时设置为低电平●匹配时设置为高电平●匹配时翻转●匹配时无动作支持单边沿控制和/或双边沿控制的PWM输出。单边沿控制PWM输出在每个周期开始时总是为高电平,除非输出保持恒定低电平。双边沿控制PWM输出可在一个周期内的任何位置产生边沿。这样可同时产生正和负脉冲。脉冲周期和宽度可以是任何的定时器计数值。这样可实现灵活的分辨率和重复速率的设定。所有PWM输出都以相同的重复率发生。双边沿控制的PWM输出可编程为正脉冲或负脉冲匹配寄存器更新与脉冲输出同步,防止产生错误的脉冲。软件必须在新的匹配值生效之前将它们释放。果不使能PWM模式,可作为一个标准定时器,带可编程32位预分频器的32位定时器/计数器,当输入信号跳变时4个捕获寄存器可取得定时器的瞬时值,也可选择使捕获事件产生中断。寄存器描述(PWM功能增加了新的寄存器和寄存器位,见表137)表137PWM寄存器映射名称描述访问复位值*地址PWMIRPWM中断寄存器可以写IR来清除中断。可读取IR来识别哪个中断源被挂起。R/W00xE0014000PWMTCRPWM定时器控制寄存器TCR用于控制定时器计数器功能。定时器计数器可通过TCR禁止或复位。R/W00xE0014004PWMTCPWM定时器计数器32位TC每经过PR+1个pclk周期加1。TC通过TCR进行控制。R/W00xE0014008PWMPRPWM预分频寄存器T每经过PR+个pclk周期加1。R/W00xE001400PWMPCPWM预分频计数器每当32位P的值增加到等于PR中保存的值时,TC加1。R/W00xE0014010PWMMCRPWM匹配控制寄存器MCR用于控制在匹配时是否产生中断或复位TC。R/W00xE0014014PWMMR0PWM匹配寄存器0MR0可通过MCR设定为在匹配时复位TC,停止TC和PC和/或产生中断。此外,MR0和TC的匹配将置位所有单边沿模式的PWM输出,并置位双边沿模式下的PWM1输出。R/W00xE0014018PWMMR1PWM匹配寄存器1MR1可通过MCR设定为在匹配时复位TC,停止TC和PC和/或产生中断。此外,MR1和TC的匹配将清零单边沿模式或双边沿模式下的PWM1,并R/W00xE001401C置位双边沿模式下的PWM2输出。PWMMR2PWM匹配寄存器2MR2可通过MCR设定为在匹配时复位TC,停止TC和PC和/或产生中断。此外,MR2和TC的匹配将清零单边沿模式或双边沿模式下的PWM2,并置位双边沿模式下的PWM3输出。R/W00xE0014020PWMMR3PWM匹配寄存器3MR3可通过MCR设定为在匹配时复位TC,停止TC和PC和/或产生中断。此外,MR3和TC的匹配将清零单边沿模式或双边沿模式下的PWM3,并置位双边沿模式下的PWM4输出。R/W00xE0014024PWMMR4PW匹配寄存器4MR4可通过MCR设定为在匹配时复位TC,停止TC和PC和/或产生中断。此外,MR4和TC的匹配将清零单边沿模式或双边沿模式下的PWM4,并置位双边沿模式下的PWM5输出。R/W00xE0014040PWMMR5PWM匹配寄存器5MR5可通过MCR设定为在匹配时复位TC,停止TC和PC和/或产生中断。此外,MR5和TC的匹配将清零单边沿模式或双边沿模式下的PWM5,并置位双边沿模式下的PWM6输出。R/W00xE0014044PWMMR6PWM匹配寄存器6MR6可通过MCR设定为在匹配时复位TC停止TC和PC和/或产生中断。此外,MR6和TC的匹配将清零单边沿模式或双边沿模式下的PWM6,R/W00xE0014048PWMPCRPWM控制寄存器使能PWM输出并选择PWM通道类型为单边沿或双边沿控制。R/W00xE001404CPWMLERPWM锁存使能寄存器使能使用新的PWM匹配值。R/W00xE0014050四、实验程序#includeconfig.h#definekey1(116)#definekey2(117)#defineBEEP(17)voidDelayms(uint32dly){uint32i;for(;dly0;dly--)for(i=0;i5000;i++);}intmain(void){PINSEL0=0x00000000;/*设置管脚连接GPIO*/PINSEL1=0x00000400;/*设置管脚连接key1,key2P0.21选择PWM5功能*/IO0DIR=BEEP;/*PWM初始化*/PWMPR=0x00;//不分频,计数频率为FpclkPWMMCR=0x02;//设置PWMMR0匹配时复位PWMTCPWMPCR=0x2000;//允许PWM5输出,单边PWMPWMMR0=10000;PWMMR5=5000;//50%占空比PWMLER=0x21;//PWM0和PWM5匹配锁存PWMTCR=0x02;//复位PWMTCPWMTCR=0x09;//启动PWM输出IO0SET=BEEP;while(1){if(PWMMR5!=0)//占空比为0后,不再减少{if((IO0PIN&key1)==0)//key1按下{Delayms(500);//延时if((IO0PIN&key1)==0)//再次检测{PWMMR5-=500;//占空比减少5%PWMLER=0x21;//PWM0和PWM5匹配锁存}}}else{IO0CLR=BEEP;//占空比为0%时蜂鸣Delayms(100);IO0SET=BEEP;}if(PWMMR5=10000)//占空比为100%,不再增加{if((IO0PIN&key2)==0)//检测key2按下{Delayms(500);if((IO0PIN&key2)==0)//再次检测{PWMMR5+=500;//占空比增加5%PWMLER=0x21;//PWM0和PWM5匹配锁存}}}else{IO0CLR=BEEP;//占空比为100%时蜂鸣Delayms(100);IO0SET=BEEP;}}return0;}实验时是通过按KEY1键来减少占空比,由于LED1灯是低电平点亮,所以占空比越小,灯越亮。所以实验可以通过按KEY1键来增加LED1的亮度。而按KEY2是用来增加占空比,所以KEY2的作用是来减少灯的亮度。五、总结分析一开始LED1灯的亮度适中(占空比为50%),当按一次KEY1键时,灯的亮度增加一点(占空比减少5%),当按十次后灯最亮(占空比为0%),此时蜂鸣器会蜂鸣报警,而按KEY2键的情况恰好相反,由于按一次KEY2键时占空比增加5%,所以按一次KEY2键时,LED1的亮度会减小些。当LED1完全熄灭的时候,蜂鸣器也会蜂鸣报警。实验时如果按键长按KEY2或KEY1键,可以每隔大约0.3s占空比的递增或递减。通过本次实验,让我更加的掌握了用PWM来实现占空比调节的知识,在实验编写程序阶段,一开始并不成功,经过自己慢慢的修改,调试,最后终于成功了实现了实验设计。在此过程中,我懂得了一些新的编程思维和知识点。
本文标题:PWM灯光亮暗控制实验
链接地址:https://www.777doc.com/doc-5686242 .html