您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > PWM调整LED亮度设计报告
EDA技术基础PWM调整LED亮度选做试验电子信息科学与技术物电学院2011-06-24湖北师范学院电工电子实验教学省级示范中心电子版实验报告第2页,共8页PWM调整LED亮度设计一.实验任务学习PWM原理,用Verilog硬件描述语言设计PWM逻辑电路,实现PWM信号占空比可调,通过按键调整PWM信号的占空比,将此PWM信号输出驱动发光二极管,观察不同占空比时发光二极管的亮度如何变化。在实验箱上实现按键调整发光二极管亮度,数码管显示PWM信号的占空比。具体要求:将输入数字信号转化为输出模拟信号,利用脉宽调制来实现二极管的亮度调节。按下s1(不松手),二极管逐渐变暗,暗到一定程度,突然变亮,再循环,按下s2(不松手),二极管逐渐变亮,亮到一定程度,突然变暗,再循环。二.方案论证实验原理图为三、实验思路湖北师范学院电工电子实验教学省级示范中心电子版实验报告第3页,共8页调节时钟脉冲的占空比,输出脉冲频率一定,输出脉冲的占空比越大相当于输出的有效电平越大,可将数字量转化为模拟量。基于这种思路可先将输入的一定计数周期T(相当于一个常量)的标准时钟脉冲变为一个高低电平占空比不一致的非标准脉冲(包含一个高电平、一个低电平),可用另外一个计数器Q来控制高低电平的占空比,随着Q的增大高电平的占空比随时间逐渐增大(或减小),而低电平随时间逐渐减小(或增大)。但这个脉冲周期T是一定的。随着T个数的增加便能得到一个高电平的占空比随时间逐渐增大(或减小),而低电平随时间逐渐减小(或增大)的非标准的时钟脉冲。由于时钟脉冲的高低电平的占空比随时间有规律、有方向的变化,这样可实现二极管的亮度缓慢变化。四、实验步骤及代码99计数器的计数模块代码为modulecounter(clk,clr,Q);inputclk,clr;output[7:0]Q;reg[7:0]Q;always@(posedgeclkornegedgeclr)beginif(!clr)beginQ=0;endelsebeginif(Q[3:0]==9)beginif(Q[7:4]9)beginQ[7:4]=Q[7:4]+1;Q[3:0]=0;endelsebeginQ[7:0]=0;endendelsebeginQ[3:0]=Q[3:0]+1;endendendendmodule而通过按键可调的计数器模块的代码为:湖北师范学院电工电子实验教学省级示范中心电子版实验报告第4页,共8页modulec9(clk,clr,kup,kdw,Q,clk);inputclr,clk;inputkup,kdw;output[7:0]Q;reg[7:0]Q;wireclka,clkb,clkc,clkd,newclk;assignclka=clk;LCELLAA(clka,clkb);LCELLBB(clkb,clkc);LCELLCC(clkc,clkd);LCELLDD(clkd,newclk);always@(posedgenewclkornegedgeclr)beginif(!clr)beginQ[3:0]=4'H0;Q[7:4]=4'H5;endelsebeginif(kup)beginif(Q[3:0]==4'H9)if(Q[7:4]==9)beginQ[7:4]=4'H0;Q[3:0]=4'H0;endelsebeginQ[7:4]=Q[7:4]+4'H1;Q[3:0]=4'H0;endelseQ[3:0]=Q[3:0]+4'H1;endelsebeginQ[3:0]=Q[3:0];Q[7:4]=Q[7:4];endif(kdw)beginif(Q[3:0]==4'H0)湖北师范学院电工电子实验教学省级示范中心电子版实验报告第5页,共8页if(Q[7:4]==4'H0)beginQ[7:4]=4'H9;Q[3:0]=4'H9;endelsebeginQ[7:4]=Q[7:4]-1;Q[3:0]=4'H9;endelseQ[3:0]=Q[3:0]-4'H1;endelsebeginQ[3:0]=Q[3:0];Q[7:4]=Q[7:4];endendendendmodule同时要用实验箱上的50MHZ晶体震荡器作为计数器1的输入时钟代码为modulefenpin2(clk,clr,clko);inputclk,clr;outputclko;reg[25:0]c;regclko;always@(posedgeclkornegedgeclr)beginif(!clr)beginc=26'H0;clko=1'H0;endelseif(c==26'D50_000_000)beginc=26'H0;clko=1'H1;endelsebeginc=c+26'D100;clko=1'H0;endendendmodule由于数码关于二极管的频率不一样,因此对他们时钟信号的分频的大小也应不同,因此对二极管的输入时钟也应进行分频,其代码为:modulediv_clk(clk,clr,ck0);湖北师范学院电工电子实验教学省级示范中心电子版实验报告第6页,共8页inputclk,clr;outputck0;reg[19:0]c;always@(posedgeclkornegedgeclr)beginif(!clr)c=20'H0;elsec=c+20'H1;endassignck0=c[5];endmodule为了使数码管上能显示出占空比,我们还应加一个比较模块,其代码:modulecompare(a,b,led);input[7:0]a;input[7:0]b;outputled;regled;always@(aorb)beginif(ab)led=1;elseled=0;endendmodule数码管显示模块moduledeled(num,a,b,c,d,e,f,g);input[3:0]num;outputa,b,c,d,e,f,g;rega,b,c,d,e,f,g;湖北师范学院电工电子实验教学省级示范中心电子版实验报告第7页,共8页always@(num)begincase(num)4'H0:{a,b,c,d,e,f,g}=7'b1111110;4'H1:{a,b,c,d,e,f,g}=7'b0110000;4'H2:{a,b,c,d,e,f,g}=7'b1101101;4'H3:{a,b,c,d,e,f,g}=7'b1111001;4'H4:{a,b,c,d,e,f,g}=7'b0110011;4'H5:{a,b,c,d,e,f,g}=7'b1011011;4'H6:{a,b,c,d,e,f,g}=7'b1011111;4'H7:{a,b,c,d,e,f,g}=7'b1110000;4'H8:{a,b,c,d,e,f,g}=7'b1111111;4'H9:{a,b,c,d,e,f,g}=7'b1111011;default:{a,b,c,d,e,f,g}=7'b0000000;endcaseendendmodule相应的数码管引脚、二极管引脚及按键的引脚排列图为:五、实验分析及实验总结1、由于时钟脉冲的高低电平的占空比随时间有规律、有方向的变化,这样湖北师范学院电工电子实验教学省级示范中心电子版实验报告第8页,共8页可实现二极管的亮度缓慢变化。2、为了在实验箱上对方波信号占空比进行控制,我们采用以下方法来实现:N值由计数器2给出,计数器2的值增加时,占空比增大;计数器2的值减小时,占空比减小。3、在分频这一模块上要注意一下,开始我只用一个分频,结果这可以实现对二极管是否闪烁的调整,但是这不能对数码管数字变化的快慢进行调整,在这问题上我困惑了好长时间,后来在请教别人的情况下,我加了一个分频模块,把其加在对数码管分频这一块,最终实现了对数码管快慢变化的可调。4、实验心得:通过做pwm实验,我对EDA这门课有了更深一步了了解和认识,虽说有些代码是别人写的,但是只要我们真正搞懂了它的原理并掌握了它,我们一样可以学好它,并把它变成自己的东西。在时钟频率一定时,计数器从由0开始到计满溢出的周期是一定的。因此可以固定输出波形的周期脉冲宽度可由N值来控制,当N值减小时,波形占空比减小,当N值增大时,波形占空比增大
本文标题:PWM调整LED亮度设计报告
链接地址:https://www.777doc.com/doc-2847551 .html