完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
程序是这样的:(无论我怎么改FREQ的值,显示的正弦波的值就是不变,而且波形周期不对,这里应该是1s的,但是示波器上显示的是两秒)
#include #include #define uchar unsigned char #define uint unsigned int #define fosc 12000000 #define all 65535 float sindatar; uint VM=2500; uint FREQ=1,j=0; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=1;y>0;y--); } /********************************************** 计算正弦波数据 ********************************************/ void getsin(uchar x) { sindatar=((sin(6.28*x/256)+1)/2.0)*VM*0.051; P3=(uchar)sindatar; delay(1); } void main() { TH1=(all-fosc/12/256/FREQ)/256; TL1=(all-fosc/12/256/FREQ)%256; ET1=1; EA=1; TR1=1; while(1) { getsin(j); } } void timer1() interrupt 3 using 3 { TH1=(all-fosc/12/256/FREQ)/256; TL1=(all-fosc/12/256/FREQ)%256; j++; if(j==256) j=0; } |
|
相关推荐
1个回答
|
|
刚才我发的那个有点错误 ,应该是正弦波的频率没法改变。 按照那个FREQ =1计算,得到的应该是正弦波周期应该是1s 吧。 但是示波器上显示的额是2s.
((sin(6.28*x/256)+1)/2.0)*VM*0.051 是这样来的:((sin(6.28*x/256)+1)/2.0)*255*VM/5000; 我要通过控制VM 控制正弦波的幅度。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
6440 浏览 3 评论
7707 浏览 1 评论
7951 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
9767 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1286 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 09:19 , Processed in 0.521710 second(s), Total 76, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号