您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > 基于51单片机的ADC0809c程序代码
#includeat89c51.h#defineucharunsignedchar#defineuintunsignedintsbitst=P3^2;//ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;//下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平sbitoe=P3^1;//OE为输出允许信号,用于控制三条输出锁存器向//单片机输出转换得到的数据,OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态sbiteoc=P3^0;//EOC为转换结束信号。当EOC为高电平时,表明转//换结束;否则,表明正在进行A/D转换ucharcodetab[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//数码管显示段码ucharcodetd[]={0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70};//通道先择数组uintad_0809,ad_data1,ad_data2,ad_data3,ad_data0;ucharm,number;ucharx[8];//八通道数据待存数组voiddelaynms(uintx);//nms延时程序voiddisplay();//显示程序voidad0809();//芯片启动程序voidkey();//键扫描程序voidmain(){number=1;P1=0x00;while(1){ad0809();//调AD0809启动子程序key();//调按键子程序ad_0809=x[number];//把相关通道数据给ad_0809display();//调显示}}//nms延时程序voiddelaynms(uintx){uchari;while(x--0){for(i=0;i125;i++){;}}}voiddisplay(){uchara;ad_data1=(ad_0809*49/25)/100;//读得的数据乘以2再乘以98%除以100得百位ad_data2=((ad_0809*49/25)%100)/10;//读得的数据乘以2再乘以98%再分出十位ad_data3=(((ad_0809*49/25)%100)%10);//读得的数据乘以2再乘以98%再分出个位for(a=0;a10;a++){P0=tab[ad_data3];//送小数点后第二位显示P2=0x07;//选通第一个数码管delaynms(3);P0=tab[ad_data2];//送小数点后第一位显示P2=0x0b;//选通第二个数码管delaynms(3);P0=tab[ad_data1];//送整数显示P0_7=0;//点亮第三个数码管小数点P2=0x0d;//选通第三个数码管delaynms(3);P0=tab[number];//送通道号显示P2=0x0e;delaynms(3);}}voidad0809(){uchari,m=1;for(i=0;i8;i++){P0=td[i];//选通通道oe=0;//以下三条指令为起动AD0809st=0;st=1;st=0;delaynms(1);while(!eoc);//等待转换结束oe=1;//取出读得的数据x[m]=P2;//送相关通道数组oe=0;m++;}}voidkey(){if(!P3_5)//P3.5是否按下{delaynms(20);//延时判误if(!P3_5)//再一次判断P3。5是否按下{while(!P3_5);//等待P3。5为高电平number++;//通道号显示加一if(number8)number=1;//八通道}}}
本文标题:基于51单片机的ADC0809c程序代码
链接地址:https://www.777doc.com/doc-4298464 .html