標題: proteus 示波器和keil c代碼結(jié)合能同時發(fā)出至少4種不同的波形嗎? [打印本頁]

作者: zhuhaiya    時間: 2019-12-14 21:00
標題: proteus 示波器和keil c代碼結(jié)合能同時發(fā)出至少4種不同的波形嗎?
  1. #include<reg51.h>
  2. #include<math.h>
  3. #include<absacc.h>
  4. #define LTC1451 XBYTE[0xfaff]                   //設(shè)置LTC1451的訪問地址
  5. #define DAC1 XBYTE[0xfbff]                      //1# DAC輸入鎖存器的地址
  6. #define DAC2 XBYTE[0xfcff]
  7. #define DAC3 XBYTE[0xfdff]                      //3# DAC輸入鎖存器的地址
  8. #define DAC4 XBYTE[0xfeff]
  9. #define DAOUT XBYTE[0xffff]                     //DAC寄存器的共同地址
  10. sbit din=P3^0;                                  //定義芯片引腳變量
  11. sbit clk=P3^1;
  12. sbit cs=P3^2;
  13. sbit P1_7=P1^7;
  14. sbit P1_0=P1^0;
  15. sbit P1_1=P1^1;
  16. sbit P1_2=P1^2;
  17. sbit P1_3=P1^3;
  18. #define PI 3.1415

  19. void delay(unsigned int time){
  20.         unsigned int j=0;
  21.         for(;time>0;time--)
  22.                 for(j=0;j<125;j++);
  23.                 }

  24. void da(unsigned int value);
  25. void main(){
  26. unsigned int num1,num2,num3,num4,value;
  27.         while(1){
  28. if(P1^0==0){
  29.         delay(10);
  30.         if(P1^0==0){
  31. for(num1=180;num1<360;num1++){        //負半周正弦波形
  32. value=2047 + 2047*sin((float)num1/180*PI);
  33. da(value);
  34. }
  35. }}

  36. if(P1^1==0){                            //正弦?
  37.         delay(10);
  38.         if(P1^1==0){
  39.         for(num2=0;num2<360;num2++)
  40.         value=127+127*sin((float)num2/180*PI);
  41. }
  42. }
  43. if(P1^2==0){
  44. delay(10);                                    //三角波
  45.         if(P1^2==0){
  46.         for(num3=0;num3<225;num3++)              //上升段波形
  47.         LTC1451=num3;
  48.         for(num3=225;num3>0;num3--)              //下降段波形
  49.         LTC1451=num3;
  50. }
  51. }
  52. if(P1^3==0){
  53.         delay(10);
  54.         if(P1^3==0){
  55.         for(num4=0;num4<255;num4++){
  56.                 DAC3=num4;                            //上鋸齒送入1 #DAC
  57.                 DAC4=255-num4;                        //下鋸齒送入2 #DAC
  58.                 DAOUT=num4;                           //兩路同時進行D/A轉(zhuǎn)換輸出
  59.         }
  60. }
  61. }
  62. }
  63.         da(value);
  64. }

  65. void da(unsigned int v){                    //DA轉(zhuǎn)換
  66. char i=11;
  67. cs=1;
  68. cs=0;                                             //CS引腳置高電平
  69. for(;i>=0;i--){
  70. din=(v>>i)& 0x01;                            //分解并行數(shù)據(jù),串行送入DIN引腳
  71. clk=1;                                            //發(fā)生時鐘脈沖
  72. clk=0;
  73. }
  74. cs=1;                                             //發(fā)出第13個脈沖
  75. cs=0;                                             //CS引腳置低電平
  76. }
復(fù)制代碼
代碼有問題,有哪位大神看看什么問題,有代碼再好不過了。。。。。
        da(value);有一處警告,不礙事吧。


1.png (44.79 KB, 下載次數(shù): 44)

例如類似這樣

例如類似這樣

作者: 51hei**1140    時間: 2019-12-14 22:06
你好!
如果同時輸出四種波形,需要四路獨立輸出才可




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1