ADC0809做的51单片机8路电压采集

来源:本站
导读:目前正在解读《ADC0809做的51单片机8路电压采集》的相关信息,《ADC0809做的51单片机8路电压采集》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《ADC0809做的51单片机8路电压采集》的详细说明。
简介:本文给大家分享了ADC0809做的51单片机8路电压采集代码。

#include "reg52.h"float  shuju;unsigned char sj;unsigned int gata;unsigned char gw,sw,bw;unsigned char kk,tdao;//4联共阳数码管,最高位显示通道号,其他三位为电压值unsigned char code shuzi[]={                             0xC0,0xF9,0xA4,0xB0,0x99,                             0x92,0x82,0xF8,0x80,0x90};unsigned char code duanxuan[]={0x0f,0x8f,0x4f,0xcf,0x2f,0xaf,0x6f,0xff};sbit START=P3^1;   //ALE也连接P3.1sbit OE=P3^3;sbit EOC=P3^2;sbit clock=P3^0;void delay(){    unsigned char i;    for(i=200;i>0;i--);}//timer initvoid Timer(){ TMOD=0x21;  TH0=0x3c;//20ms TL0=0xb0; TH1=0xff;//100khz TL1=0xfd; }void AD_zh(){ START=0;        //ADC0809的启动信号  START=1;  START=0; while(EOC==0);     //等待转换结束 OE=1;               //输出转换数据 sj=P1;              //P1口接收数据 shuju=sj;//转换为浮点型 shuju=(shuju/51.0)*100.00;//转换成百位数据; gata=shuju;//转换为整型 bw=gata/100;//分离百位 sw=(gata/10)%10;//分离十位 gw=gata%10;//分离个位}//timer0/counter0 interruptvoid timer0(void) interrupt 1   //T0用于产生秒信号{ TH0=0x3c; TL0=0xb0; kk++;  if(kk==20)  {  kk=0;  tdao++;             //用于转换通道,测量各个通道数据  if(tdao==8)  {    tdao=0;  } }}void timer1(void) interrupt 3{ clock=~clock;           //定时器产生ADC0809所需的时钟信号}void display(){ P0=shuzi[gw];   //个位 P2=0xf8&duanxuan[tdao]; delay();  P0=shuzi[sw];    //十位 P2=0xf4&duanxuan[tdao]; delay(); P0=shuzi[bw]&0x7f;      //电压百位 P2=0xf2&duanxuan[tdao]; delay(); P0=shuzi[tdao+1];    //通道从1~8,每秒换一个通道 P2=0xf1&duanxuan[tdao]; delay();}//the main funvoid main(void){ uchar  i; Timer(); TR0=1; ET0=1; TR1=1; ET1=1; EA=1;while(1){   AD_zh();   for(i=0;i<10;i++)    //降低刷新速度,使显示稳定   {     display();//显示程序   } }}

提醒:《ADC0809做的51单片机8路电压采集》最后刷新时间 2024-03-14 00:58:02,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《ADC0809做的51单片机8路电压采集》该内容的真实性请自行鉴别。