实验2—占空比可调的PWM信号发生器
- 格式:doc
- 大小:28.50 KB
- 文档页数:1
STM32Cubemx输出可调频率与占空⽐的PWM 这⾥就不对STM32的PWM进⾏讲解了,想要了解的可以百度⼀下,这⾥主要说怎么实现。
1、建⽴⼯程,我选的是STM32F103zet6芯⽚,选择定时器的PWM功能 2、配置时钟,我这⾥配的是内部时钟,没有配外部时钟,⽽且不是最⼤时钟,有需要的可以⾃⼰改 3、配置定时器,这⾥的话默认就可以,因为代码⾥⾯需要对配置的初始化代码进⾏修改的,⽽修改后才可以实现该功能 4、⽣成代码后,修改代码,找到PWM初始化函数,修改为如下代码,注意要把初始化函数前⾯的static关键字也去掉,⽽且函数声明也要跟着修改void MX_TIM4_Init(uint16_t pre,uint16_t pul) //修改初始化函数,改变频率与PWM{//占空⽐=Pulse/Period;频率:f=48M/pre/perTIM_MasterConfigTypeDef sMasterConfig;TIM_OC_InitTypeDef sConfigOC;htim4.Instance = TIM4;htim4.Init.Prescaler =pre; //分频(关键)htim4.Init.Period = 100-1;//计数周期(关键,若100的计数周期对于⼀些频率跟占空⽐误差⼤的话,可以⾃⼰计算更改调试计数周期⼤⼩)htim4.Init.CounterMode = TIM_COUNTERMODE_UP;htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;if (HAL_TIM_PWM_Init(&htim4) != HAL_OK){_Error_Handler(__FILE__, __LINE__);}sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK){_Error_Handler(__FILE__, __LINE__);}sConfigOC.OCMode = TIM_OCMODE_PWM1;sConfigOC.Pulse = pul;//脉冲计数(关键)sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK){_Error_Handler(__FILE__, __LINE__);}HAL_TIM_MspPostInit(&htim4);} 5、接着在⾃⼰需要的代码⾥插⼊,PWM开始停⽌函数就可以啦HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); //PWM开启函数MX_TIM4_Init(uint16_t pre,uint16_t pul);//改变参数就可实现改变占空⽐跟频率的⽬的了HAL_TIM_PWM_Stop(&htim4, TIM_CHANNEL_1);//停⽌PWM 这⾥我说⼀下核⼼部分:占空⽐ = (Pulse/Period)*100%;频率: f = 48M/Prescaler/Period;影响PWM占空⽐跟频率的参数这主要是 Pulse、Prescaler、Period这3个;频率跟占空⽐都与Period(计数周期)有关,只要我们把计数周期定下来,修改Prescaler、跟Pulse 这两个值,就可以直接修改PWM的频率跟占空⽐了。
目录1.引言及简介 (2)1.1引言 (2)1.2软件介绍 (2)1.2.1 proteus (2)1.2.2 Keil (3)2.设计原理和方法 (5)2.1单片机的基本组成 (5)2.2方案的设计与选择 (5)2.3定时器T0、T1的工作原理 (6)2.4方波的产生 (7)3.系统硬件电路设计图 (8)4.程序框图 (9)4.1主程序框图: (9)4.2系统初始化: (10)4.3定时器中断程序框图: (10)4.4键盘扫描程序框图: (10)6.性能分析 (16)6.1定时器中断分析 (16)6.2系统性能分析 (16)7.心得体会 (17)8.参考文献 (18)1.引言及简介1.1引言单片机集成度高,功能强,可靠性高,体积小,功耗低,使用方便,价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,几乎无处不在,无所不为。
单片机的应用领域已经从面向工业控制,通讯,交通,智能仪表等迅速发展到家用消费产品,办公自动化,汽车电子,PC机外围一记网络通讯等广大领域。
单片机有两种基本结构形式:一种是在通用微型计算机中广泛采用的,将程序存储器和数据存储器合用一个存储器空间的结构,成为普林斯机构。
另一种是将程序存储器个数据存储器截然分开,分别寻址的结构,一般需要较大的程序存储器,目前单片机以采用程序存储器截然分开的结构多。
本课题讨论的占空比可调的信号发生器的核心是目前应用极为广泛的51系列单片机。
基于单片机的信号发生器的设计,该课题的设计目的是充分运用大学期间所学的专业知识,考察现在正在使用的信号发生器的基本功能,完成一个基本的实际系统的设计全过程。
关键是这个实际系统设计的过程,在整个过程中我可以充分发挥自动化的专业知识。
特别是这个信号发生器的设计中涉及到一个典型的控制过程。
通过单片机控制一个有特殊功能的信号发生芯片,可以产生一系列有规律的幅度和频率可调的波形。
这样一个信号发生器装置在控制领域有相当广泛的应用范围。
2011年至2012年第1学期《单片机原理与应用》课程设计班级1006402指导教师涂立李旎学生人数___ _3__ ___设计份数 1 2011年12月23日单片机课程设计报告一.设计时间2011年12月19日-----2011年12月23日二.设计地点一实验楼-401机房三.设计目的1、进一步熟悉和掌握单片机的结构及工作原理。
2、掌握单片机的接口技术及相关外围芯片的外特性,控制方法。
3、通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解有关电路参数的计算方法。
4、通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术,提高我们的自学能力与动手能力。
6、充分运用我们所学的专业知识,考察现在正在使用的信号发生器的基本功能,完成一个基本的实际系统的设计全过程,充分培养我们的分析能力与创新能力。
四.设计小组成员五.指导老师涂立(副教授)、李旎(讲师)六.设计课题设计并实现占空比可调信号发生器;要求:用4个按键分别控制输出信号的占空比和频率(用示波器观察输出波形),显示占空比范围10%、30%、50%,频率范围1Hz和5Hz,实时测量输出信号的占空比和频率值。
七.基本思路及关键问题的解决方法1、基本思路(1)实现可调节占空比信号发生器,我们可以设计K1是频率调节开关,K2,K3,K4为占空比调节开关。
K1按下一次时,对应的频率为1HZ,再按下K2,K3,K4为此频率下占空比分别为10%,30%,50%的输出信号;按下K1两次时(当按下次数大于2时将默认为初始状态),对应的频率为5HZ,K2,K3,K4按键的功能如上,本设计可实现同频率不同占空比的任意切换和不同频率间的直接切换。
(2)实验过程1.开打keil软件,建立一个新工程单击【Project】在下拉菜单中找到【Newproject...】选项,如图1所示:图1. 新建工程图2.选择工程要保存的路径,并且输入工程文件名。
Keil的一个工程里通常含有很多小文件,为了方便管理,一般将一个工程放在一个独立的文件夹下,比如保存到课程设计文件夹,工程文件的名字为lession,如图2所示:图2. 保存文件图3.单击保存后会弹出一个对话框,要求选择单片机的型号,可以根据使用的单片机来选择。
EDA实验报告学院:电气学院班级:电科1班学号:12401720126姓名:刘明煌实验三PWM信号发生器的设计1.实验目的(1)进一步熟悉掌握Quartus H。
(2)进一步熟悉和掌握GW48-CK或其他EDA实验开发系统的应用。
(3)学习和掌握VHDL进程语句和元件例化语句的使用。
2.实验内容设计并调试好PWM信号发生器电路PWM.VHD,并用GW48-CK或其他EDA实验开发系统进行硬件验证。
3.实验条件(1)开发软件:Quartus H。
(2)实验设备:GW48-CK EDA实验开发系统。
(3)拟用芯片:EP2C8Q208C8N。
4.实验设计1) 系统原理框图为了简化设计并便于显示,本信号发生器电路PWM的设计分为两个层次,其底层电路可,再由包括两个完全相同的加载加法计数器LCNT8而成。
PWM电路图2) VHDL程序PWM信号发生器的底层和顶层电路均采用VHDL文本输入,有关VHDL程序如下。
加载加法计数器LCNT8的VHDL源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LCNT8 ISPORT(CLK ,L D:IN STD_LOGIC;D:IN INTEGER RANGE 0 TO 255;CAO:OUT STD_LOGIC);END ENTITY LCNT8;ARCHITECTURE ART OF LCNT8 ISSIGNAL COUNT:INTEGER RANGE 0 TO 255;BEGINIF CLKEVENT AND CLK=1THENIF LD=1THEN COUNT<=D;ELSE C0UNT<=C0UNT+1;END IF;END IF;END PROCESS;PROCESS(COUNT) ISBEGINIF COUNT=255 THEN CAO<=1;ELSE CAO<=0END IF;END PROCESS;END ARCHITECTURE ART;PWM信号发生器的VHDL源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY PWM ISPORT(CLK:IN STD_LOGIC;A,B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);PWM:OUT STD_LOGIC);END ENTITY PWM;ARCHITECTURE ART OF PWM ISCOMPONENT LCNT8 ISPORT(CLK ,L D:IN STD_LOGIC;D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);CAO:OUT STD_LOGIC);END COMPONENT LCNT8;SIGNAL CAO1,CAO2:STD_LOGIC;SIGNAL LD1,LD2:STD_LOGIC;SIGNAL SPWM:STD_LOGIC;BEGINU1:LCNT8 PORT MAP(CLK=>CLK,LD=>LD1,D=>A,CAO=>CAO1);U2:LCNT8 PORT MAP(CLK=>CLK,LD=>LD2,D=>B,CAO=>CAO2);PROCESS(CAO1,CAO2)ISBEGINIF CAO1='1'THEN SPWM<='0';ELSIF CAO2'EVENT AND CAO2='1'THEN SPWM<='1';END IF;END PROCESS;LD1<=NOT SPWM;LD2<=SPWM;PWM<=SPWM;END ARCHITECTURE ART;3)工程编译后:4)仿真波形设置本程序包括两个程序,因此先进行底层的加载加法计数器 LCNT8的仿真,在进行顶层 PWM 的仿真,下图为 PWM 的 输入设置及可能结果估计图。
PWM信号发生器的设计实验/上机报告一、实验目的1、掌握序列发生器和检测器的工作原理;2、初步学会用状态机进行数字系统设计。
二、实验环境Quartus II 7.0 开发系统三、实验内容用状态机设计实现串序列检测器设计,可以用原理图输入法设计序列信号发生器,要求产生序列:0111010011011010;再进行检测设计,若检测到序列:11010则输出为“1”,否则输出为“0”。
并对其进行仿真和硬件测试。
四、实验过程本实验可以分为两部分来设计。
第一步设计序列信号发生器,在这里可以采用模16的计数器74LS161来产生模16的计数,并由它的4位输出可以产生16种状态,由此可以用来设计序列产生器,也可以采用状态机产生序列,本实验用状态机产生序列。
第二步设计序列检测器,这里用状态机设计,如果为真输出1,为假输出为0;第三步设计串行转并行输出,将序列并行输出在LED管上显示。
第四步是设计一个计数脉冲,记录出现所需要的序列的次数。
第五步是将所有模块连接起来,构成一个完整的序列发生和检测设计器。
实验代码:1、序列发生器library ieee;use ieee.std_logic_1164.all;entity xulie_produce is—序列产生电路port(clk,reset:in std_logic;comb_outputs:out std_logic);--序列输出end xulie_produce;architecture behav of xulie_produce istype fsm_st is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15);--状态设计signal current_state,next_state:fsm_st;beginreg:process(reset,clk)—主控时序进程beginif reset ='1'then current_state<=s0;elsif clk='1'and clk'event thencurrent_state<=next_state;end if;end process;com:process(current_state)—主控组合进程begincase current_state iswhen s0 => comb_outputs<='0';next_state<=s1; when s1 => comb_outputs<='1';next_state<=s2; when s2 => comb_outputs<='1';next_state<=s3; when s3 => comb_outputs<='1';next_state<=s4; when s4 => comb_outputs<='0';next_state<=s5; when s5 => comb_outputs<='1';next_state<=s6; when s6 => comb_outputs<='0';next_state<=s7; when s7 => comb_outputs<='0';next_state<=s8; when s8 => comb_outputs<='1';next_state<=s9; when s9 => comb_outputs<='1';next_state<=s10; when s10 => comb_outputs<='0';next_state<=s11; when s11 => comb_outputs<='1';next_state<=s12; when s12 => comb_outputs<='1';next_state<=s13; when s13 => comb_outputs<='0';next_state<=s14; when s14 => comb_outputs<='1';next_state<=s15; when s15 => comb_outputs<='0';next_state<=s0; end case;end process;end behav;2、序列检测器library ieee;use ieee.std_logic_1164.all;entity s_machine is—序列检测电路port(clk,reset:in std_logic;state_inputs:in std_logic;--状态转移控制comb_outputs:out std_logic);检测结果输出end s_machine;architecture behav of s_machine istype fsm_st is (s0,s1,s2,s3,s4,s5);signal current_state,next_state:fsm_st;beginreg:process(reset,clk)主控时序进程beginif reset ='1'then current_state<=s0;elsif clk='1'and clk'event thencurrent_state<=next_state;end if;end process;com:process(current_state,state_inputs)—主控组合进程begincase current_state iswhen s0 => comb_outputs<='0';if state_inputs='1' then next_state<=s1;else next_state<=s0;end if;when s1 => comb_outputs<='0';if state_inputs='1' then next_state<=s2;else next_state<=s0;end if;when s2 => comb_outputs<='0';if state_inputs='0' then next_state<=s3;else next_state<=s2;end if;when s3 => comb_outputs<='0';if state_inputs='1' then next_state<=s4;else next_state<=s0;end if;when s4 => comb_outputs<='0';if state_inputs='0' then next_state<=s5;else next_state<=s2;end if;when s5 => comb_outputs<='1';--检测到11010输出1 if state_inputs='0' then next_state<=s0;else next_state<=s1;end if;end case;end process;end behav;3、串行输出变并行输出library ieee;use ieee.std_logic_1164.all;entity shift is –串行变并行电路port(clk,load,a:in std_logic;din :out std_logic_vector(7 downto 0));--并行输出end shift;architecture behav of shift isbeginprocess(clk,load,a)variable reg8 :std_logic_vector(7 downto 0);beginif clk'event and clk='1'thenif load='1'then reg8(7 downto 1):=reg8(6 downto 0);--load为1时开始装载reg8(0):=a;end if;end if;din<=reg8;end process;end behav;4、计数器设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY CNTM IS –计数电路PORT (CLK,RST,EN:IN STD_LOGIC;a,b,c:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END CNTM;ARCHITECTURE behav OF CNTM ISsignal a1,b1,c1:std_logic_vector(3 downto 0); BEGINPROCESS (CLK,RST,EN)VARIABLE N :INTEGER RANGE 0 TO 1000;BEGINIF RST ='1' THEN N:=0;ELSIF CLK 'EVENT AND CLK='1' THENIF EN = '1' THENIF N<100 THEN N:=N+1;--设计为100计数ELSE N:=0;END IF;END IF;END IF;a1<=conv_std_logic_vector((N/100),4);b1<=conv_std_logic_vector(((N/10)mod 10),4); c1<=conv_std_logic_vector((N mod 10),4);a<=a1;b<=b1;c<=c1;END PROCESS;实验步骤:1、建立工作库文件和编辑设计文件(1)在D盘新建一个文件夹用来保存工程文件(2)打开QuartusⅡ8.0软件,选择菜单File->New->VHDL File,点击OK后在打开的界面下输入已经设计好的程序。
51单片机实现PWM波占空比可调单片机实现PWM波占空比可调的方法有很多种,下面将详细介绍一种常见的实现方式。
PWM(脉冲宽度调制)是一种常用的数字信号调制技术,可以通过改变脉冲的高电平时间来控制电平的占空比,从而实现对信号的调节。
在单片机中,可以使用定时器/计数器模块来生成PWM波,并通过改变计数器的值来调整占空比。
以AT89C51单片机为例,以下是实现PWM功能的步骤:1.设置定时器模式:选择合适的定时器模式来生成所需的PWM信号。
AT89C51单片机有定时器/计数器模块,可以选择模式2,该模式下定时器有自动重装载功能,能够方便地实现周期性的PWM波。
3. 设置PWM参数:根据需要调节的占空比,计算出所需的高电平时间和低电平时间。
通常,PWM波的高电平时间与低电平时间之和等于一个周期的时间(定时器的重装载值)。
例如,如果需要一个占空比为60%的PWM波,周期为20ms,则高电平时间为「20ms * 60% = 12ms」,低电平时间为「20ms - 12ms = 8ms」。
4.设置PWM引脚:选择一个合适的IO口作为PWM波的输出引脚,并在程序中设置该引脚为输出模式。
5.编写中断服务程序(ISR):针对定时器溢出中断(TOF)编写中断服务程序。
每当定时器溢出时,PWM波应该翻转输出引脚的电平,以实现所需的占空比。
6.初始化定时器和中断:在程序初始化阶段,将定时器设为所需的模式,设置中断向量表中的对应中断服务函数,并开启定时器中断。
7.主循环中设置占空比:在主循环中,通过改变定时器的初值来实现不同占空比的调节。
将计算得到的高电平时间和低电平时间分别赋值给定时器初值,即可实现占空比的调整。
通过上述步骤,我们可以实现占空比可调的PWM波。
在实际应用中,可以根据需要进行适当的优化和改进,例如增加输入口的设置,使得用户可以通过外部按键或旋钮来实时调整占空比,从而更加灵活地控制PWM波的输出。
总结:通过合适的定时器模式、初值设置和中断服务程序编写,配合适当的IO口配置和占空比计算,我们可以在单片机中实现占空比可调的PWM波。
机电高等专科学校电气工程系微控制器技术课程设计报告设计题目:占空比可调的PWM波形发生器微控制器技术课程设计任务书设计题目:占空比可调的PWM波形发生器设计时间: 2013.10.21——2013.10.27设计任务:在Proteus中画出原理图或使用实物,编制程序,实现以下功能:1、理解PWM的工作原理。
2、编制PWM程序,使用八段发光字符管显示占空比。
3、可与电机连接,驱动电机以不同的转速旋转。
背景资料:1、单片机原理与应用2、检测技术3、计算机原理与接口技术进度安排:1、第一天,领取题目,熟悉设计容,分解设计步骤和任务;2、第2天,规划设计软硬件,编制程序流程、绘制硬件电路。
3、第3天,动手制作硬件电路,或编写软件,并调试。
4、第4天,中期检查,书写设计报告。
5、第5天,提交设计报告,整理设计实物,等待答辩。
6、第6天,设计答辩。
题目:占空比可调的PWM波形发生器一、设计目的掌握PWM的工作原理;学会编制PWM程序,使用八段发光字符管显示占空比;并与电机连接,驱动电机以不同的转速旋转。
二、设计思路直流电机PWM控制系统的主要功能包括:实现对直流电机转速的调整,能够很方便的实现电机的智能控制。
主体电路:即直流电机PWM控制模块。
这部分电路主要由AT89C51单片机的I/O端口、定时计数器、外部中断扩展等调整直流电机的转速,能够很方便的实现电机的智能控制。
其间是通过AT89C51单片机产生脉宽可调的脉冲信号并输入到L298驱动芯片来控制直流电机工作的。
该直流电机PWM控制系统由以下电路模块组成:设计输入部分:这一模块主要是利用带中断的独立式键盘来实现对直流电机的加速、减速控制。
设计控制部分:主要由AT89C51单片机的外部中断扩展电路组成。
直流电机PWM控制实现部分主要由一些二极管、电机和L298直流电机驱动模块组成。
设计显示部分: LED数码显示部分,实现对PWM脉宽调制占空比的实时显示。
三、方案设计系统框架设计总体设计方案的硬件部分详细框图如图一所示。
实验2—占空比可调的PWM信号发生器第一篇:实验2—占空比可调的PWM信号发生器实验2占空比可调的PWM信号发生器一、实验任务基本部分:(1)用51单片机设计一个周期固定且占空比可调的PWM信号发生器。
(2)参数要求:a、信号周期为20ms,占空比范围1%-100%可调;b、用两个按键分别调整增量或减量;增量级别分为±1%和±5%两档可调,且要求可用按键选择;c、要求用两位LED数码管实时显示当前的占空比;d、51单片机晶振频率为12MHz。
扩展部分:(1)在基本部分设计的电路中,为输出的PWM信号增加光耦隔离输出电路;(2)为占空比调整过程增加超界声光报警电路;(3)可否改为脉宽固定而周期可改变的PWM信号发生器(简略说明,不要求设计编程)。
二、实验要求1、在PROTEUS中画出硬件设计图(AT89C51、12MHz晶振震荡电路、复位电路、按键调整电路、LED数码管显示电路、扩展部分电路)。
2、按任务要求用汇编或C编写程序并编译通过。
3、在PROTEUS下仿真通过。
三、报告要求1、任务分析、实现方案和程序流程图;2、硬件电路图;3、全部程序清单;4、打印出实验报告。
第二篇:信号发生器设计(推荐)模拟课程设计题信号发生器设计设计一个能够输出正弦波、三角波和矩形波的信号源电路,电路形式自行选择。
输出信号的频率可通过开关进行设定,具体要求如下:(1)输出信号的频率范围为100~800Hz,步进为100Hz。
(60分)(2)要求输出信号无明显失真,特别是正弦波信号。
(30分)评分标准:(1)范围满足设计要求得满分,否则酌情扣分。
(2)输出信号无明显失真可满分,有明显失真酌情扣分。
发挥部分(附加10分):进一步扩大输出信号范围和减小步进频率。
第三篇:VHDL实验四函数信号发生器设计.VHDL实验四:函数信号发生器设计设计要求:设计一个函数信号发生器,能产生方波,三角波,正弦波,阶梯波。
第1篇一、实验目的1. 理解调光系统的基本原理和组成。
2. 掌握PWM(脉冲宽度调制)调光技术。
3. 学习LED驱动器的工作原理和调光特性。
4. 实验并分析LED调光系统的性能和稳定性。
二、实验原理调光系统是通过改变LED的驱动电流或电压来调节其亮度的一种技术。
在实验中,我们主要采用了PWM调光技术,即通过调整脉冲的宽度来改变LED的平均亮度。
PWM调光的基本原理是:在LED的正向电压恒定的情况下,通过改变脉冲信号的占空比(即脉冲宽度与脉冲周期的比值),从而改变LED的平均电流,进而调节LED 的亮度。
三、实验器材1. 实验台2. LED灯珠3. LED驱动器LM34054. 电阻5. 信号发生器6. 示波器7. 光电传感器8. 电源9. 连接线四、实验步骤1. 搭建实验电路:根据实验要求,搭建PWM调光电路,包括LED灯珠、LED驱动器、电阻、信号发生器等。
2. 调整PWM信号:使用信号发生器产生PWM信号,调节占空比,观察LED的亮度变化。
3. 分析亮度与PWM占空比的关系:记录不同占空比下LED的亮度,分析亮度与PWM占空比的关系。
4. 测试PWM调光系统的稳定性:在稳定的环境下,长时间观察LED的亮度变化,测试PWM调光系统的稳定性。
5. 使用光电传感器进行调光实验:将光电传感器连接到电路中,根据环境光照强度自动调节PWM占空比,实现LED的自动调光。
五、实验结果与分析1. 亮度与PWM占空比的关系:实验结果显示,LED的亮度与PWM占空比呈线性关系。
当占空比增大时,LED亮度增加;当占空比减小时,LED亮度降低。
2. PWM调光系统的稳定性:经过长时间观察,PWM调光系统表现出良好的稳定性,LED亮度基本保持不变。
3. 光电传感器调光实验:实验结果表明,光电传感器能够根据环境光照强度自动调节PWM占空比,实现LED的自动调光。
六、实验结论1. PWM调光技术是一种简单、有效的LED调光方法。
题目:占空比可调的信号发生器初始条件:1. Protues软件;2. 课程设计辅导资料:“占空比可调的信号发生器设计与应用”、“电路设计技术与应用”等;3. 先修课程:模拟电子技术、数字电子技术、Protues电路设计教程及单片机原理及应用等课程要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1. 课程设计时间:1周;2. 课程设计内容:用4个按键分别控制输出信号的占空比和频率(用示波器观察输出波形),显示占空比范围0%~100%,频率范围50Hz~500Hz,实时测量输出信号的占空比和频率值。
3. 本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表),并对实验结果进行分析和总结;4. 课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括:①目录;②设计原理和方法;③系统硬件线路设计图;④程序框图;⑤资源分配表;⑥源程序⑦性能分析⑧课程设计的心得体会(至少500字);⑨参考文献;时间安排:指导教师签名:年月日系主任(或责任教师)签名:年月日目录一.引言 (2)二.设计原理和方法 (1)2.1.方案的设计与选择 (3)2.2.设计原理 (4)三.系统硬件电路设计图 (5)四.程序框图 (5)4.1.主程序框图 (5)4.2.系统初始化程序 (6)4.3.定时器中断程序框图 (7)4.4.键盘扫描程序框图 (8)五.源程序 (7)六.性能分析 (11)6.1.定时器中断分析 (11)6.2.性能分析 (11)七.心的体会 (12)八.参考文献 (13)九.课程设计成绩评定表 (14)一.引言单片机集成度高,功能强,可靠性高,体积小,功耗低,使用方便,价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,几乎无处不在,无所不为。
1设计原理和方法1.1方案的设计与选择方案一:采用分立器件实现非稳态的多谐振荡器,然后根据具体需要加入积分电路等构成矩形等波形发生器。
这种信号发生器输出频率范围窄而且电路参数设定较繁琐,其频率大小的测量往往需要通过硬件电路的切换来实现,操作不方便。
方案二:用集成芯片实现函数信号发生器。
这种信号发生器。
这种信号发生器能产生多种波形信号,可以达到较高频率,但电路复杂并且不易调试。
方案三:采用单片机编程的方法实现。
该方法可以通过编程,来控制方波信号输出的频率和幅度,并且只要改变程序的相关参数,便可以改变输出波形的频率和占空比。
由于编程的方法产生的是数字信号,所以信号的精度可以做到很高。
并且电路简单。
方案四:利用专用直接数字合成DDS芯片实现函数信号发生器。
这种信号发生器能产生任意波形并且达到很高的频率,但成本较高。
综合成本和性能等多方面因素,本例采用第三种方法,即采用单片机编程的方法实现占空比可调,频率可调的方波信号发生器。
1.2设计原理AT89C51单片机是真个波形信号发生器的核心,通过程序的编写和执行,可以产生可以调节的方波,并受到按键的控制,增减频率和占空比。
并且在液晶上显示出来。
定时器0工作再方式1下,决定输出信号的频率,定时器1工作再方式1下,决定输出信号的占空比。
按键1和2决定信号的输出频率,按键1用于增大信号的频率,按一下就增加10HZ,当增减大500HZ时,就归为50HZ。
按键2用于减小输出信号的频率,按一次键,输出信号的频率减少10HZ,当减少到 50HZ时,频率就归于500.按键3和4决定信号的占空比,按键3用于增加信号的占空比,按下一次键,占空比就增加1,上限值为99,当在此按键是,就让占空比归1.按键4用于减小信号的占空比,按下一次键,占空比就减1,下限值为1,当再次按键时,就让占空比回归到99.通过上面的步骤,可以实现占空比和频率的可调。
液晶则选用LCD032L,可直观的看到频率和占空比。
前言脉冲宽度调制(Pulse Width Modulation.PWM)控制技术以其控制简单、灵活和动态响应好的优点而成为电力电子技术和模拟信号数字传输通信领域最广泛应用的控制方式,因此研究基于PWM技术的脉冲宽度及周期可调的信号发生器具有十分重要的现实意义。
本文主要讨论了脉冲占空比可调信号的产生方法,采用三种不同的方案使用VHDL语言编程实现了信号的产生。
其中方案一的原理是分频,即用计数器计算时钟脉冲的上升沿个数,再通过输出电平反复翻转得到计数个数(脉冲宽度)可控的PWM 信号;方案二的原理是锯齿波比较法,首先编程产生阶梯状的锯齿波,再通过锯齿波与输入占空比值(数值可控的直线)比较产生脉冲宽度随输入占空比数值变化的PWM 信号;方案三是用有限状态机产生有用信号,首先定义两个状态,再通过计数器值与输入占空比值比较控制状态的切换,产生PWM信号。
本文详细介绍方案二和方案三两种方法。
通过使用QuartusII9.0软件采用VHDL语言编程并用功能仿真证实了上文提到的三种PWM信号产生方案都是可行的,都能产生切实可用的PWM信号,三种方案中均可以通过修改输入端口占空比来控制产生信号的脉宽,且可以通过在程序中修改计数器的计数上限和分频模块的分频比改变信号的周期及频率,实现了多参数可调,使整体设计具有灵活的现场可更改性和较好的可移植性。
且实现功能的程序简单易懂,设计过程中思路阐述清晰,流程介绍明了,且程序易于修改,可读性好。
第一章设计要求1.1 研究课题PWM信号发生器的研制1.2设计要求用CPLD可编程模块产生下列信号(特殊芯片:EPM570T100C5)(1)采用VHDL编写相关程序,PWM信号的工作频率为500Hz(1000Hz);(2)时钟信号通过分频器后,由输入开关量控制占空比可调。
第二章系统组成及工作原理本次设计采用的是Altera公司开发的QuartusII设计平台,设计采用特殊芯片EPM570T100C5进行仿真,在原理设计方面,本设计采用自顶向下、层次化、模块化的基本程序设计思想,这种设计思想的优点符合人们先抽象后具体,先整体后局部的思维习惯,其设计出的模块修改方便,不影响其他模块,且可重复使用,利用率高。
一、题义分析及解决方案1.1、课程设计名称及内容:用STAR ES598PCI单板开发机,设计一款PWM信号产生器,要求能产生频率和占空比可调的PWM信号,采用按键调节频率和占空比。
设计要求:(1)频率可调范围为1KHZ-100KHZ;(2)预置生成的频率为20KHZ,占空比为50%;(3)频率调节采用两个按键,分别为加和减,步进值为10KHZ;(4)占空比调节采用两个按键,分别为加和减,步进值为10%;(5)生成的频率信号可以由示波器观察;(6)同时显示当前频率值和占空比的值。
1.2、题意需求分析根据本设计给定的内容和要求,可以得出以下结论:本设计中需要用到的主要有两种芯片,一种用来扫描处理按键,另一种则用来调节PWM信号的频率和占空比,并作为计时器使用,最后是用于显示的七段LED数码显示管和示波器。
其中最核心的是要实现频率和占空比的调节,占空比就是输出的PWM中,高电平保持的时间与该PWM的时钟周期的时间之比,故改变占空比需要通过改变时钟脉冲中高电平的脉冲宽度来实现。
频率则是周期的倒数,若要改变频率,则需改变脉冲的时钟周期。
这里我们考虑到要用到可编程计数器8253的方式0和方式1,8253中方式0时一次中断计数,方式1是可编程触发器,我们用方式的OUT0的输出低电平来触发方式1的GATE1信号的高电平,此时我们将计算出的高低电平计数初值再次循环装入,这样我们便实现了改变输入的电压高电平,即实现了占空比的调节。
由于8253的方式0只是实现一次计数,如果不重新装入初值就不会再次触发,所以要实现频率的调节只需要每次都循环装入初值就可以了。
根据题意分析可知,该实验需设置四个按键,分别用来实现加减频率和占空比,故需用到输入数据的工具和与其配套使用可以实现扫描处理按键功能的芯片,分别用来输入数据和处理按键。
最后需要的便是实现显示功能的LED数码显示管和示波器,其中LED数码显示管的前四位是用来显示频率的数值,后四位用来显示占空比的数值,示波器则用来显示脉冲波形和步进值的。
综合实验二PWM波形的发生器的设计一、系统设计与理论分析1.用ADC0809进行A/D转换,采集到数字信号D2.在P1.1上产生周期T为1kHz的PWM波形,其中脉冲宽度Tao由数字信号D决定(如当采集到的数字信号为80H时,占空比为50%,依此类推)本实验是先采集模拟信号,然后将模拟信号转换成数字信号,经CPU处理,用数字信号来决定CPU产生的波形的占空比,并将占空比显示出来。
二、硬件设计本系统采用51芯片控制,使用可变电阻作为传感器,通过ADC0809采集模拟信号,将模拟信号转换成数字信号给51芯片处理,再通过8155扩展IO口,显示模块采用数码管,与8155相连,51单片机通过8155控制数码管的显示。
本次试验器材采用的是试验箱,各模块的芯片选择已经固定,只需将所用模块线路搭连好即可。
本实验使用74LS164串转并来实现数码管的显示,减少了IO口的使用数量,使系统有更多的IO口实现其他功能的扩张。
三、软件设计首先将8155的模式通过控制字地址传入8155,接着对8051的定时中断进行初始化设置,将从传感器上通过AD转换的数据送到8051,赋值给Tao,接着通过8051将Tao值拆分,然后将拆分的数据通过8155的IO口串行输出,再通过74LS164将串行数据转换成并行数据,使与74LS164并行口相连的八段数码管显示出数据。
另一方面,定时器每隔3ns对Tao与T进行比较,并在P1.1上输出相应的值。
四、系统测试实验仪器使用的是实验箱,测试用的仪器仪表实验室均有提供,而软件代码老师已经给出,测试部分是本次实验主要要做的部分。
由于实验箱好坏程度不同,在硬件方面,判断其好坏花去不少时间,实验器材换了又换,结果还是存在一定问题。
而软件方面,keil的安装时常出现奇形怪状的问题,经老师检查,未查出原因致使电脑换了一台又一台,能否成功安装上keil软件的概率无法估计。
总而言之,在到达这测试的部分时已花去相当一大部分时间,因此,测试数据不够完善,存在一些问题未解决。
实验2 占空比可调的PWM信号发生器
一、实验任务
基本部分:
(1)用51单片机设计一个周期固定且占空比可调的PWM信号发生器。
(2)参数要求:
a、信号周期为20ms,占空比范围1%-100%可调;
b、用两个按键分别调整增量或减量;增量级别分为±1%和±5%两档可调,
且要求可用按键选择;
c、要求用两位LED数码管实时显示当前的占空比;
d、51单片机晶振频率为12MHz。
扩展部分:
(1)在基本部分设计的电路中,为输出的PWM信号增加光耦隔离输出电路;(2)为占空比调整过程增加超界声光报警电路;
(3)可否改为脉宽固定而周期可改变的PWM信号发生器(简略说明,不要求设计编程)。
二、实验要求
1、在PROTEUS中画出硬件设计图(AT89C51、12MHz晶振震荡电路、复位电路、
按键调整电路、LED数码管显示电路、扩展部分电路)。
2、按任务要求用汇编或C编写程序并编译通过。
3、在PROTEUS下仿真通过。
三、报告要求
1、任务分析、实现方案和程序流程图;
2、硬件电路图;
3、全部程序清单;
4、打印出实验报告。