数码之家

 找回密码
 立即注册
搜索
查看: 4724|回复: 2

[C51] 单片机原理 C51 ,PROTUES仿真 DAC0832 输出锯齿波,三角波,方波,正弦波

[复制链接]
发表于 2021-1-7 20:27:29 | 显示全部楼层 |阅读模式
本帖最后由 玛德陛下 于 2021-1-7 20:35 编辑









依据的这个例子。





在PROTUES 里面做好电路




DA0832 占用了一个外部RAM地址,0x7fff,
要进行绝对地址的访问,
涉及到 code ,data ,pdata ,xdata 的存储单元定义

这里用了C51的关键字 _at_,

还可以用 指针,访问,?
也可以 运行库的预定义?

锯齿波程序



得到的图形



三角波






方波,这都比较简单






正弦波程序



能输出,但是 底部是平的?






认真查看了下正弦波数组数据,还真错了2个,改正后还是不行。

网上找了个正弦波数据



256字节的,不通过,爆RAM了,



改成code ROM

可以通过了。



波形太慢


去掉延时





还是平底



认真查找原因,发现 DA0832的DI0电平一直是灰色,
原来这里连线分成了2截,D0标记没有连上








改好了





还是平底



平底


修改电路,将LM324的电压改为+10V -10V

终于正常了


去掉LM324+输入的接地效果



改IOUT1接LM324 +的效果






去掉LM324 ,I0UT1接电阻效果


放大看看


将VREF 基准电压改成10V ,平底又出现了。



改成--5V ,LM324 电压 +5 V-5V 平头




改成3V 波形正常了



去掉 DI0  输入

没有啥变化



去掉 DI1,DI2

精度变差了



去掉 DI0-3 精度更差了。

正弦波程序奉上

  1. xdata unsigned char DA0832 _at_ 0x7fff;
  2. unsigned char code  sindata[256]={
  3. 0x80, 0x83, 0x86, 0x89, 0x8c, 0x8f, 0x92, 0x95,        
  4. 0x98, 0x9c, 0x9f, 0xa2, 0xa5, 0xa8, 0xab, 0xae,      
  5. 0xb0, 0xb3, 0xb6, 0xb9, 0xbc, 0xbf, 0xc1, 0xc4,      
  6. 0xc7, 0xc9, 0xcc, 0xce, 0xd1, 0xd3, 0xd5, 0xd8,      
  7. 0xda, 0xdc, 0xde, 0xe0, 0xe2, 0xe4, 0xe6, 0xe8,      
  8. 0xea, 0xec, 0xed, 0xef, 0xf0, 0xf2, 0xf3, 0xf4,      
  9. 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfc,      
  10. 0xfd, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,      
  11. 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe,      
  12. 0xfd, 0xfc, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8, 0xf7,      
  13. 0xf6, 0xf5, 0xf3, 0xf2, 0xf0, 0xef, 0xed, 0xec,
  14. 0xea, 0xe8, 0xe6, 0xe4, 0xe3, 0xe1, 0xde, 0xdc,      
  15. 0xda, 0xd8, 0xd6, 0xd3, 0xd1, 0xce, 0xcc, 0xc9,      
  16. 0xc7, 0xc4, 0xc1, 0xbf, 0xbc, 0xb9, 0xb6, 0xb4,      
  17. 0xb1, 0xae, 0xab, 0xa8, 0xa5, 0xa2, 0x9f, 0x9c,      
  18. 0x99, 0x96, 0x92, 0x8f, 0x8c, 0x89, 0x86, 0x83,      
  19. 0x80, 0x7d, 0x79, 0x76, 0x73, 0x70, 0x6d, 0x6a,      
  20. 0x67, 0x64, 0x61, 0x5e, 0x5b, 0x58, 0x55, 0x52,      
  21. 0x4f, 0x4c, 0x49, 0x46, 0x43, 0x41, 0x3e, 0x3b,      
  22. 0x39, 0x36, 0x33, 0x31, 0x2e, 0x2c, 0x2a, 0x27,      
  23. 0x25, 0x23, 0x21, 0x1f, 0x1d, 0x1b, 0x19, 0x17,      
  24. 0x15, 0x14, 0x12, 0x10, 0x0f, 0x0d, 0x0c, 0x0b,      
  25. 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x03,      
  26. 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,      
  27. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,      
  28. 0x02, 0x03, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,      
  29. 0x09, 0x0a, 0x0c, 0x0d, 0x0e, 0x10, 0x12, 0x13,      
  30. 0x15, 0x17, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x23,      
  31. 0x25, 0x27, 0x29, 0x2c, 0x2e, 0x30, 0x33, 0x35,      
  32. 0x38, 0x3b, 0x3d, 0x40, 0x43, 0x46, 0x48, 0x4b,      
  33. 0x4e, 0x51, 0x54, 0x57, 0x5a, 0x5d, 0x60, 0x63,      
  34. 0x66, 0x69, 0x6c, 0x6f, 0x73, 0x76, 0x79, 0x7c, };


  35. void main()
  36. {
  37.         unsigned char i;
  38.         while(1)
  39.         {
  40.                 for(i=0;i<256;i++)
  41.                 {
  42.                 DA0832=sindata[i];
  43.            
  44.           }
  45.         }
  46. }

复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 3家元 +60 收起 理由
moontree + 20 謝謝分享
ljlun + 20 谢谢分享
邢宝伟 + 20

查看全部打赏

发表于 2021-1-7 21:52:11 | 显示全部楼层
厉害,膜拜中......
回复 支持 反对

使用道具 举报

发表于 2021-1-10 00:43:42 | 显示全部楼层
牙膏满了,没地方挤
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-25 00:13 , Processed in 0.140400 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表