找回密码
 立即注册

QQ登录

只需一步,快速开始

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

DAMCP41010 DA转换输出不同的波形的单片机源程序

[复制链接]
跳转到指定楼层
楼主
ID:413373 发表于 2018-10-22 00:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
分享一个DA转换-输出不同的波形的代码

DAMCP41010的单片机源程序如下:
  1. #include<reg52.h>
  2. #include<dingyi.h>
  3. /***************************************/
  4. void DAMCP41010(uchar dabuf) //tds为设置工作方式,dabuf为写入D7~D0的值
  5. { tds=0x11;
  6. MCP41010_CS=0;
  7. for(i=0;i<8;i++)    //前8个clk选择设置DA工作方式
  8.   { MCP41010_CLK=0;
  9.   if(tds&0x80){
  10.   MCP41010_DI=1;}
  11.   else{
  12.   MCP41010_DI=0;
  13.   }
  14.   MCP41010_CLK=1;
  15.     tds<<=1;  //左移,准备送下一位
  16.   }   
  17. /**** 接下来写入数据(D7~D0)****/
  18.   for(i=0;i<8;i++)   
  19.   {
  20.   MCP41010_CLK=0;
  21.     if(dabuf&0x80){
  22.          MCP41010_DI=1;
  23.          }
  24.          else
  25.          {
  26.          MCP41010_DI=0;
  27.          }
  28.          MCP41010_CLK=1;      
  29.   dabuf<<=1;
  30.   }
  31.   MCP41010_CS=1;
  32. // MCP41010_CLK=0;   
  33. }

  34. void bcd()         
  35. {switch(smsta)
  36. {case 0:
  37.    buf3f=1;
  38.    buf2=dabuf/100;                //百位
  39.    buf1=dabuf/10%10;    //十位
  40.    buf0=dabuf%10;      //个位
  41.    lightf=0;            //关掉点显示  
  42.    break;         
  43.   case 1:
  44.    buf3f=0;
  45.    buf3=dabuf/110; //个位
  46.    buf2=dabuf%110*10/110;//十分位
  47.    buf1=dabuf%110*10%110*10/110;//百分位
  48.    buf0=dabuf%110*10%110*10%110*10/110;// 千分位
  49.    lightf=1;break;           //开个位点
  50.   }
  51. }
  52. /******************************
  53. **函数名:sjb()
  54. ***描述: 输出三角波;        
  55. ******************************/
  56. void sjb()
  57. {uchar zhsta;
  58. if(sw1f){msta=2;}
  59. cnt++;
  60. if(cnt==20)
  61. {cnt=0;
  62.   switch(zhsta)
  63. {
  64. case 0:
  65.   dabuf++;
  66.   if(dabuf==255)
  67.    {zhsta=1;}break;
  68. case 1:
  69.   dabuf--;
  70.   if(dabuf==0){zhsta=0;}break;
  71. }}
  72. DAMCP41010(dabuf);
  73. }
  74. /******************************
  75. **函数名:jucb()
  76. ***描述: 输出锯齿波;        
  77. ******************************/
  78. void jucb()
  79. {cnt++;
  80. if(sw1f){msta=3;}
  81. if(cnt==20)
  82. { cnt=0;dabuf++;
  83.   if(dabuf==255)
  84.    {dabuf=0;}}
  85. DAMCP41010(dabuf);
  86. }
  87. /******************************
  88. **函数名:fangbb()
  89. ***描述: 输出方波;        
  90. ******************************/
  91. void fangb()
  92. {
  93. uchar bdata gdf;
  94. if(sw1f){msta=4;}
  95.   cnt++;
  96.   if(cnt==200)   
  97.    {cnt=0;gdf=!gdf;}
  98.   if(gdf)
  99.    {dabuf=255;}
  100.   else
  101.    {dabuf=0;}
  102.   DAMCP41010(dabuf);
  103. }
  104. /***************************************************
  105. **函数名:zxb()
  106. ***描述: 输出正弦波;        
  107. ***************************************************/
  108. void zxb()
  109. { uchar cnt;
  110.   if(sw1f){msta=0;}
  111.   cnt++;
  112.   if(cnt==20)
  113.   {cnt=0;dabuf=sin[zxf];
  114.   zxf++;
  115.   if(zxf==255){zxf=0;}}
  116.   DAMCP41010(dabuf);
  117. }
  118. /***************************************************
  119. **文件名:main()
  120. ***描述: DA转换的主程序段,实现各功能模块的转换;
  121.           work0输出三角波模块;work1输出锯齿波模块;
  122.                   work2输出矩形波模块;work3输出正弦波;        
  123. ***************************************************/
  124. void main()
  125. {zxf=msta=smsta=flag=0;
  126. tds=0x11;dabuf=0;
  127. TMOD=0x01;
  128. TH0=0xec;
  129. TL0=0x78;
  130. TR0=1;
  131. while(1)
  132. { while(!TF0);
  133.   {
  134.    TH0=0xec;
  135.    TL0=0x78;
  136.    TF0=0;
  137.    #include<anjiansm.h>
  138.    #include<disp.h>
  139.    bcd();
  140.    switch(msta)
  141.    {
  142.         case 0:
  143.         if(sw1f){msta=1;}
  144.         buf3f=0;if(lightf){dian=1;}buf3=0;buf2=2;buf1=3;
  145.     buf0=9;buf4=0;       
  146.          break;
  147.         case 1:
  148.           sjb();buf4=0xfe;break;
  149.         case 2:
  150.           jucb();buf4=0xfd;break;
  151.         case 3:
  152.       fangb();buf4=0xfb;break;
  153.         case 4:
  154.           zxb();buf4=0xf7;break;
  155.    }
  156.   }
  157. }
  158. }
复制代码

所有资料51hei提供下载:
DA转换-输出不同的波形.zip (35.23 KB, 下载次数: 45)


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

使用道具 举报

沙发
ID:1 发表于 2018-10-22 05:10 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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