当前位置:网站首页>TLC549Proteus仿真&Sallen-Key滤波器&AD736Vrms到DC转换&Proteus查看51寄存器值

TLC549Proteus仿真&Sallen-Key滤波器&AD736Vrms到DC转换&Proteus查看51寄存器值

2022-07-27 10:59:00 char~lie

如题,本篇博客是讲了4块内容,但是只通过一个小实验就解决了!
原来是有道作业题说要用51和TLC549测低通电压有效值,寻思着要用有效值到DC转换,所以用了AD736芯片仿真。

Sallen-Key低通滤波原理

在这里插入图片描述
传函:是个二阶的低通滤波
在这里插入图片描述

参数选择和电路连接

稍微提一下,不知道是因为仿真原因还是真是这样,输入1Hz的信号AD736就仿不出来,加了10Hz就好了,然后RC选的是1k和10uF,按照上面的公式算出来就是w0=100(rad/s)。

然后输入正弦,幅值1V,滤波输出幅值0.7V左右,有效值0.5V左右。
在这里插入图片描述
AD736的接法如上。
电压探针上看确实是0.5V左右。
后面就是AD736输出端接AIN,P1.5接DO,P1.6接SCK,P1.7接CS非,两个电容是滤波用的。
在这里插入图片描述
整个电路差不多这样:
在这里插入图片描述

仿真过程和结果

用Proteus查看寄存器很简单,因为我这里是循环运行,不需要运行到哪一步停下来,所以先点左下方的运行,然后点调试(debug)下拉列表里的暂停,然后移动光标到8051CPU这里:
在这里插入图片描述
跳出来的东西里选寄存器(Register),当然你要看其它可以点别的很方便。
转换结果理论上是1AH:
在这里插入图片描述
在这里插入图片描述
转换结果我是存在R6,可以看到仿真的结果和计算一毛一样,实验完成。

TLC549时序

书上说CS非拉低之后要等两个上升沿,我就信了,结果一开始我做出来的结果是68H,刚好是1AH的4倍,因为差了两个0,就是等这两个上升沿等出来的。
其实CS非拉低之后SCK高电平直接读8位就好了,CS非拉高之后需要等36个周期(书上说的,可能不一定,但是结果是没问题)。

程序

汇编写时序比C方便,C的话在集成上略微比汇编强,这里我用的当然是汇编:

	CS BIT P1.7
	SCK BIT P1.6
	DO BIT P1.5
	ORG 0000H
	START:SETB CS
	CLR SCK
	SETB DO
ADC:MOV A,#0
	MOV R0,#08H
	CLR CS
	CLR SCK
	LP1:CPL SCK
	NOP
	MOV C,DO
	RLC A
	CPL SCK
	NOP
	DJNZ R0,LP1
	SETB CS
	MOV R6,A
	MOV R0,#48H
	LP4:CPL SCK
	NOP
	DJNZ R0,LP4
	AJMP ADC
	END
原网站

版权声明
本文为[char~lie]所创,转载请带上原文链接,感谢
https://blog.csdn.net/AEFDOGCCC/article/details/106738231