在单片机学习中AD是必须要了解的,所谓的AD就是把模拟信号转换为数字信号,本文为大家介绍的是如何在proteus中绘制ADC0832。
1.首先找到proteus软件,双击打开,如图
2.打开软件之后点击左侧的“P”按钮,如图
3.找到“关键字”,如图
4.输入“ADC0832”,选择模型,点击“确定”,如图
5.在空白出单击左键,此是出现一个虚影,如图
6.将虚影拖动到合适的位置再次左键点击鼠标,如图,这样一个ADC0832就绘制完成了。
51单片机adc0832汇编程序
#include《AT89x51.h》
#include《intrins.h》
#define uint unsigned int
#define uchar unsigned char
//******************adc0832****************************//
sbit CS=P2^3; //使能。
sbit CLK=P2^2;//时钟
sbit DO=P2^1; // 数据输出
sbit DI=P2^0;//数据输入
char CC[]=“11001001”;
uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
uchar temp;
uint vvv,i;
//通道的选择:0x02就是单通道0;0x03就是单通道1;
//0x00就是双通道ch0=“+”; ch0=“-”
//0x01就是双通道ch0=“-”; ch0=“+”
//*****************************************************//
void delay(int tt)
{
while(tt--)
{for(i=0;i《120;i++);}
}
void startADC()
{
CS=1;
_nop_();
_nop_();
CLK=0;
_nop_();
_nop_();
CS=0;
_nop_();
_nop_();
DI=1;
_nop_();
_nop_();
CLK=1;
_nop_();
_nop_();
DI=0;
_nop_();
_nop_();
CLK=0;
_nop_();
_nop_();
}
void choiceADC(uint CH)//CH为0选择通道ch0,为1,选择ch1进行AD转换
{
startADC();
if(CH==0)
{
DI=1;
_nop_();
CLK=1;//上升沿DI=1
_nop_();
CLK=0;//1个下降沿DI=1
_nop_();
DI=0;
_nop_();
CLK=1;
_nop_();
CLK=0;//第3个上升沿DI=0
_nop_();
}
else
{
CLK=0;
_nop_();
DI=1;
_nop_();
CLK=1;//上升沿DI=1
_nop_();
CLK=0;//1个下降沿DI=1
_nop_();
DI=1;
_nop_();
CLK=1;//第3个上升沿DI=0
_nop_();
}
/********通道选择结束开始读取转换后的二进制数****/
CLK=1;
_nop_();
CLK=0;//下降沿读数,一下进行判断和处理,共8次
for(i=0;i《8;i++)
{
DI=1;
if(DO)
{
temp |=0x01;
}
else
{
temp &=0xfe;
}
CLK=0;
_nop_();
CLK=1;
temp=temp《《1;
}
vvv=temp;
}
void display(uint dat)
{
P3=0x04;
P0=tab[dat/100];
delay(1);
P0=0xff;
P3=0x02;
P0=tab[dat%100/10];
delay(1);
P0=0xff;
P3=0x01;
P0=tab[dat%10];
delay(1);
P0=0xff;
}
void main()
{
P3=0xFF;
P0=0xff;
while(1)
{
choiceADC(0);
delay(1);
display(vvv);
}
}
小编推荐阅读:
adc0832是什么_adc0832和adc0809区别
adc0832时序图_adc0832怎么转换光敏电阻
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)