
看看这个,单片机用的是ADUC848,AD转换输出正弦波,和PWM原理类似。
实验八 D/A转换实验
一、实验目的
1.了解芯片内部D/A转换模块设置方法。
2.了解D/A转换原理。
3 了解Keil软件中逻辑分析仪的使用方法。
4 了解用单片机产生正弦信号的基本方法。
二、实验原理
ADuC848中包含一个12位电压输出DAC模块,DAC模块中寄存器的设置如下:
DAC控制寄存器:DACCON
NC表示未定义;
DACPIN为DAC输出引脚选择;
1 = 设置DAC输出引脚为Pin 13 (AINCOM);
0 = 设置DAC输出引脚为Pin 14 (DAC);
DAC8为DAC转换位数模式选择位;
1 = 设置DAC为8位转换;
0 = 设置DAC为12位转换;
DACRN为DAC输出范围选择位;
1 = 设置DAC的输出范围为 0 V - AVDD;
0 = 设置DAC的输出范围为 0 V - 25 V (VREF);
DACCLR为DAC清除位;
1 = 设置DAC为正常 *** 作模式;
0 = 复位DAC数据寄存器DACL/H to 0;
DACEN为DAC使能位
1 = 使能DAC转换;
0 = 不使能DAC转换;
DAC数据寄存器:DACH/L
DACH为12位转换的高位数据寄存器
四、程序流程图和源程序
1、主程序流程图
2、源程序清单
DACCON EQU 0xfD ;定义模数转换控制器
DACH EQU 0xfc ;定义模数转换数据寄存器高8位
DACL EQU 0xfb ;定义模数转换数据寄存器低8位
ORG 0000H
LJMP MAIN
ORG 0200H
MAIN:MOV DACCON , #0fH; DAC operation
CLR A ;
MOV DACH , A ;模数转换高八位清零
PRG3:MOVR0,#09H;正弦波
MOVR4,#40H
LP11:MOV A,R0
MOVCA,@A+PC
MOV DACL,A ;2
ACALL DELAY ;2
INCR0;1
DJNZR4,LP11 ;2
SJMP PRG3 ;2
DATA0:
DB 80H,8CH,98H,0A5H,0B0H,0BCH,0C7H,0D1H,0DAH,0E2H,0EAH
DB 0F0H,0F6H,0FAH,0FDH,0FFH,0FFH,0FDH,0FAH,0F6H,0F0H
DB 0EAH,0E2H,0DAH, 0D1H,0C7H,0BCH,0B0H,0A5H,98H,8CH
DB 80H, 7FH,73H,67H,5AH,4FH,43H,38H,2EH, 25H,1DH,15H
DB 0FH,09H,05H,02H,00H, 00H,02H,05H,09H,0FH,15H
DB 1DH,25H,2EH,38H,43H,4FH,5AH,67H,73H,7FH
RET
DELAY: MOV R6,#10H
MOV R7,#0A1H
DELAYLOOP: ;延时程序
DJNZ R6,DELAYLOOP
DJNZ R7,DELAYLOOP
RET
END
四、实验板插针配置:
无需插针配置,注意DAC是从CONDACOUT1端子输出,可用示波器观察DAC输出波形。若产生失真情况,请检查开发板DA输出端LM358运算放大器的放大倍数,适当更改所查函数表的范围。
五、思考题
1、改变程序,使能添加输出锯齿波;
2、改变程序,使输出添加三角波;
3、改变程序,使输出添加方波;
4、改变程序,并制作一个简单的函数发生器
对于200CPU,如224XP,这个控制是开环的,不能闭环。最简单的办法是使用使用菜单”工具“中的”位置控制向导“,选"配置S7-200 PLC 内置的PTO/PWM *** 作,一步步按需要往下完成配置。
配置完成后生成会在”程序块“中生成”向导“,最简单的应用就是调用”PTOX_MAN",在“SPEED"端输入需要的脉冲数,使能该块,”RUN“置1,从配置的Q0X(0或者1),就可以输出能脉冲串了。
如果需要,进行电平转换后与伺服驱动器或者步进电机驱动器连接。
扩展资料:
(1)脉冲输出(PLS)指令被用于控制在高速输入(Q00和Q01)中提供的“脉冲串输出”(PTO)和“脉宽调制”(PWM)功能。PTO提供方波(50%占空比)输出,配备周期和脉冲数用户控制功能。PWM提供连续性变量占空比输出,配备周期和脉宽用户控制功能。
(2) S7-200有两台PTO/PWM发生器,建立高速脉冲串或脉宽调节信号信号波形。一台发生器指定给数字输出点Q00,另一台发生器指定给数字输出点Q01。一个指定的特殊内存(SM)位置为每台发生器存储以下数据:一个控制字节(8位值)、一个脉冲计数值(一个不带符号的32位值)和一个周期值及脉宽值(一个不带符号的16位值)。
(3) PTO/PWM发生器和过程映像寄存器共用Q00和Q01。PTO或PWM功能在Q00或Q01位置现用时,PTO/PWM发生器控制输出,并禁止输出点的正常使用。输出信号波形不受过程映像寄存器状态、点强迫数值、执行立即输出指令的影响。PTO/PWM发生器非现用时,输出控制转交给过程映像寄存器。
(4)过程映像寄存器决定输出信号波形的初始和最终状态,使信号波形在高位或低位开始和结束。脉冲串(PTO)功能提供方波(50%占空比)输出或指定的脉冲数和指定的周期。脉宽调制(PWM)功能提供带变量占空比的固定周期输出。
(5)每台PTO/PWM发生器有一个控制字节(8位)、一个周期值和脉宽值(不带符号的16位值)及一个脉冲计数值(不带符号的32位值),这些值全部存储在特殊内存( SM)区域的指定位置。一旦设置这些特殊内存位的位置,选择所需的 *** 作后,执行脉冲输出指令( PLS)即启动 *** 作。该指令使S7-200读取SM位置,并为PTO/PWM发生器编程。
(6)通过修改SM区域中(包括控制字节)要求的位置,可以更改PTO或PWM的信号波形特征,然后执行PLS指令。可以在任意时间向控制字节(SM677或SM777)的PTO/PWM启用位写入零,禁用PTO或PWM信号波形的生成,然后执行PLS指令。
参考资料来源:百度百科_西门子PLC
本书以掌握国内外最流行的电子设计自动化(EDA)技术为教学目标,以
培养学生的设计和应用开发能力为主线,系统地介绍EDA应用技术。
全书在取材和编排上,内容新颖、循序渐进,并注重理论联系实际。全
书共10章,主要内容包括VHDL硬件描述语言、Quartus Ⅱ等EDA工具软件、
可编程逻辑器件、实验开发系统、应用实例和综合设计实例。第4章对大量
常规的数字电路做出了VHDL描述,第7章详细阐述了9个典型数字系统的设计
方法,第9章选取了16个实验实例,第10章给出了4个代表性的全国大学生电
子设计竞赛赛题设计实例。读者完全可以通过这些实际 *** 作,很好地掌握:
EDA的开发设计方法。每章后面附有小结和习题,便于读者学习和教学使用
。为方便教师教学,本书配有电子教案。
本书可作为高职高专及本科院校电子信息、电气、通信、自动控制、自
动化和计算机类专业的EDA技术教材,也可作为上述学科或相关学科工程技
术人员的参考书。还可作为电子产品制作、科技创新实践、EDA课程设计和
毕业设计等实践活动的指导书。
本书目录
第1章 EDA技术概述
1.1 EDA技术及其发展
1.1.1 EDA技术的涵义
1.1.2 EDA技术的发展史
1.2 EDA设计流程
1.3 EDA技术的主要内容及主要的EDA厂商
1.3.1 EDA技术的主要内容
1.3.2 主要EDA厂商概述
1.4 常用的EDA工具
1.5 EDA技术的发展趋势
1.5.1 可编程器件的发展趋势
1.5.2 软件开发工具的发展趋势
1.5.3 输入方式的发展趋势
1.6 EDA技术的应用
1.6.1 EDA技术的应用形式
1.6.2 EDA技术的应用场合
本章小结
思考题和习题
第2章 VHDL硬件描述语言
2.1 VHDL概述
2.1.1 常用硬件描述语言简介
2.1.2 VHDL及其优点
2.1.3 VHDL程序设计约定
2.1.4 VHDL程序设计举例
2.2 VHDL程序基本结构
2.2.1 实体
2.2.2 结构体
2.2.3 库
2.2.4 程序包
2.2.5 配置
2.3 VHDL语言要素
2.3.1 VHDL文字规则
2.3.2 VHDL数据对象
2.3.3 VHDL数据类型
2.3.4 运算 *** 作符
2.3.5 VHDL语言结构体的描述方式
2.4 VHDL顺序语句
2.4.1 等待语句和断言语句
2.4.2 赋值语句
2.4.3 转向控制语句
2.4.4 子程序调用语句
2.4.5 返回语句
2.5 VHDL并行语句
2.5.1 进程语句
2.5.2 块语句
2.5.3 并行信号赋值语句
2.5.4 并行过程调用语句
2.5.5 元件例化语句
2.5.6 生成语句
本章小结
思考题和习题
第3章 Quartus Ⅱ软件及其应用
3.1 Quartus Ⅱ的使用及设计流程
3.1.1 Quartus Ⅱ的图形编辑输入法
3.1.2 Quartus Ⅱ的文本编辑输入法
3.2 Quartus Ⅱ设计正弦信号发生器
3.2.1 创建工程和编辑设计文件
3.2.2 编译
3.2.3 正弦信号数据ROM定制
3.2.4 仿真
3.2.5 测试
3.2.6 配置器件
3.3 MATLAB/DSP Builder设计可控正弦信号发生器
3.3.1 建立设计模型
3.3.2 Simulink模型仿真
3.3.3 SignalCompiler编译
3.3.4 使用Quartus Ⅱ实现时序仿真
3.3.5 使用Quartus Ⅱ进行硬件测试
与硬件实现
本章小结
思考题和习题
第4章VHDL应用实例
4.1 组合逻辑电路设计
4.1.1 基本门电路
4.1.2 译码器
4.1.3 编码器
4.1.4 数值比较器
4.1.5 数据选择器
4.1.6 算术运算电路
4.1.7 三态门及总线缓冲器
4.2 时序逻辑电路设计
4.2.1 时钟信号和复位信号
4.2.2 触发器
4.2.3 寄存器和移位寄存器
4.2.4 计数器
4.2.5 序列信号发生器和检测器
4.3 存储器设计
4.3.1 只读存储器ROM
4.3.2 随机存储器RAM
4.4 状态机设计
4.4.1 摩尔型状态机
4.4.2 米立型状态机
本章小结
思考题和习题
第5章 大规模可编程逻辑器件
5.1 可编程逻辑器件概述
5.2 简单可编程逻辑器件
5.3 复杂可编程逻辑器件
5.3.1 CPLD的基本结构
5.3.2 Altera公司的器件
5.4 现场可编程门阵列
5.4.1 FPGA的整体结构
5.4.2 Xilinx公司的’FPGA器件
5.4.3 FPGA的配置
5.5 在系统可编程逻辑器件
5.5.1 ispLsI/pLSI的结构
5.5.2 Lattice公司ispLSI系列器件
5.6 FPGA和CPI。D的开发应用选择
5.6.1 FPGA和CPL|D的性能比较
5.6.2 FPGA和CPLD的开发应用选择
本章小结
思考题和习题
第6章 常用印A工具软件
6.1 Altera MAX+plus Ⅱ的使用
6.1.1 MAX+plus Ⅱ功能简介
6.1.2 MAX+plus Ⅱ设计流程
6.1.3 MAX+plus Ⅱ设计举例
6.2 Xilinx Foundation的使用
6.2.1 Foundation设计流程
6.2.2.Foundation设计举例
6.3 ModelSim的使用
6.3.1 ModelSim的使用方法
6.3.2 ModelSim与MAX-+Iplus Ⅱ的接口
6.3.3 ModelSim交互命令方式仿真
6.3.4 ModelSim批处理工作方式。
本章小结
思考题和习题
第7章 EDA技术综合设计应用
7.1 数字闹钟的设计
7.1.1 系统的设计要求
7.1.2 系统的总体设计
7.1.3 闹钟控制器的设计
7.1.4 译码器的设计
7.1.5 键盘缓冲器(预置寄存器)的设计
7.1.6 闹钟寄存器的设计
7.1.7 时间计数器的设计
7.1.8 显示驱动器的设计
7.1.9 分频器的设计
7.1.10 系统的整体组装
7.1.11 系统的硬件验证
7.2 多功能信号发生器的设计
7.2.1 设计要求
7.2.2 设计实现
7.2.3 系统仿真
7.3 序列检测器的设计
7.3.1 设计思路
7.3.2 VHDL程序实现
7.3.3 硬件逻辑验证
7.4 交通灯信号控制器的设计
7.4.1 设计思路
7.4.2 VHDL程序实现
7.4.3 硬件逻辑验证
7.5 空调系统有限状态自动机的设计
7.5.1 设计思路
7.5.2 VHDL程序实现
7.6 电梯控制系统的设计
7.6.1 设计要求
7.6.2 设计实现
7.6.3 系统仿真
7.7 步进电机控制电路的设计
7.7.1 步进电机的工作原理
7.7.2 驱动电路的组成及VHDL实现
7.8 智力竞赛抢答器的设计
7.8.1 设计思路
7.8.2 VHDL程序实现
7.9 单片机与FPGA/CPLD总线接口的设计
7.9.1 设计思路
7.9.2 VHDL程序实现
本章小结
思考题和习题
第8章 EDA实验开发系统
8.1 GW48型EDA实验开发系统原理与使用
8.1.1 系统性能及使用注意事项
8.1.2 系统工作原理
8.1.3 系统主板结构与使用方法
8.2 GW48实验电路结构图
8.2.1 实验电路信号资源符号图说明
8.2.2各实验电路结构图特点与适用范围简述
8.3 GW48系统结构图信号名与芯片引脚对照表
8.4 GWDVPB电子设计竞赛应用板 使用说明
8.5 GW48型EDA实验开发系统使用实例
本章小结
思考题和习题
第9章 EDA技术实验
实验1 8位全加器的设计
实验2 组合逻辑电路的设计
实验3 触发器功能的模拟实现
实验4 计数器的设计
实验5 计数译码显示电路
实验6 数字钟综合实验
实验7 序列检测器的设计
实验8 简易彩灯控制器
实验9 正负脉宽数控调制信号发生器的设计
实验10 数字秒表的设计
实验11 交通灯信号控制器的设计
实验12 模拟信号检测
实验13 4位十进制频率计设计
实验14 VGA显示器彩条信号发生设计
实验15 A/D转换控制器的设计
实验16 音乐发生器的设计
第10章 EDA技术在全国大学生电子设计竞赛中的应用
10.1 等精度频率计设计
10.1.l 系统设计要求
10.1.2 系统组成
10.1.3 工作原理
10.1.4 FPGA开发的VHDL设计
10.1.5 系统仿真
10.1.6 系统测试与硬件验证
10.1.7 设计技巧分析及系统扩展思路
10.2 测相仪设计
10.2.1 测相仪工作原理及实现
10.2.2 系统测试
10.3 基于DDS的数字移相正弦信号发生器设计
10.3.1 系统设计要求
10.3.2 系统设计方案
10.3.3 DDS内部主要模块的VHDL程序实现
10.3.4 系统仿真与硬件验证
10.3.5 设计技巧分析与系统扩展思路
10.4 逻辑分析仪设计
10.4.1 设计任务
lO.4.2 设计基本要求
10.4.3 设计实现
void timer0_ini(); //写个函数,设置定时器周期为02毫秒。中断使能
unsigned char t0=0; // 定义一个全局变量
void int_timer0() // 定时器0的中断服务程序,根据你的编译器去改,中断向量,声明规则。
{
if((t0==0)||(t0==1)) P11=1;
if(t0>1) p11=0;
if(++t0==5) t0=0;
}
你还是先去看看什么叫PWM吧
PWM就是脉宽调制电路,PWM就是用来调压控流的,你还需要一个ADC来进行充电设备的电压电流采集,PWM输出要加个三级管或场效应管来做驱动。推荐使用AVR单片机,如ATmega8,里面有4路10位ADC,2路8路ADC((DIP封装的),有硬件PWM,用它做刚好用。
PWM输出端接一个电阻,然后接一个GTR管,如IRF540
100V 27A 125W NMOS场效应
PWM么,试试这个
module pwm_test(
input clk , //时钟输入,可在外部设置不同时钟
input rst_n , //低电平复位
input [7:0] f , //频率控制,最大255
input [7:0] d , //占空比控制字,上限100
output pwm_out //PWM输出
);
reg [17:0] count ; //计数
always @(posedge clk or negedge rst_n) begin
if(~rst_n) begin
count <= 0 ;
end
else if(count >= 17'd100_000) //计数到100K清零
count <= 0 ;
else
count <= count + f; //每次累加频率值
end
assign pwm_out = (count < d1000) 1:0 ;//PWM输出
endmodule
思路就是倍频累加,和DDS的原理一样。剩下的外围程序自己想一下吧。
例如输入时钟100M,频率设为20的时候,计数100K,每次加20,输出频率就是100M/(100K/20)=20K,占空比你一看就明白
至于输入时钟,用Tools->Megawizard Plug-In Manager->I/O->ALTPLL模块设置PLL分频,倍频即可
我有调试成功的PWM程序,留下邮箱我发给你
将小直流调速器的旋钮改成程序电控需要进行以下步骤:
1 确定需要控制的参数:例如电机的转速、电流等。
2 选择合适的控制器:根据需要控制的参数选择合适的控制器,例如PID控制器、模糊控制器等。
3 连接控制器和电机:将控制器与电机连接,通常需要使用电缆连接。
4 编写控制程序:根据控制器的要求编写控制程序,将需要控制的参数输入程序中。
5 调试程序:在控制器和电机连接后,需要进行程序调试,确保控制器能够正确地控制电机的转速和电流。
需要注意的是,这个过程需要一定的电子技术和编程知识,如果您不熟悉这些知识,建议寻求专业人士的帮助。
以上就是关于STC单片机PWM编程!全部的内容,包括:STC单片机PWM编程!、西门子PLC脉冲指令、eda设计正负脉宽数控调制信号发生器等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)