找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机的数据DAC0832转换,proteus仿真方波,三角波和正玄波源码

[复制链接]
跳转到指定楼层
楼主
此设计是用单片机来产生正玄波,三角波,方波。第一个按钮为方波,第二个按钮为三角波,第三个按钮为正玄波,里面附有proteus仿真图,以及代码,可用proteus直接打开,含有.hex文件

单片机仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源码:
  1. #include <reg52.h>
  2. sbit key1=P1^0;                  //定义方波发生按钮
  3. sbit key2=P1^1;                  //定义三角波发生按钮
  4. sbit key3=P1^2;                  //定义正弦波发生按钮

  5. unsigned char code S[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5
  6. ,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5
  7. ,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd
  8. ,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda
  9. ,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99
  10. ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51
  11. ,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16
  12. ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00
  13. ,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15
  14. ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e
  15. ,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 };     //正弦波编码

  16. void main()
  17. {
  18. int t=0;
  19. void Delay(int i);
  20. void Fangbo(void);
  21. void Sanjiaobo(void);
  22. void Zhengxianbo(void);
  23. while(1)
  24. {
  25. if(key1==0)                   //按键扫描
  26. {
  27. Delay(1);
  28. if(key1==0)
  29. {
  30. while(!key1)
  31. {;}
  32. }
  33. t=0;
  34. }

  35. if(key2==0)
  36. {
  37. Delay(1);
  38. if(key2==0)
  39. {
  40. while(!key2)
  41. {;}
  42. }
  43. t=1;
  44. }

  45. if(key3==0)
  46. {
  47. Delay(1);
  48. if(key3==0)
  49. {
  50. while(!key3)
  51. {;}
  52. }
  53. t=2;
  54. }
  55. switch(t)
  56. {
  57. case 0:
  58. {
  59. Fangbo();
  60. break;
  61. }
  62. case 1:
  63. {
  64. Sanjiaobo();
  65. break;
  66. }
  67. case 2:
  68. {
  69. Zhengxianbo();
  70. break;
  71. }
  72. }
  73. }
  74. }

  75. void Delay(int i)                //延时函数
  76. {
  77. int j=255;
  78. for(i;i>=0;i--)
  79. {
  80. for(j;j>=0;j--)
  81. {;}
  82. }
  83. }

  84. void Fangbo(void)           //方波发生函数
  85. {
  86. P2=0;
  87. Delay(1);
  88. P2=255;
  89. Delay(1);
  90. }

  91. void Sanjiaobo(void)          //三角波发生函数
  92. {
  93. int i=0;
  94. for(i;i<255;i++)
  95. {
  96. P2=i;
  97. }
  98. for(i;i>0;i--)
  99. {
  100. P2=i;
  101. }
  102. }

  103. void Zhengxianbo(void)                //正弦波发生函数
  104. {
  105. int i=0;
  106. for(i;i<=255;i++)
  107. {
  108. P2=S[i];
  109. }
  110. }
复制代码

全部资料51hei下载地址:
数据采集DA转化.rar (74.77 KB, 下载次数: 128)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:317795 发表于 2018-6-27 17:11 | 只看该作者
厉害了,小哥哥
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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