单片机数模转换程序将da#include//52系列单片机头文件#include#defineucharunsignedchar#defineuintunsignedintsbitdula=P2^6;//申明U1锁存器的锁存端sbitwela=P2^7;//申明U2锁存器的锁存端sbitadwr=P3^6;//定义AD的WR端口sbitadrd=P3^7;//定义AD的RD端口sbitled=P2^5;sbitDAC0832_CS=P3^2;sbitDAC0832_WR=P3^6;sbitAD_CS=P0^7;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharweima[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf};voiddelayms(uintxms){uinti,j;for(i=xms;i>0;i--)//i=xms即延时约xms毫秒for(j=110;j>0;j--);}voiddisplay(ucharbai,ucharshi,ucharge)//显示子函数{dula=1;P0=table[bai]|0x80;//送段选数据dula=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时wela=1;//原来段选数据通过位选锁存器形成混乱P0=0x7e;//送位选数据wela=0;delayms(1);//延时dula=1;P0=table[shi];dula=0;P0=0xff;wela=1;P0=0x7d;wela=0;delayms(1);dula=1;P0=table[ge];dula=0;P0=0xff;wela=1;P0=0x7b;wela=0;delayms(1);}/*voiddisplays(uchara,ucharb,ucharc)//显示子函数{dula=1;P0=table[a];//送段选数据dula=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时wela=1;//原来段选数据通过位选锁存器形成混乱P0=0x77;//送位选数据wela=0;delayms(1);//延时dula=1;P0=table[b];dula=0;P0=0xff;wela=1;P0=0x6f;wela=0;delayms(1);dula=1;P0=table[c];dula=0;P0=0xff;wela=1;P0=0x5f;wela=0;delayms(1);}*/voiddisplays(ucharshuzi,ucharweizhi,bitdp){dula=1;if(dp)P0=table[shuzi]|0x80;elseP0=table[shuzi];dula=0;wela=1;P0=weima[weizhi];wela=0;}voidmain()//主程序{uintad;ucharA1,A2,A3,adval;AD_CS=1;//置CSAD为0,选通ADCS以后不必再管ADCSDAC0832_CS=0;DAC0832_WR=0;while(1){wela=1;P0=0x7f;wela=0;adwr=1;_nop_();adwr=0;//启动AD转换_nop_();adwr=1;P1=0xff;//读取P1口之前先给其写全1adrd=1;//选通ADCS_nop_();adrd=0;//AD读使能_nop_();
1