adc0832数字电压表程序+仿真图.docx

上传人:b****2 文档编号:2155949 上传时间:2022-10-27 格式:DOCX 页数:8 大小:61.02KB
下载 相关 举报
adc0832数字电压表程序+仿真图.docx_第1页
第1页 / 共8页
adc0832数字电压表程序+仿真图.docx_第2页
第2页 / 共8页
adc0832数字电压表程序+仿真图.docx_第3页
第3页 / 共8页
adc0832数字电压表程序+仿真图.docx_第4页
第4页 / 共8页
adc0832数字电压表程序+仿真图.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

adc0832数字电压表程序+仿真图.docx

《adc0832数字电压表程序+仿真图.docx》由会员分享,可在线阅读,更多相关《adc0832数字电压表程序+仿真图.docx(8页珍藏版)》请在冰豆网上搜索。

adc0832数字电压表程序+仿真图.docx

adc0832数字电压表程序+仿真图

adc0832数字电压表(程序+仿真图)

仿真图:

/*********************************包含头文件********************************/

#include

#include

/*********************************端口定义**********************************/

sbitCS=P3^5;

sbitClk=P3^3;

sbitDATI=P3^4;

sbitDATO=P3^4;

sbitP20=P2^0;

/*******************************定义全局变量********************************/

unsignedchardat=0x00;//AD值

unsignedcharcount=0x00;//定时器计数

unsignedcharCH;//通道变量

unsignedchardis[]={0x00,0x00,0x00};//显示数值

/*******************************共阳LED段码表*******************************/

unsignedchari,test,adval;

adval=0x00;

test=0x00;

Clk=0;//初始化

DATI=1;

_nop_();

CS=0;

_nop_();

Clk=1;

_nop_();

 

if(CH==0x00)//通道选择

{

Clk=0;

DATI=1;//通道0的第一位

_nop_();

Clk=1;

_nop_();

Clk=0;

DATI=0;//通道0的第二位

_nop_();

Clk=1;

_nop_();

}

else

{

Clk=0;

DATI=1;//通道1的第一位

_nop_();

Clk=1;

_nop_();

Clk=0;

DATI=1;//通道1的第二位

_nop_();

Clk=1;

_nop_();

}

Clk=0;

DATI=1;

 

for(i=0;i<8;i++)//读取前8位的值

{

_nop_();

adval<<=1;

Clk=1;

_nop_();

Clk=0;

if(DATO)

adval|=0x01;

else

adval|=0x00;

}

 

for(i=0;i<8;i++)//读取后8位的值

{

test>>=1;

if(DATO)

test|=0x80;

else

test|=0x00;

_nop_();

Clk=1;

_nop_();

Clk=0;

}

if(adval==test)//比较前8位与后8位的值,如果不相同舍去。

若一直出现显示为零,请将该行去掉

dat=test;

_nop_();

CS=1;//释放ADC0832

DATO=1;

Clk=1;

returndat;

}

/****************************************************************************

函数功能:

延时子程序

入口参数:

出口参数:

****************************************************************************/

voiddelay(void)

{

intk;

for(k=10;k<500;k++);

}

/****************************************************************************

函数功能:

将0-255级换算成0.00-5.00的电压数值

入口参数:

i

出口参数:

****************************************************************************/

voidconvdata(unsignedchari)

{

dis[0]=i/51;//个位

dis[1]=(i%51)*10/51*2;//小数点后第一位

dis[2]=((i%51)*10%51)*10/51*2;//小数点后第二位

}

/****************************************************************************

函数功能:

数码管显示子程序

入口参数:

出口参数:

****************************************************************************/

 

voiddisplay(void)

{

P2=0xff;

P0=tab[dis[0]]&0x7f;//显示个位和小数点

delay();

P2=0xfd;

P2=0xff;

P0=tab[dis[1]];//显示小数点后第一位

delay();

P2=0xfb;

P2=0xff;

P0=tab[dis[2]];//显示小数点后第二位

delay();

P2=0xf7;

P2=0xff;

P0=0xff;//显示小数点后第二位

delay();

P2=0xfe;

}

 

/****************************************************************************

函数功能:

主程序

入口参数:

出口参数:

****************************************************************************/

voidmain(void)

{

P2=0xff;//端口初始化

P0=0xff;

delay();

CH=0x00;//在这里选择通道0x00或0x01

TMOD=0x01;//设置中断

TH0=(65536-50000)/256;//定时器1初值定时50ms

TL0=(65536-50000)%256;

IE=0x82;

TR0=1;

while

(1)//主循环

{dat=adc0832(CH);

convdata(dat);//数据转换

display();//显示数值

}

}

/****************************************************************************

函数功能:

定时器中断延时程序这一段的作用时隔一段时间抽样一次否侧显示的最后一位会不稳定

入口参数:

出口参数:

****************************************************************************/

voidtimer0(void)interrupt1

{

TMOD=0x01;

TH0=(65536-50000)/256;//定时器1初值定时50ms

TL0=(65536-50000)%256;

IE=0x82;

TR0=1;

count++;

if(count==0x01)

{

count=0x00;

dat=adc0832(CH);

}

}

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

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1