找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5425|回复: 0
收起左侧

单片机20Hz~20KHz频率可调三种波形信号发生器Multisim仿真与代码

[复制链接]
ID:438754 发表于 2018-12-3 21:22 | 显示全部楼层 |阅读模式
20Hz~20KHz频率可调三种波形信号发生器
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png 0.png

单片机源程序如下:

  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #include<ABSACC.H>         
  4. #define uchar unsigned char
  5. #define  data_OUT  XBYTE[0x7FFF]
  6. char code dat[]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8
  7.                   ,0xab,0xae,0xb1,0xb4,0xb7,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,
  8. 0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xf1,
  9. 0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,
  10. 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,
  11. 0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,
  12. 0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,
  13. 0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,
  14. 0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,
  15. 0x63,0x60,0x5d,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x3a,0x38,
  16. 0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,
  17. 0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  18. 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,
  19. 0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,
  20. 0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80};
  21. bit flag=0;
  22.   void delay(unsigned  int N)  
  23.   {
  24.   int i;
  25.   for(i=0;i<N;i++);
  26.   }

  27. void conversion_once_0832(unsigned char out_data)
  28.            {
  29.            data_OUT=out_data; //输出数据
  30.            delay(10);         //延时等待转换
  31.             }
  32. uchar  keyscan()
  33. {
  34. uchar key;
  35. if(P1!=0xff)
  36.   {
  37.    delay(61);
  38.    key=P1;
  39.    if(key!=0xff)
  40.     flag=~flag;
  41.     return(key);
  42.   }

  43. }
  44. void triangle()
  45. {
  46.   uchar k;
  47.   for(k=0;k<255;k++)
  48.     conversion_once_0832(k);
  49.   for(;k>0;k--)
  50.      conversion_once_0832(k);
  51. }
  52. void pulse()
  53. {
  54. conversion_once_0832(0xff);
  55. delay(1000);
  56. conversion_once_0832(0x00);
  57. delay(1000);

  58. }
  59. void fun3()
  60. {
  61.   uchar j;
  62.   for(j=0;j<255;j++)
  63.    conversion_once_0832(j);
  64. }
  65. void fun4()
  66. {
  67. uchar i;
  68. for(i=0;i<255;i++)
  69.    {
  70.     conversion_once_0832(dat[i]);
  71.    }
  72. }
  73. void main()
  74. {
  75. uchar temp;
  76. while(1)
  77.   {
  78.    temp=keyscan();
  79.    switch(temp)
  80.      {
  81.            case 0xfe:
  82.                      do{
  83.                                     triangle();
  84.                                         }while(keyscan()&&(flag==1));break;
  85.            case 0xfd: do{
  86.                                     pulse();
  87.                                         }while(keyscan()&&(flag==1));break;
  88.            case 0xfb: do{
  89.                                     fun3();
  90.                                         }while(keyscan()&&(flag==1));break;
  91.        case 0xf7: do{
  92.                                     fun4();
  93.                                         }while(keyscan()&&(flag==1));break;
  94.            default: break;
  95.          }
  96.   }

  97. }
  98.             
复制代码

所有资料51hei提供下载:
波形发生器.zip (715 KB, 下载次数: 96)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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