我用的是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)
2018-4-25 16:42 上傳
點擊文件名下載附件
|