標題:
proteus 示波器和keil c代碼結(jié)合能同時發(fā)出至少4種不同的波形嗎?
[打印本頁]
作者:
zhuhaiya
時間:
2019-12-14 21:00
標題:
proteus 示波器和keil c代碼結(jié)合能同時發(fā)出至少4種不同的波形嗎?
#include<reg51.h>
#include<math.h>
#include<absacc.h>
#define LTC1451 XBYTE[0xfaff] //設(shè)置LTC1451的訪問地址
#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++){ //負半周正弦波形
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; //兩路同時進行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ā)生時鐘脈沖
clk=0;
}
cs=1; //發(fā)出第13個脈沖
cs=0; //CS引腳置低電平
}
復(fù)制代碼
代碼有問題,有哪位大神看看什么問題,有代碼再好不過了。。。。。
da(value);有一處警告,不礙事吧。
1.png
(44.79 KB, 下載次數(shù): 44)
下載附件
2019-12-14 20:55 上傳
例如類似這樣
作者:
51hei**1140
時間:
2019-12-14 22:06
你好!
如果同時輸出四種波形,需要四路獨立輸出才可
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1