数模模数转换程序.docx

上传人:b****7 文档编号:15926204 上传时间:2023-07-09 格式:DOCX 页数:13 大小:15.59KB
下载 相关 举报
数模模数转换程序.docx_第1页
第1页 / 共13页
数模模数转换程序.docx_第2页
第2页 / 共13页
数模模数转换程序.docx_第3页
第3页 / 共13页
数模模数转换程序.docx_第4页
第4页 / 共13页
数模模数转换程序.docx_第5页
第5页 / 共13页
数模模数转换程序.docx_第6页
第6页 / 共13页
数模模数转换程序.docx_第7页
第7页 / 共13页
数模模数转换程序.docx_第8页
第8页 / 共13页
数模模数转换程序.docx_第9页
第9页 / 共13页
数模模数转换程序.docx_第10页
第10页 / 共13页
数模模数转换程序.docx_第11页
第11页 / 共13页
数模模数转换程序.docx_第12页
第12页 / 共13页
数模模数转换程序.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数模模数转换程序.docx

《数模模数转换程序.docx》由会员分享,可在线阅读,更多相关《数模模数转换程序.docx(13页珍藏版)》请在冰点文库上搜索。

数模模数转换程序.docx

数模模数转换程序

/***********主函数*****************************/

/****这是用ADC0809与DAC0832设计出来的数控电源稳压电源程序*****/

#include"reg52.h"

#include"zhuanhuan.h"

#include"zhongduan.h"

#include"uihanshu.h"

/*****主函数******/

voidmain()

{

mcu_init();

delay(1000);

while

(1)

{

cnt0();

cnt1();

}

}

 

/**************输入函数*******************/

#include"uihanshu.h"

#include"reg52.h"

sbitclk=P3^1;

sbitdat=P3^0;

uchardis_u[4],dis_i[4];

ucharad,ad1;

ucharcodetab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};

/******发送显示数据*******/

voidsend_byte(uchardate)

{

uchari;

for(i=0;i<8;i++)

{

if(date&0x01)dat=1;

elsedat=0;

clk=0;

clk=1;

date>>=1;

}

}

/****u算术平均滤波****/

voiduFiliter()

{

uintsum=0;

uchari;

for(i=0;i<10;i++)

{

sum+=ad_u[i];

}

ad1=sum/10;

}

/*****U进行标度变换****/

voidcov_u()

{

uintk;

k=ad/2;

dis_u[0]=k/100;

k%=100;

dis_i[1]=k/10;

k%=10;

dis_u[2]=k;

dis_u[3]=0x7a;

}

/****i算术平均滤波****/

voidiFiliter()

{

uintsum=0;

uchari;

for(i=0;i<10;i++)

{

sum+=ad_i[i];

}

ad1=sum/10;

}

/*****I进行标度变换****/

voidcov_i()

{

uintk;

k=ad1/2;

dis_i[0]=k/100;

k%=100;

dis_i[1]=k/10;

k%=10;

dis_i[2]=k;

dis_i[3]=0xee;

}

/***显示函数U****/

voiddisp_u()

{

send_byte(0x7a);

send_byte(tab[dis_u[2]]);

send_byte(tab[dis_u[1]]|0x01);

send_byte(tab[dis_u[0]]);

}

/***显示函数I****/

voiddisp_i()

{

send_byte(0xee);

send_byte(tab[dis_i[2]]);

send_byte(tab[dis_i[1]]);

send_byte(tab[dis_i[0]]|0x01);

}

/*****************中断函数**********************/

#include"zhongduan.h"

#include"zhuanhuan.h"

#include"uihanshu.h"

ucharcnt=0;

ucharkey=0x00;

ucharvo=0;

ucharstep=1;

sbitoe=P2^4;

voiddelay(uintz)

{

ucharx,y;

for(x=0;x

for(y=0;y<220;y++);

}

voidcnt0()

{

if(cnt==0)

{

uFiliter();

cov_u();

disp_u();

delay(500);

}

}

voidcnt1()

{

if(cnt==1)

{

iFiliter();

cov_i();

disp_i();

delay(500);

}

}

/*****读取AD转换结果****/

voidint0()interrupt0using2

{

uchari;

EX0=0;

oe=1;

P0=0xff;

if(cnt==0)

{

for(i=0;i<9;i++)

{

ad_u[i]=ad_u[i+1];

}

ad_u[9]=P0;

}

if(cnt==1)

{

for(i=0;i<9;i++)

{

ad_i[i]=ad_u[i+1];

}

ad_i[9]=P0;

}

oe=0;

EX0=1;

}

/******键盘中断******/

voidint1()interrupt2using3

{

uchartep;

EX1=0;

delay(20);

tep=P1;

tep=~tep;

tep&=0xf0;

if(tep!

=0)

{

switch(tep)

{

case0x10:

key=0x01;break;

case0x20:

key=0x02;break;

case0x40:

key=0x03;break;

case0x80:

key=0x04;break;

default:

key=0xff;break;

}

while(tep!

=0)

{

tep=P1;

tep=~tep;

tep&=0xf0;

}

if(key==0x01)

{

key=0xff;

if(vo<240)vo+=1*step;

elsevo=240;

dac0832(vo);

}

if(key==0x02)

{

key=0xff;

if(vo>1*step)vo-=1*step;

elsevo=0;

dac0832(vo);

}

if(key==0x03)

{

key=0xff;

cnt++;

if(cnt>1)cnt=0;

}

if(key==0x04)

{

key=0xff;

step++;

if(step>10)

step=1;

}

}

EX1=1;

}

/*****启动AD转换*****/

voidtimer1()interrupt3using1

{

uchari=0;

ET1=0;

TL1=(65535-2000)%256;

TH1=(65535-2000)/256;

adc0809(cnt);

ET1=1;

}

voidt1_init()

{

uchari;

i=TMOD;

i=i|0x10;

TMOD=i;

TL1=(65535-2000)%256;

TH1=(65535-2000)/256;

ET1=1;

TR1=1;

}

voidtimer2_init()

{

TMOD=0x02;

TL2=(65535-12)%256;

TH2=(65535-12)/256;

RCAP2L=(65535-12)%256;

RCAP2H=(65535-12)/256;

C_T2=0;

TR2=1;

}/****还不理解这个函数***/

voidint0_init()

{

EX0=1;

IT0=1;

}

voidint1_init()

{

EX1=1;

IT1=1;

}

voidmcu_init()

{

P1=0xff;

P0=0xff;

EA=1;

int0_init();

int1_init();

t1_init();

timer2_init();

}

 

/***************************转换函数***********************/

#include"zhuanhuan.h"

#include"intrins.h"

#definen_nop_()

sbita0=P2^0;

sbita1=P2^1;

sbitale=P2^2;

sbitstart=P2^3;

sbitload=P2^6;

/****启动AD转换****/

voidadc0809(ucharchannel)

{

if(channel==0)

{

a0=0;

a1=0;

}

if(channel==1)

{

a0=1;

a1=0;

}

ale=0;

ale=1;

n;n;

ale=0;

start=0;

start=1;

n;n;

start=0;

}

/****启动DA转换****/

voiddac0832(uchardate)///并行发送

{

P0=date;

load=0;

n;n;

load=n1;

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2