波形好坏跟你的表是直接相关的。程序偶没有,当然,还和da的位数直接相关做一个表,然后循环查表输出就行了
答:⑴当同步变压器二次侧电压U2处于正半周,且U2的数值大于电属器电压U2时,二级管V2导通并对电容器C充电。由于充电时间常数很小,电容器电压很快达到 U2,当U2由正的最大值下降时,由于电属器电压下降很慢,二极管V2因承受反向电压而截而。之后电容经R1缓慢放电,直到下一周U1超过V2后,二级管V2重新导通,电容器再次充电。为此周而复始,就在C、R1而端形式锯齿形。
⑵锯齿被电压使V1的发射极和V1反向偏置,而控制电压Uc使它们正向偏置。因此当控制电压Uc大于锯齿波电压UR1时,V1导通其集电极回路的脉冲变压器二次侧输出脉冲。当Uc小于UR1时V1截止。只要改变控制电压Uc的大小,就能改变三级管导通的时刻。从而实现了脉冲移相控制。
code SEGMENT
ASSUME CS:code
start: MOV CX, 8000H ;波形个数
MOV AL, 0 ;锯齿谷值
next: MOV DX, port1 ;打开第一级锁存
OUT DX, AL
MOV DX, port2 ;打开第二级锁存
OUT DX, AL
CALL delay ;控制锯齿波的周期
INC AL ;修改输出值
CMP AL, 0CEH ;比较是否到锯齿峰值
JNZ next ;未到跳转
MOV AL, 0 ;重置锯齿谷值
LOOP next ;输出个数未到跳转
MOV AH, 4CH ;返回DOS
INT 21H
;子程delay (略)
code ENDS
END start
基本知识点: 1、定时器 2、PWM 方波、三角波的实现方法: 1、PWM固定占空比1:1,实现对称方波输出 2、方波后连接积分电路,可将方波变为同频率的三角波。实现以上功能较容易,且可实现的频率范围较宽。锯齿波实现方法:锯齿波实现方法稍显麻烦,不过硬件电路原理与三角波类似。区别在于锯齿波在一个周期内输出若干个占空比不同的方波,每个方波的占空比除了最后一个点之外,呈线性递增。这样出来的信号还不是锯齿波,需要经过积分电路才能转变为锯齿波。由于一个周期需要输出多个方波(个数越多,精度越高),因此,锯齿波的频率不能太高。 锯齿波个人建议采用AD或专用的信号发生器电路。
你光看程序当然是看不明白咯!咱一步一步说吧
首先0FEFH这是一个地址,如果我分析的没错的话,这个地址连接的应该是DA转换器,将数字信号转换成模拟信号的。
A是累加器,8未的单片机累加器应该最多是0FFH 也就是255,
LOOP循环里,第一个循环将#00H送到DA转换器里面(MOVX,@DPTR,A这条语句实现的,第一次循环的时候A里面的值是#00H),DA转换器将#00H这个数字信号转换成模拟信号(#00H对应的是0V,#01H对应的是5/255*1V,#02H对应的是5/255*2V以此类推)。
DA转换器实现DA转换之后,我们要给锯齿波一个时间信号来控制锯齿波的周期,靠的是MOV R0,#DATA和DJNZ R0,$这两条语句实现的,其中#DATA这个数值由你自己设置(可以在#00H和#FFH中任选),实际上的锯齿波周期就是#DATA*255*单片机的时钟。
第二个循环就送#01H给DA 第三个周期送#02H………… 一直送到#FFH。
DA转换器就根据送数据的不同输出不同的电压,最终形成锯齿波。
写的有点乱不知道你能不能看懂!
单片机锯齿波的产生的介绍就聊到这里吧,感谢您花时间阅读,谢谢。
本文标签:单片机锯齿波的产生