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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32手持示波器原理圖+源程序

  [復制鏈接]
跳轉到指定樓層
樓主



單片機源程序如下:
  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型號參數變量
  10. unsigned int i=0,n=320,Vmun=0,ADV[310];       
  11. char c[5],cc[];

  12. // ADC1轉換的電壓值通過MDA方式傳到SRAM
  13. extern __IO uint16_t ADC_ConvertedValue; //動變量

  14. // 局部變量,用于保存轉換計算后的電壓值          
  15. float ADC_ConvertedValueLocal;                                          //隨著動變量而動
  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);     //系統滴答定時器初始化最大定時1864ms
  30.        
  31.         lcd_init();                        //LCD初始化
  32.        
  33.         DeviceCode=LCD_RD_DATA(R0);//LCD的R0寄存器保存著LCD_ID型號數值
  34.        
  35.         printf(" LCD_ID:%x\r\n",DeviceCode); //向串口打印LCD_ID型號
  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進制轉成字符型

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

  43.   while (1)
  44.   {

  45.                         for(allnum=0;allnum<303;allnum++)
  46.                         {
  47.                
  48.                 /***                清除原來的電壓點痕跡   ****/               
  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.                                         /***        畫電壓點           ****/
  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);//清屏談藍色,示波器常見背景色
  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  這個值要傳數據,所以要用指針傳參數進去才行
  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. }
復制代碼

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


評分

參與人數 2黑幣 +59 收起 理由
溫xyz + 9 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:207943 發表于 2019-10-25 13:04 | 只看該作者
厲害,感謝共享資料。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 网色 | 午夜精品久久久久久不卡欧美一级 | 亚洲午夜久久久 | 日韩在线免费视频 | 国产欧美在线观看 | 日韩av最新网址 | 成人av在线大片 | 男女搞网站 | 日韩a| 中文字幕一区二区三区四区五区 | 日韩精品一区二区在线观看 | 国产精品一区二区无线 | 伊人网站在线观看 | 亚洲精品黄色 | 中文字幕欧美日韩一区 | 9久久婷婷国产综合精品性色 | 日韩一区欧美一区 | 天天操天天怕 | 国产成人免费 | 黄色免费观看网站 | 一区二区三区欧美 | 久久综合欧美 | 日本三级全黄三级a | 亚洲一区二区在线视频 | 久草网在线视频 | 99re在线视频精品 | 99国产精品一区二区三区 | 久久高清| 一级毛片免费视频观看 | 97精品超碰一区二区三区 | 亚洲一区影院 | 浴室洗澡偷拍一区二区 | 干干干日日日 | av官网在线| 日本天天操 | 亚洲精品一区中文字幕乱码 | 国产精品亚洲第一 | 99精品在线 | 久久精品视频在线观看 | 亚洲性在线 | 欧美精品乱码99久久影院 |