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

標(biāo)題: STM32手持示波器原理圖+源程序 [打印本頁(yè)]

作者: cwjcwj    時(shí)間: 2019-10-23 21:35
標(biāo)題: STM32手持示波器原理圖+源程序



單片機(jī)源程序如下:
  1. #include "stm32f10x.h"
  2. #include "delay.h"
  3. #include "led.h"
  4. #include "usart1.h"
  5. #include "lcd.h"
  6. #include "adc.h"
  7. #include "string.h"
  8. #include "stdio.h"


  9. u16 DeviceCode;//LCD_ID型號(hào)參數(shù)變量
  10. unsigned int i=0,n=320,Vmun=0,ADV[310];       
  11. char c[5],cc[];

  12. // ADC1轉(zhuǎn)換的電壓值通過(guò)MDA方式傳到SRAM
  13. extern __IO uint16_t ADC_ConvertedValue; //動(dòng)變量

  14. // 局部變量,用于保存轉(zhuǎn)換計(jì)算后的電壓值          
  15. float ADC_ConvertedValueLocal;                                          //隨著動(dòng)變量而動(dòng)
  16. static u16 voltage_x1=9,voltage_y1=120,voltage_x2=9,voltage_y2=142;
  17. u16 time=0;

  18. int flag=0;
  19.         int allnum=0,move_x=10,move_y=120,clr_flag=0,nn=0;
  20.          
  21.         int ad[300],vtime=1500;

  22. void init_panel(void);//初始化界面
  23. void refresh_screen();//刷新屏幕

  24. int main(void)
  25. {


  26.         ADC1_Init();//ADC初始化
  27.        
  28.         USART1_Config(9600);  //串口初始化

  29.         delay_init(72);     //系統(tǒng)滴答定時(shí)器初始化最大定時(shí)1864ms
  30.        
  31.         lcd_init();                        //LCD初始化
  32.        
  33.         DeviceCode=LCD_RD_DATA(R0);//LCD的R0寄存器保存著LCD_ID型號(hào)數(shù)值
  34.        
  35.         printf(" LCD_ID:%x\r\n",DeviceCode); //向串口打印LCD_ID型號(hào)
  36.        
  37.         //提取出千位,百位,十位,各位
  38.   c[0]=DeviceCode/4096;c[1]=DeviceCode/256%16;c[2]=DeviceCode/16%16;c[3]=DeviceCode%16;
  39.         c[0]+=0x30;        c[1]+=0x30;        c[2]+=0x30;        c[3]+=0x30;//16進(jìn)制轉(zhuǎn)成字符型

  40.         init_panel();//初始化界面       
  41.        
  42.         delay_ms(50);

  43.   while (1)
  44.   {

  45.                         for(allnum=0;allnum<303;allnum++)
  46.                         {
  47.                
  48.                 /***                清除原來(lái)的電壓點(diǎn)痕跡   ****/               
  49.                                 if(clr_flag==1)               
  50.                                 {                               
  51.                                         LCD_DrawPoint_3(allnum + move_x ,move_y-ad[allnum],Def_BACK_COLOR);
  52.                                         if((allnum<=300)&&(ad[allnum+1]>ad[allnum]))
  53.                                         {
  54.                                                 for(nn=ad[allnum+1]-ad[allnum];nn>0;nn--)
  55.                                                 {
  56.                                                         LCD_DrawPoint_3(allnum+1+ move_x ,move_y-(ad[allnum+1]-nn),Def_BACK_COLOR);        //delay_ms(1);
  57.                                                 }
  58.                                         }

  59.                                         if((allnum<=300)&&(ad[allnum+1]<ad[allnum]))
  60.                                         {
  61.                                                 for(nn=ad[allnum]-ad[allnum+1];nn>0;nn--)
  62.                                                 {
  63.                                                         LCD_DrawPoint_3(allnum +1+ move_x ,move_y-(ad[allnum+1]+nn),Def_BACK_COLOR);        //delay_ms(1);
  64.                                                 }
  65.                                         }
  66.                                 }
  67.                                                
  68.                                         /***                取電壓AD值           ****/
  69.                                 ad[allnum]=ADC_ConvertedValue/90;
  70.                                         /***        畫(huà)電壓點(diǎn)           ****/
  71.                                 LCD_DrawPoint_3(allnum + move_x ,move_y-ad[allnum] ,YELLOW);       
  72.                                 if((allnum>=1)&&(ad[allnum]>ad[allnum-1]))
  73.                                 {
  74.                                         for(nn=ad[allnum]-ad[allnum-1];nn>0;nn--)
  75.                                         {
  76.                                                 LCD_DrawPoint_3(allnum + move_x ,move_y-(ad[allnum]-nn),YELLOW);       
  77.                                         }
  78.                                 }
  79.                                 if((allnum>=1)&&(ad[allnum]<ad[allnum-1]))
  80.                                 {
  81.                                         for(nn=ad[allnum-1]-ad[allnum];nn>0;nn--)
  82.                                         {
  83.                                                 LCD_DrawPoint_3(allnum + move_x ,move_y-(ad[allnum]+nn),YELLOW);
  84.                                         }
  85.                                 }

  86.                                 if(allnum==300){clr_flag=1;}       
  87.                         }
  88.                                         /***                刷新屏幕           ****/
  89.                                 refresh_screen();       
  90.        
  91.   }
  92. }


  93. void init_panel(void)//初始化界面
  94. {
  95.         int linenum=0;
  96.        
  97.         LCD_Clear(DARKBLUE);//清屏談藍(lán)色,示波器常見(jiàn)背景色
  98.         LCD_Fill(8,18,320-8,240-22,Def_BACK_COLOR);//中間一大塊黑色背景
  99.        
  100.         /*    上行顯示的東東    */
  101.         LCD_ShowString(4,1,"RIGOL",16,Def_POINT_COLOR,DARKBLUE);//左上角顯示普源品牌示波器logo
  102.         LCD_ShowString(52,1," AUTO ",16,GREEN,BLACK);
  103.         LCD_ShowString(120,1,"~~~~~~~~~~",16,LGRAYBLUE,BLACK);       
  104.         LCD_ShowString(226,1," $       V ",16,YELLOW,BLACK);               
  105.         LCD_ShowString(246,1,"1",16,BLACK,YELLOW);               
  106.         LCD_ShowString(254,1," 2.00",16,YELLOW,BLACK);       

  107.         /************************    中間顯示的東東****************************************/       
  108.                 /*   橫條*/
  109.                 for(linenum=5;linenum<300;linenum+=8)       
  110.                 {LCD_DrawPoint_3(10+linenum,20,GRAY);}
  111.        
  112.         for(linenum=5;linenum<300;linenum+=8)       
  113.                 {LCD_DrawPoint_3(10+linenum,70,GRAY);}

  114.         for(linenum=5;linenum<300;linenum+=8)        //中間橫條
  115.                 {LCD_DrawPoint_3(10+linenum,120,GRAY);}

  116.         for(linenum=5;linenum<300;linenum+=8)       
  117.                 {LCD_DrawPoint_3(10+linenum,170,GRAY);}       
  118.                
  119.                 for(linenum=5;linenum<300;linenum+=8)       
  120.                 {LCD_DrawPoint_3(10+linenum,218,GRAY);}
  121.        
  122.        
  123.         /*豎條     */
  124.                 for(linenum=5;linenum<200;linenum+=8)
  125.                 {LCD_DrawPoint_3(10,16+linenum,GRAY);}
  126.        
  127.         for(linenum=5;linenum<200;linenum+=8)
  128.                 {LCD_DrawPoint_3(60,16+linenum,GRAY);}

  129.         for(linenum=5;linenum<200;linenum+=8)
  130.                 {LCD_DrawPoint_3(110,16+linenum,GRAY);}

  131.         for(linenum=5;linenum<200;linenum+=8)
  132.                 {LCD_DrawPoint_3(160,16+linenum,GRAY);}

  133.         for(linenum=5;linenum<200;linenum+=8)       
  134.                 {LCD_DrawPoint_3(210,16+linenum,GRAY);}

  135.         for(linenum=5;linenum<200;linenum+=8)       
  136.                 {LCD_DrawPoint_3(260,16+linenum,GRAY);}
  137.                
  138.         for(linenum=5;linenum<200;linenum+=8)       
  139.                 {LCD_DrawPoint_3(310,16+linenum,GRAY);}
  140.                
  141.         LCD_ShowString(157,20,"T",12,BLACK,BROWN);       
  142.         LCD_ShowString(216,20,"t",16,BLACK,BROWN);       
  143.         LCD_ShowString(224,20," <5HZ     ",16,WHITE,DARKBLUE);               
  144.         /************************    中間顯示的東東****************************************/               
  145.                
  146.                
  147.                
  148.        
  149.         /*    下行顯示的東東     */
  150.         LCD_ShowString(4,240-18," CH1- ",16,BLACK,YELLOW);
  151.         LCD_ShowString(52,240-18,"  1.00V ",16,YELLOW,BLACK);//1.00V  這個(gè)值要傳數(shù)據(jù),所以要用指針傳參數(shù)進(jìn)去才行
  152.         LCD_ShowString(144,240-18," Time ",16,WHITE,BLACK);
  153.         LCD_ShowString(184,240-18," 500.0",16,WHITE,BLACK);
  154.         LCD_ShowString(232,240-18,"us ",16,WHITE,BLACK);
  155.         LCD_ShowString(254,240-18,"T",16,BLACK,BROWN);
  156.         LCD_ShowString(262,240-18,"->",16,BROWN,BLACK);
  157.         LCD_ShowString(276,240-18,"0.00",16,BROWN,BLACK);
  158.         LCD_ShowString(308,240-18,"s",16,BROWN,BLACK);
  159. }
  160. void refresh_screen()//刷新屏幕
  161. {
  162.                 int linenum=0;
  163.        
  164.        
  165. //                LCD_Fill(8,18,320-8,240-22,Def_BACK_COLOR);//中間一大塊黑色背景
  166.        
  167.         /************************    中間顯示的東東****************************************/
  168.        
  169.                 /*   橫條*/
  170.                 for(linenum=5;linenum<300;linenum+=8)       
  171.                 {LCD_DrawPoint_3(10+linenum,20,GRAY);}
  172.        
  173.         for(linenum=5;linenum<300;linenum+=8)       
  174.                 {LCD_DrawPoint_3(10+linenum,70,GRAY);}

  175.         for(linenum=5;linenum<300;linenum+=8)       
  176.                 {LCD_DrawPoint_3(10+linenum,120,GRAY);}

  177.         for(linenum=5;linenum<300;linenum+=8)       
  178.                 {LCD_DrawPoint_3(10+linenum,170,GRAY);}       
  179.                
  180.                 for(linenum=5;linenum<300;linenum+=8)       
  181.                 {LCD_DrawPoint_3(10+linenum,218,GRAY);}
  182.        
  183.        
  184.         /*豎條     */
  185.                 for(linenum=5;linenum<200;linenum+=8)
  186.                 {LCD_DrawPoint_3(10,16+linenum,GRAY);}
  187.        
  188.         for(linenum=5;linenum<200;linenum+=8)
  189.                 {LCD_DrawPoint_3(60,16+linenum,GRAY);}

  190.         for(linenum=5;linenum<200;linenum+=8)
  191.                 {LCD_DrawPoint_3(110,16+linenum,GRAY);}

  192.         for(linenum=5;linenum<200;linenum+=8)
  193.                 {LCD_DrawPoint_3(160,16+linenum,GRAY);}

  194.         for(linenum=5;linenum<200;linenum+=8)       
  195.                 {LCD_DrawPoint_3(210,16+linenum,GRAY);}

  196.         for(linenum=5;linenum<200;linenum+=8)       
  197.                 {LCD_DrawPoint_3(260,16+linenum,GRAY);}
  198.                
  199.         for(linenum=5;linenum<200;linenum+=8)       
  200.                 {LCD_DrawPoint_3(310,16+linenum,GRAY);}       
  201.        
  202.         LCD_ShowString(157,20,"T",12,BLACK,BROWN);       
  203.         LCD_ShowString(216,20,"t",16,BLACK,BROWN);       
  204.         LCD_ShowString(224,20," <5HZ     ",16,WHITE,DARKBLUE);               
  205.         /************************    中間顯示的東東****************************************/       
  206. }
