标题:
DAMCP41010 DA转换输出不同的波形的单片机源程序
[打印本页]
作者:
fwefw
时间:
2018-10-22 00:58
标题:
DAMCP41010 DA转换输出不同的波形的单片机源程序
分享一个DA转换-输出不同的波形的代码
DAMCP41010的单片机源程序如下:
#include<reg52.h>
#include<dingyi.h>
/***************************************/
void DAMCP41010(uchar dabuf) //tds为设置工作方式,dabuf为写入D7~D0的值
{ tds=0x11;
MCP41010_CS=0;
for(i=0;i<8;i++) //前8个clk选择设置DA工作方式
{ MCP41010_CLK=0;
if(tds&0x80){
MCP41010_DI=1;}
else{
MCP41010_DI=0;
}
MCP41010_CLK=1;
tds<<=1; //左移,准备送下一位
}
/**** 接下来写入数据(D7~D0)****/
for(i=0;i<8;i++)
{
MCP41010_CLK=0;
if(dabuf&0x80){
MCP41010_DI=1;
}
else
{
MCP41010_DI=0;
}
MCP41010_CLK=1;
dabuf<<=1;
}
MCP41010_CS=1;
// MCP41010_CLK=0;
}
void bcd()
{switch(smsta)
{case 0:
buf3f=1;
buf2=dabuf/100; //百位
buf1=dabuf/10%10; //十位
buf0=dabuf%10; //个位
lightf=0; //关掉点显示
break;
case 1:
buf3f=0;
buf3=dabuf/110; //个位
buf2=dabuf%110*10/110;//十分位
buf1=dabuf%110*10%110*10/110;//百分位
buf0=dabuf%110*10%110*10%110*10/110;// 千分位
lightf=1;break; //开个位点
}
}
/******************************
**函数名:sjb()
***描述: 输出三角波;
******************************/
void sjb()
{uchar zhsta;
if(sw1f){msta=2;}
cnt++;
if(cnt==20)
{cnt=0;
switch(zhsta)
{
case 0:
dabuf++;
if(dabuf==255)
{zhsta=1;}break;
case 1:
dabuf--;
if(dabuf==0){zhsta=0;}break;
}}
DAMCP41010(dabuf);
}
/******************************
**函数名:jucb()
***描述: 输出锯齿波;
******************************/
void jucb()
{cnt++;
if(sw1f){msta=3;}
if(cnt==20)
{ cnt=0;dabuf++;
if(dabuf==255)
{dabuf=0;}}
DAMCP41010(dabuf);
}
/******************************
**函数名:fangbb()
***描述: 输出方波;
******************************/
void fangb()
{
uchar bdata gdf;
if(sw1f){msta=4;}
cnt++;
if(cnt==200)
{cnt=0;gdf=!gdf;}
if(gdf)
{dabuf=255;}
else
{dabuf=0;}
DAMCP41010(dabuf);
}
/***************************************************
**函数名:zxb()
***描述: 输出正弦波;
***************************************************/
void zxb()
{ uchar cnt;
if(sw1f){msta=0;}
cnt++;
if(cnt==20)
{cnt=0;dabuf=sin[zxf];
zxf++;
if(zxf==255){zxf=0;}}
DAMCP41010(dabuf);
}
/***************************************************
**文件名:main()
***描述: DA转换的主程序段,实现各功能模块的转换;
work0输出三角波模块;work1输出锯齿波模块;
work2输出矩形波模块;work3输出正弦波;
***************************************************/
void main()
{zxf=msta=smsta=flag=0;
tds=0x11;dabuf=0;
TMOD=0x01;
TH0=0xec;
TL0=0x78;
TR0=1;
while(1)
{ while(!TF0);
{
TH0=0xec;
TL0=0x78;
TF0=0;
#include<anjiansm.h>
#include<disp.h>
bcd();
switch(msta)
{
case 0:
if(sw1f){msta=1;}
buf3f=0;if(lightf){dian=1;}buf3=0;buf2=2;buf1=3;
buf0=9;buf4=0;
break;
case 1:
sjb();buf4=0xfe;break;
case 2:
jucb();buf4=0xfd;break;
case 3:
fangb();buf4=0xfb;break;
case 4:
zxb();buf4=0xf7;break;
}
}
}
}
复制代码
所有资料51hei提供下载:
DA转换-输出不同的波形.zip
(35.23 KB, 下载次数: 45)
2018-10-22 00:57 上传
点击文件名下载附件
DA转换-输出不同的波形
下载积分: 黑币 -5
作者:
admin
时间:
2018-10-22 05:10
补全原理图或者详细说明一下电路连接即可获得100+黑币
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1