完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#define uchar unsigned char #define uint unsigned int ***it SQU_K =P3^4; ***it SQU_L =P1^0; //延时函数 //方波发生函数 void square() { uchar a,b; for(a=0;a<255;a++) { P0=0xff; P2=0xff; b=P2; b=~b; while(b--); //调节相位,b的变化越大,相位变化越小 } for(a=255;a>0;a--) { P0=0x00; P2=0xff; b=P2; b=~b; while(b--); } } //主函数 void main() { P1=0xff; P2=0xff; P3=0xff; while(1) { P0 = 0; if(SQU_K==0) { SQU_L=0; square(); } SQU_L=1; } } 这个是我测试的程序,想做一个波形发生器。产生方波时,相位调到最大,会出现图片的情况,调小一点就不会,请问:我的这个问题是放大电路没有设计好,还是程序没有编辑正确?应该如何修改?
|
|
相关推荐
6个回答
|
|
输入频率过高会导致运放失真,没看出是哪个引脚输出波形的,没看出怎么调节相位的,波形里也没看出当前波形的频率,波形的频率怎么调节也没看出来,你确定是在调节相位,而不是调节频率,信息太少
最佳答案
|
|
|
|
有没有大神给一点提示呢,我现在在写毕业论文设计,请大家帮帮忙
|
|
|
|
人中狼 发表于 2017-3-29 12:54 感谢你的回复, P0口与DA转换器相连,DA转换器输出口与运放相连; P3口是波形按键切换,P1口是波形LED指示灯; 下面是现在的代码:
若是输入频率过高,我应该如何修改程序?是不是要减小 a 的值?其他应如何改进?
|
|
|
|
你先试试P2到多少数值时波形开始失真,这个值可以做为上限值,同时可以算算频率是多少,我总觉得你的相位调节实际是频率不调节,你用示波器看看频率范围是多少,如果你的相位调节真的是频率调节的话,会有最高和最低两个值,最高值会超过开始失真的值,多试验几次,找找规律
评分
|
||
|
||
人中狼 发表于 2017-3-29 16:05 感谢你的再次回复, 下面是我截取的图片, 图1是P2口都为高电平,b=0xff;整个周期是8ms; 图2是P2口都为低电平,b=0x00;整个周期是0.8s; 两种极限情况都失真,整个过程都是失真的; 晶振的频率一开始选的是24,后来改为12后,情况并没有改善; 放大器我选的是AD817运放,是否对这个问题有影响? 另外,我输出的波形有方波,锯齿波,三角波,正谐波,但只有方波出现失真情况最为严重,其他的并不明显。 |
|
|
|
把运放输出端的电容去掉试试
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-搭建自己的ubuntu系统之ubuntu网络设置
371 浏览 0 评论
龙芯中科胡伟武:3B6600 八核桌面 CPU 性能将达到英特尔中高端酷睿 12~13 代水平
501 浏览 0 评论
树莓派Pico 2发布,搭载RP2350双核RISC-V和Arm Cortex-M33微控制器!
477 浏览 0 评论
嵌入式学习-搭建自己的ubuntu系统之VMware Tools安装
408 浏览 0 评论
嵌入式学习-搭建自己的ubuntu系统之ubuntu系统安装
658 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10688 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-16 03:25 , Processed in 0.622992 second(s), Total 55, Slave 48 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号