我用的是ADC0832以及DAC0808为主要,设计电路图的
请各位兄弟姐妹帮我指出我现在的程序或者电路图中存在的问题
单片机源程序如下:
- #include<reg51.h>
- #define unchar unsigned char
- #define uint unsigned int
- #define out P0
- sbit st=p3^1;
- sbit OE=p3^4;
- sbit ALE=p3^3;
- sbit WR0=P2^1;
- sbit CS=P2^0;
- uint ad_0808,ad_data1,ad_data2,ad_data3,ad_data0,da_0832;
- unchar m,number;
- unchar x[8];
- void delaynms(uintx) ;//nms
- void ad0808();
- void da0832();
- void key();
- void main();
- {
- int a,i;
- a=0;
- number=1;
- p1=0x00;
- while(1);
- {ad0808();//调用ADC程序
- ad_0808=x[number];
- // 将X中的二进制变成十进制;
- for(i=0.;i<8;i++)
- {a=a+x[i]*2^i;
- } //将十进制的数进行比较,后分类讨论
- if (a<204)
- {
- da0832(); //204是4伏时候ADC转换的值,当小于4的时候,就传递给DAC
- }
- else;
- } //否则就不作为//关于单片机的数据对比的程序将对比的结果通过p1口给DA
- void delaynms(int x)
- {unchar i;
- while(x-->0)
- { for(i=0;i<125;i++)
- {;}
- }
- }
- void ad0808()
- {
- unchar i,m=1;
- for(i=0;i<8;i++)
- {P0=x[i];
- OE=0;
- ST=0;
- ST=1;
- ST=0;
- delaynms(1);
- while(!EOC);
- OE=1;
- x[m]=P2;
- OE=0;
- m++;
- }
- }
- void key()
- {if(!P3^5)
- {delaynms(20);
- number++;
- if(number>8)
- {number=1;
- }
- }
- }
- void da0832()//写下DAC转换就大功告成了我觉得
- {
- unchar temp;
- uint i=200;
- while(1)
- {out=temp;
- CS=0;
- WR0=0;
- CS=1;
- WR0=1;
- temp++;
- while(--i) ;
- }
- }
复制代码
由于我初学以上内容肯定存在很多错误,欢迎大家批评指正,一起学习 提高技术(为了方便保存, 把网页上的内容打包成了word,仅供参考 切勿照搬):
Doc1.docx
(111.73 KB, 下载次数: 29)
|