復(fù)制代碼

所有資料51hei提供下載:
L001基于F1標(biāo)準(zhǔn)庫(kù)3.5版本核心源代碼.zip (20.83 KB, 下載次數(shù): 95)
L001型示波器使用說(shuō)明.doc (6.76 MB, 下載次數(shù): 62)
L001原理圖.pdf (1.04 MB, 下載次數(shù): 79)



作者: tian_000    時(shí)間: 2019-10-25 13:04
厲害,感謝共享資料。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 中文字幕 视频一区 | 欧美八区 | 中国一级大黄大片 | 国产美女自拍视频 | 国产精品一区二区三区久久 | 亚洲第一视频网 | 99精品国产一区二区三区 | 日韩中文在线视频 | 天天看天天操 | 色片在线观看 | 国产精品一区二区在线 | 色婷婷综合久久久中文字幕 | 古装三级在线播放 | 国产精品观看 | 国产区视频在线观看 | 欧美一区二区三区久久精品 | 视频一区二区中文字幕日韩 | avmans最新导航地址 | 在线视频一区二区三区 | 国产美女视频黄 | 久久久精品黄色 | 国产在线成人 | 91国内精品久久 | 国产精品一区二区免费看 | 成人精品鲁一区一区二区 | 国产精品一区二区电影 | av天天看 | 粉色午夜视频 | 免费视频一区二区 | 99久久婷婷国产综合精品 | 国产精品久久久久久久久久三级 | 麻豆精品久久 | 久久综合久 | 羞羞涩涩在线观看 | 国产精品99一区二区 | 久久精品国产一区二区三区 | 午夜影院黄 | 精产国产伦理一二三区 | 国产三级一区二区三区 | 日本超碰 | 久久久精品综合 |