欢迎来到天天文库
浏览记录
ID:61487259
大小:929.50 KB
页数:17页
时间:2021-02-05
《第10章 AD转换器与DA转换器应用.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、【改写其中的一部分内容,程序如下】#includeunsignedcharcodeLEDData[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};sbitOE=P1^0;sbitEOC=P1^1;sbitSTART=P1^2;sbitCLK=P1^3;sbitADDA=P1^4;sbitADDB=P1^5;sbitADDC=P1^6;voidDelayMS(unsignedintcount){unsignedchari;unsignedintj;for(j=0;j
2、3、P0=LEDData[d/100];//取百位数码DelayMS(5);}voidmain(){TMOD=0x02;//02=00000010,定时器T0,定时方式,模式2TH0=0x14;TL0=0x14;【IE=0x82;//10000010,EA=1,ET0=1】EA=1;ET0=1;TR0=1;//启动T0【P1=0x3F;//3f=00111111(P16=0,P15=1,P14=1,选择IN3通道)】ADDC=0;【011=3,选择通道3】ADDB=1;ADDA=1;while(1){START=0;START=1;//STAR4、T线上加一个正脉冲【正脉冲宽度应大于100ns】START=0;//START线上加一个负脉冲,下降沿启动ADCwhile(EOC==0);//等待转换结束【查询转换是否结束】OE=1;//结束后,输出三态门打开,允许输出Display_Result(P3);//转换数据从P3口输入,送LED上显示OE=0;//关闭输出三态门}}voidTimer0_INT()interrupt1//定时器0中断服务程序{CLK=!CLK;//CLK端上产生时钟信号。频率为XX}【采用中断方式,已通过CAP101INT】#include【5、已通过CAP101INT】unsignedcharcodeLEDData[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};sbitOE=P3^2;sbitSTART=P3^1;sbitCLK=P3^0;sbitADDC=P3^7;sbitADDB=P3^6;sbitADDA=P3^5;voidDelay(unsignedintms){unsignedchari;while(ms--)for(i=0;i<120;i++);}voidDisplay_Result(unsignedcha6、rd){P2=0xfb;P0=LEDData[d%10];//个位Delay(5);P2=0xfd;P0=LEDData[d%100/10];//十位Delay(5);P2=0xfe;P0=LEDData[d/100];//百位Delay(5);}voidmain(){TMOD=0x02;TH0=0xf5;TL0=0xf5;ET0=1;EA=1;//开放总中断EX1=1;//允许外中断1中断IT1=1;//规定外中断1采用负跳变方式TR0=1;//启动定时器T0ADDC=1;//设置待转换的通道最高位ADDB=0;ADDA=1;//设置待转7、换的通道最低位START=0;START=1;START=0;//START负跳变,启动ADC0809开始转换while(1);}voidAD0809int()interrupt3{OE=1;//打开输出三态门Display_Result(P1);//显示转换数据OE=0;START=0;//再次启动ADC0809START=1;START=0;}voidTimer0_INT()interrupt1{CLK=!CLK;}//给ADC0809供时钟脉冲(1)查询方式ADC0809与AT89C51的查询式接口如图10-6所示。图10-6ADC08、809与AT89S51查询式接口【图中为“或非门”】图10-6所示的基准电压是提供给A/D转换器在转换时所需要的基准电压,这是保证转换精度的基本条件。基准电压要单独用高精度稳压电
3、P0=LEDData[d/100];//取百位数码DelayMS(5);}voidmain(){TMOD=0x02;//02=00000010,定时器T0,定时方式,模式2TH0=0x14;TL0=0x14;【IE=0x82;//10000010,EA=1,ET0=1】EA=1;ET0=1;TR0=1;//启动T0【P1=0x3F;//3f=00111111(P16=0,P15=1,P14=1,选择IN3通道)】ADDC=0;【011=3,选择通道3】ADDB=1;ADDA=1;while(1){START=0;START=1;//STAR
4、T线上加一个正脉冲【正脉冲宽度应大于100ns】START=0;//START线上加一个负脉冲,下降沿启动ADCwhile(EOC==0);//等待转换结束【查询转换是否结束】OE=1;//结束后,输出三态门打开,允许输出Display_Result(P3);//转换数据从P3口输入,送LED上显示OE=0;//关闭输出三态门}}voidTimer0_INT()interrupt1//定时器0中断服务程序{CLK=!CLK;//CLK端上产生时钟信号。频率为XX}【采用中断方式,已通过CAP101INT】#include【
5、已通过CAP101INT】unsignedcharcodeLEDData[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};sbitOE=P3^2;sbitSTART=P3^1;sbitCLK=P3^0;sbitADDC=P3^7;sbitADDB=P3^6;sbitADDA=P3^5;voidDelay(unsignedintms){unsignedchari;while(ms--)for(i=0;i<120;i++);}voidDisplay_Result(unsignedcha
6、rd){P2=0xfb;P0=LEDData[d%10];//个位Delay(5);P2=0xfd;P0=LEDData[d%100/10];//十位Delay(5);P2=0xfe;P0=LEDData[d/100];//百位Delay(5);}voidmain(){TMOD=0x02;TH0=0xf5;TL0=0xf5;ET0=1;EA=1;//开放总中断EX1=1;//允许外中断1中断IT1=1;//规定外中断1采用负跳变方式TR0=1;//启动定时器T0ADDC=1;//设置待转换的通道最高位ADDB=0;ADDA=1;//设置待转
7、换的通道最低位START=0;START=1;START=0;//START负跳变,启动ADC0809开始转换while(1);}voidAD0809int()interrupt3{OE=1;//打开输出三态门Display_Result(P1);//显示转换数据OE=0;START=0;//再次启动ADC0809START=1;START=0;}voidTimer0_INT()interrupt1{CLK=!CLK;}//给ADC0809供时钟脉冲(1)查询方式ADC0809与AT89C51的查询式接口如图10-6所示。图10-6ADC0
8、809与AT89S51查询式接口【图中为“或非门”】图10-6所示的基准电压是提供给A/D转换器在转换时所需要的基准电压,这是保证转换精度的基本条件。基准电压要单独用高精度稳压电
此文档下载收益归作者所有