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);
1 2 3

关键词:51单片机ADC0804模数转换

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章


用户评论

请文明上网,做现代文明人
验证码:
查看电脑版