久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3783|回復: 0
打印 上一主題 下一主題
收起左側

stm32的示波器程序設計 DAC1輸出三角波

[復制鏈接]
跳轉到指定樓層
樓主
ID:587820 發表于 2019-7-24 13:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基于stm32F1的示波器設計,外加三角波發生器

單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"         
  7. #include "adc.h"
  8. #include "dac.h"
  9. #include "exti.h"
  10. #include "stm32f10x_adc.h"



  11. u16   buf[1000];
  12. u16   table[50]  ={0,25,50,75,100,125,150,175,200,225,250,275,300,325,350,375,400,425,450,475,500,525,550,575,600,625,650,675,700,725,750,775,800,825,850};
  13. u16                table1[160] ={0,5,10,15,20,30,35,40,45,55,60,65,70,80,85,
  14.                                                                                 90,95,105,110,115,120,130,135,140,145,155,
  15.                                                                                 160,165,170,180,185,190,195,205,210,215,220,
  16.                                                                                 230,235,240,245,250,255,260,265,270,275,280,285,290,295,300,305,
  17.                                                                                 310,315,320,325,330,335,340,345,350,355,360,365,370,375,
  18.                                                                                 380,385,390,395,400,405,410,415,420,425,430,435,440,445,450,455,460,465,470,475,
  19.                     480,485,490,495,500,505,510,515,520,525,530,535,540,545,550,555,560,565,570,575,
  20.                     580,585,590,595,600,605,610,615,620,625,630,635,640,645,650,655,660,665,670,675,
  21.                     680,685,690,695,700,705,710,715,720,725};
  22. u16 Ypos1=100,Ypos2=100,Xpos1,Xpos2;
  23. u16 adcx,dsl;
  24. float temp1;
  25. u16  t=75;
  26. float p;
  27. u16  h=3;
  28. u16 d=13;
  29. u32  tim=1;
  30. u32  bei=1;
  31. u16 Yinit=75;
  32. u8 a;
  33. u8 len;                                                                               

  34. void drawgaid() //畫網格  
  35. {
  36.         u16 x,y;
  37.         for(x=0;x<301;x=x+25)
  38.                 for(y=0;y<201;y=y+5)
  39.                 {
  40.                         LCD_Fast_DrawPoint(x,y,BLUE );
  41.                 }
  42.         for(y=0;y<201;y=y+25)
  43.                 for(x=0;x<301;x=x+5)
  44.                 {
  45.                         LCD_Fast_DrawPoint(x,y,BLUE );
  46.                 }
  47. }


  48. void clear_point(u16 hang)//更新顯示屏當前列
  49. {
  50.         float index_clear_lie = 50;
  51.         POINT_COLOR = BLACK ;
  52.         for(index_clear_lie = 50;index_clear_lie <426;index_clear_lie=index_clear_lie+1)
  53.         {               
  54.                 LCD_DrawPoint(hang,index_clear_lie );
  55.                 LCD_DrawPoint(hang+1,index_clear_lie );
  56.                 LCD_DrawPoint(hang+2,index_clear_lie );
  57.                 LCD_DrawPoint(hang+3,index_clear_lie );
  58.                 LCD_DrawPoint(hang+4,index_clear_lie );
  59.         }
  60.         if(hang==table[h])//判斷hang是否為25的倍數
  61.         {
  62.                         for(index_clear_lie = 50;index_clear_lie <426;index_clear_lie=index_clear_lie+5)
  63.                         {               
  64.                                 LCD_Fast_DrawPoint(hang ,index_clear_lie,        GREEN );
  65.                         }
  66.                         h++;
  67.                         if(h>29) h=3;
  68.         }
  69.         if(hang ==table1[d])//判斷hang是否為5的倍數
  70.         {
  71.                         for(index_clear_lie = 50;index_clear_lie <426;index_clear_lie=index_clear_lie+25)//行數
  72.                 {               
  73.                                 LCD_Fast_DrawPoint(hang ,index_clear_lie,YELLOW );
  74.                         }
  75.                         d++;
  76.                         if(d>135) d=13;//行長度
  77.         }
  78.        
  79.         POINT_COLOR=RED;       
  80. }
  81. void DrawOscillogram()//畫波形圖
  82. {
  83.                 for(t=15;t<146;t++)//存儲AD數值
  84.                 {
  85.                         buf[t] =Get_Adc(ADC_Channel_1);
  86.                         if(tim>1)
  87.                                 delay_us(tim );//改變AD取樣間隔
  88.                 }
  89.                         for(t=15;t<146;t++)
  90.                 {
  91.                         p=t*5;
  92.                         clear_point(p );       
  93.                         Ypos2=Yinit+buf[t]*100/4096;//轉換坐標
  94.                         Ypos2=Ypos2*bei;
  95.                         if(Ypos2 >450) Ypos2 =450; //超出范圍不顯示
  96.                         LCD_DrawLine (5*t ,2*Ypos1+75 ,5*(t+1),2*Ypos2+75  );
  97.                         Ypos1 =Ypos2 ;
  98.                 }       
  99. }
  100. float get_vpp(void)           //獲取峰峰值
  101. {
  102.        
  103.         u32 max_data=buf[0];
  104.         u32 min_data=buf[0];
  105.         u32 n=0;
  106.         float Vpp=0;
  107.         for(n = 1;n<201;n++)
  108.         {
  109.                 if(buf[n]>max_data)
  110.                 {
  111.                         max_data = buf[n];
  112.                 }
  113.                 if(buf[n]<min_data)
  114.                 {
  115.                         min_data = buf[n];
  116.                 }                       
  117.         }        
  118.         Vpp = (float)(max_data-min_data);
  119.         Vpp = Vpp*(3300.0/4095);
  120.         return Vpp;       
  121. }




  122. int main(void)
  123. {         
  124.   u16 adcx;
  125.         float temp;
  126.         delay_init();                     //延時函數初始化          
  127.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
  128.         uart_init(115200);                 //串口初始化為115200
  129.         LED_Init();                             //LED端口初始化
  130.         LCD_Init();                                
  131.         Adc_Init();                                  //ADC初始化
  132.          Dac1_Init();                                //DAC初始化
  133.          
  134.          KEY_Init ();
  135.          POINT_COLOR=RED;
  136.          LCD_Display_Dir(1);
  137.          //LCD_ShowString(0,210,200,24,24,"Vpp=0000mv");
  138.          //LCD_ShowxNum(284,220,tim ,3,16,0);

  139. //        POINT_COLOR=RED;//設置字體為紅色
  140.         //LCD_ShowString(60,50,200,16,16,"WarShip STM32");       
  141.         //LCD_ShowString(60,70,200,16,16,"ADC TEST");       
  142.         //LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
  143.         //LCD_ShowString(60,110,200,16,16,"2015/1/14");       
  144.         //顯示提示信息
  145.         //POINT_COLOR=BLUE;//設置字體為藍色
  146.         //LCD_ShowString(60,130,200,16,16,"ADC_CH0_VAL:");             
  147.         //LCD_ShowString(60,150,200,16,16,"ADC_CH0_VOL:0.000V");               
  148.         while(1)
  149.         {
  150.                 adcx=Get_Adc_Average(ADC_Channel_1,10);
  151.                 //LCD_ShowxNum(156,130,adcx,4,16,0);//顯示ADC的值
  152.                 temp=(float)adcx*(3.3/4096);
  153.                 adcx=temp;
  154.                 //LCD_ShowxNum(156,150,adcx,1,16,0);//顯示電壓值
  155.                 temp-=adcx;
  156.                 temp*=1000;
  157.                 //LCD_ShowxNum(172,150,temp,3,16,0X80);
  158.                 DrawOscillogram();//畫波形
  159.                          temp1=get_vpp();//峰峰值mv               
  160.                          LCD_ShowxNum(100,450,temp1,4,24,0);        //顯示峰峰值mv                        
  161.                 LED0=!LED0;//判斷程序是否運行       
  162.         }
  163. }
