找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5278|回复: 10
打印 上一主题 下一主题
收起左侧

单片机+DAC0832数字信号发生器仿真及源程序

  [复制链接]
跳转到指定楼层
楼主
这个数字信号发生器的数模转换部分是使用的dac0832芯片.下面是原理图:


源程序:
  1. #include<reg51.h>
  2. #include<absacc.h>
  3. #define DAC0832 XBYTE[0x7fff]
  4. #define ADC0808 XBYTE[0xfeff]
  5. sbit s0=P1^0;
  6. sbit s1=P1^1;
  7. sbit s2=P1^2;
  8. sbit s3=P1^3;
  9. unsigned int i;
  10. unsigned int x=0;
  11. unsigned char freq;
  12. int code table[]=
  13. {
  14. 100,102,104,107,109,112,114,117,119,121,
  15. 124,126,129,131,133,135,138,140,
  16. 142,144,147,149,151,153,155,157,
  17. 159,161,163,165,167,168,170,172,
  18. 174,175,177,178,180,181,183,184,
  19. 185,187,188,189,190,191,192,193,
  20. 194,194,195,196,197,197,198,198,
  21. 198,199,199,199,199,199,200,199,
  22. 199,199,199,199,198,198,198,197,
  23. 197,196,195,194,194,193,192,191,
  24. 190,189,188,187,185,184,183,181,
  25. 180,178,177,175,174,172,170,168,
  26. 167,165,163,161,159,157,155,153,
  27. 151,149,147,144,142,140,138,135,
  28. 133,131,129,126,124,121,119,117,
  29. 114,112,109,107,104,102,100,97,
  30. 95,92,90,87,85,82,80,78,75,
  31. 73,70,68,66,64,61,59,57,55,
  32. 52,50,48,46,44,42,40,38,36,
  33. 34,32,31,29,27,25,24,22,21,
  34. 19,18,16,15,14,12,11,10,9,
  35. 8,7,6,5,5,4,3,2,2,1,
  36. 1,1,0,0,0,0,0,0,0,0,
  37. 0,0,1,1,1,2,2,3,4,5,
  38. 5,6,7,8,9,10,11,12,14,
  39. 15,16,18,19,21,22,24,25,27,
  40. 29,31,32,34,36,38,40,42,44,
  41. 46,48,50,52,55,57,59,61,64,
  42. 66,68,70,73,75,78,80,82,85,
  43. 87,90,92,95,97,100
  44. }; //正弦波形表               
  45. void sin()
  46. {

  47. while(s0==0)
  48. {
  49. ADC0808=0;
  50. for(i=0;i<freq+1;i++)
  51. DAC0832=table[x];
  52. x++;
  53. if(x>255)x=0;
  54. }
  55. }
  56. void jvchi()
  57. {
  58. while(s1==0)
  59. {
  60. ADC0808=0;
  61. for(i=0;i<freq+1;i++)
  62. DAC0832=x;
  63. x++;
  64. if(x>255)x=0;
  65. }
  66. }
  67. void triangle()
  68. {
  69. while(s2==0)
  70. {
  71. ADC0808=0;
  72. for(i=0;i<freq+1;i++)
  73. {
  74. if(x<256)
  75. DAC0832=x;
  76. else DAC0832=512-x;
  77. }
  78. x++;
  79. if(x>511)x=0;
  80. }
  81. }
  82. void fangbo()
  83. {
  84. while(s3==0)
  85. {
  86. ADC0808=0;
  87. for(i=0;i<freq+1;i++)
  88. {
  89. if(x<256)
  90. DAC0832=0xff;
  91. else DAC0832=0;
  92. }
  93. x++;
  94. if(x>511)x=0;
  95. }
  96. }
  97. void main()
  98. {
  99. IE=0X81;
  100. ADC0808=0;
  101. sin();
  102. jvchi();
  103. triangle();
  104. fangbo();
  105. }
  106. extern0()interrupt 0
  107. {
  108. freq=ADC0808;
  109. }
复制代码


所有资料下载:
数字信号发生器.zip (26.48 KB, 下载次数: 106)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:121114 发表于 2016-10-31 23:02 | 只看该作者
可以可以 很feel!!!请问 你是如何完成的??都看了什么书??
回复

使用道具 举报

板凳
ID:145318 发表于 2016-11-3 17:05 | 只看该作者
起码程序没问题!!!  一会用用试试
回复

使用道具 举报

地板
ID:151444 发表于 2016-12-2 18:44 | 只看该作者
正弦波很好,没有问题。。。
回复

使用道具 举报

5#
ID:210067 发表于 2017-6-11 17:41 | 只看该作者
找了好多不合适,希望这个可以
回复

使用道具 举报

6#
ID:213627 发表于 2017-6-22 11:06 来自手机 | 只看该作者
看了好多都不合适,总算在这找到了,看起来不错,但怎么下载
回复

使用道具 举报

7#
ID:244931 发表于 2017-11-2 09:14 | 只看该作者
好好好
回复

使用道具 举报

8#
ID:286742 发表于 2018-3-2 08:46 | 只看该作者
图片有点模糊

评分

参与人数 2黑币 +10 收起 理由
9981难 + 5 的确有点模糊
请输入用户名 + 5 淡定

查看全部评分

回复

使用道具 举报

9#
ID:286831 发表于 2018-3-2 10:03 | 只看该作者
下载了不太会用

评分

参与人数 2黑币 +10 收起 理由
9981难 + 5 多看看
likailikai + 5 慢慢看看

查看全部评分

回复

使用道具 举报

10#
ID:1078872 发表于 2023-6-10 21:42 | 只看该作者
你好,想问下输出的是那几种波形呀
回复

使用道具 举报

11#
ID:1077459 发表于 2023-6-12 17:22 | 只看该作者
会使用LCD或数码管显示频率吗
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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