|
- #include<reg51.h>
- #include<math.h>
- #include<absacc.h>
- #define LTC1451 XBYTE[0xfaff] //設(shè)置LTC1451的訪問(wèn)地址
- #define DAC1 XBYTE[0xfbff] //1# DAC輸入鎖存器的地址
- #define DAC2 XBYTE[0xfcff]
- #define DAC3 XBYTE[0xfdff] //3# DAC輸入鎖存器的地址
- #define DAC4 XBYTE[0xfeff]
- #define DAOUT XBYTE[0xffff] //DAC寄存器的共同地址
- sbit din=P3^0; //定義芯片引腳變量
- sbit clk=P3^1;
- sbit cs=P3^2;
- sbit P1_7=P1^7;
- sbit P1_0=P1^0;
- sbit P1_1=P1^1;
- sbit P1_2=P1^2;
- sbit P1_3=P1^3;
- #define PI 3.1415
- void delay(unsigned int time){
- unsigned int j=0;
- for(;time>0;time--)
- for(j=0;j<125;j++);
- }
- void da(unsigned int value);
- void main(){
- unsigned int num1,num2,num3,num4,value;
- while(1){
- if(P1^0==0){
- delay(10);
- if(P1^0==0){
- for(num1=180;num1<360;num1++){ //負(fù)半周正弦波形
- value=2047 + 2047*sin((float)num1/180*PI);
- da(value);
- }
- }}
- if(P1^1==0){ //正弦?
- delay(10);
- if(P1^1==0){
- for(num2=0;num2<360;num2++)
- value=127+127*sin((float)num2/180*PI);
- }
- }
- if(P1^2==0){
- delay(10); //三角波
- if(P1^2==0){
- for(num3=0;num3<225;num3++) //上升段波形
- LTC1451=num3;
- for(num3=225;num3>0;num3--) //下降段波形
- LTC1451=num3;
- }
- }
- if(P1^3==0){
- delay(10);
- if(P1^3==0){
- for(num4=0;num4<255;num4++){
- DAC3=num4; //上鋸齒送入1 #DAC
- DAC4=255-num4; //下鋸齒送入2 #DAC
- DAOUT=num4; //兩路同時(shí)進(jìn)行D/A轉(zhuǎn)換輸出
- }
- }
- }
- }
- da(value);
- }
- void da(unsigned int v){ //DA轉(zhuǎn)換
- char i=11;
- cs=1;
- cs=0; //CS引腳置高電平
- for(;i>=0;i--){
- din=(v>>i)& 0x01; //分解并行數(shù)據(jù),串行送入DIN引腳
- clk=1; //發(fā)生時(shí)鐘脈沖
- clk=0;
- }
- cs=1; //發(fā)出第13個(gè)脈沖
- cs=0; //CS引腳置低電平
- }
復(fù)制代碼 代碼有問(wèn)題,有哪位大神看看什么問(wèn)題,有代碼再好不過(guò)了!!!!!!
da(value);有一處警告,不礙事吧。
|
-
1.png
(44.79 KB, 下載次數(shù): 44)
下載附件
2019-12-14 20:55 上傳
例如類(lèi)似這樣
|