復制代碼

所有資料51hei提供下載:
單通道示波器+DAC1輸出三角波.7z (242.46 KB, 下載次數: 37)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人av影院 | 一区二区三区在线免费观看 | 成人免费视频在线观看 | 91天堂| 久久久www成人免费无遮挡大片 | 成人精品国产一区二区4080 | 成年人在线观看视频 | 日韩欧美国产精品一区二区三区 | 国产精品乱码一区二三区小蝌蚪 | 精品亚洲一区二区三区 | 99久久免费精品视频 | 欧美在线观看一区二区 | 一区二区三区在线 | 日韩欧美国产不卡 | 成人自拍av | 欧美aⅴ | 午夜精品久久久久久久星辰影院 | 亚洲视频国产 | 在线高清免费观看视频 | 亚洲福利精品 | 欧美日韩不卡合集视频 | 91精品国产91久久久久青草 | 在线国产小视频 | 亚洲精品一区二区三区在线 | 久久精品色欧美aⅴ一区二区 | 亚洲综合久久网 | 91精品国产高清一区二区三区 | 中文字幕一区二区在线观看 | 亚洲精品av在线 | 久久亚洲国产 | 亚洲国产一区二区在线 | 亚洲国产成人精品在线 | 91久久精品一区二区三区 | 国产一区二区三区在线视频 | 欧美久久久久 | 中文字幕一区在线 | 久久国产精品视频 | 久久国产精品久久久久久 | 日韩一区二区三区在线 | 成人欧美一区二区三区色青冈 | 成人av一区二区亚洲精 |