完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
新手,目前在用90C51单片机和PCF8591做一个波形发生器,PCF8591只用到了DA功能,8591的寄存器是8位的,那么它可以转化的波形峰峰值不应该是256么,我的波形峰峰值为200,为什么波形表中间值为100时没问题,但中间值为128时,即波形最大值达到218时波形就顶部失真了?
附上相关程序:[C] 纯文本查看 复制代码 void get_sindata(){uint i;for(i=0;i<256;i++)sin_tab=(sin(2*PI*i/256)+1)*100;}void sinwave(){ uint i; for(i=0; i<256; i++) { IICSendByte(sin_tab);//此处改为IICSendByte(sin_tab+28)时失真[C] 纯文本查看 复制代码 check_ACK(); //检查应答位[C] 纯文本查看 复制代码 if(flag == 1) { SystemError = 1; return; //置错误标志位SystemError } }}main(){get_sindata();DAC_PCF8591(0x40); while(1) { keyscan();//键盘扫描函数,输出结果为out1~out4,对应四种波形。 while(out1&START) { sinwave(); //输出正弦波 keyscan(); } while(out2&START) { Square(); //输出方波 keyscan(); } while(out3&START) { Triangle(); //输出三角波 keyscan(); } while(out4&START) { Sawtooth(); //输出锯齿波 keyscan(); } }} |
|
相关推荐
2个回答
|
|
|
帮顶....
|
|
|
|
|
|
先别做波形,先用简单的程序做出来DA输出,看看有么有问题,比如送个0,128,255这些数据
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1599 浏览 0 评论
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
4738 浏览 0 评论
4229 浏览 9 评论
3822 浏览 16 评论
4398 浏览 1 评论
4211浏览 3评论
2380浏览 0评论
3393浏览 0评论
1158浏览 0评论
2843浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 04:49 , Processed in 0.693636 second(s), Total 46, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1924