新闻中心

EEPW首页>嵌入式系统>设计应用> 51单片机ADC0804模数转换学习

51单片机ADC0804模数转换学习

作者: 时间:2012-08-02 来源:网络 收藏

while(1) //进入死循环不停地做
{
adwr=1; /*-----------------------------------------*/
_nop_();
adwr=0; / *启动AD转换(根据时序图来的)*/
_nop_();
adwr=1; /*-----------------------------------------*/

for(a=10;a>0;a--)
{
display(A1,A2,A3); //兼具显示和延时的作用,因为转换需要经过一定的时间,用这个for循环可以起到延时的作用
}

P1=0xff; //读取P1口之前先给其写全1

adrd=1; //rd置1(根据时序图可知)
_nop_(); //延时一个机器周期(根据时序图可知)
adrd=0; //rd置0(根据时序图可知)
_nop_(); //延时一个机器周期
adval=P1; //A/D转换后的数据赋给adval
adrd=1; //转换后的数字信号(二进制的信号应该已经译成了十进制了)读出(也是根据时序图可知)

A1=adval/100; /*-----------------------------------------*/
A2=adval%100/10; /*分离转换后的十进制数,用来给数码管显示*/
A3=adval%10; /*-----------------------------------------*/

}
}
/*-------------------------------------------------------------------------------*/

void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延时约xms毫秒
for(j=110;j>0;j--);
}

void display(uchar bai,uchar shi,uchar ge)//显示子函数
{
dula=1;
P0=table[bai];
dula=0;
P0=0xff;
wela=1;
P0=0x7e;
wela=0;
delayms(5);


评论


相关推荐

技术专区

关闭