找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3435|回复: 3
打印 上一主题 下一主题
收起左侧

stm32示波器制作资料

[复制链接]
跳转到指定楼层
楼主
ID:140725 发表于 2016-11-15 12:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近想玩玩stm32的ad功能,看到网上ds0201的示波器是开源的!淘宝的店主也很热情,给了我1.1版的源代码
是IAR编译器
我把它移植到KEIL下,为了提高速度,我使用fsmc方式驱动lcd显示
现在还有点小问题,正在解决中。。(波形有点重叠)
资料下载:
stm32示波器.zip (2.36 MB, 下载次数: 109)

ds0201.rar (20.64 KB, 下载次数: 68)


主程序预览:
  1. /**************************************************************                                 
  2.                     DQ-STM32开发板试验程序      
  3.                    2.4寸 示波器显示实例(FSMC液晶接口)
  4.                                    源程序由IAR移植       
  5.                                              
  6. ****************************************************************/
  7. /* Includes ------------------------------------------------------------------*/
  8. #include "stm32f10x.h"
  9. #include "fsmc_sram.h"
  10. #include "Function.h"
  11. #include "Lcd.h"
  12. #include "HW_V1_Config.h"
  13. #include "misc.h"
  14. #include "stm32f10x_it.h"
  15. #include "Calculate.h"
  16. #include "stm32f10x_usart.h"
  17. #include "stdio.h"

  18. /*******************************************************************************
  19. * Function Name  : main
  20. * Description    : Main program
  21. * Input          : None
  22. * Output         : None
  23. * Return         : None
  24. *******************************************************************************/
  25. int main(void)
  26. {
  27.   unsigned int i;

  28.   RCC_Configuration();      /* 系统时钟初始化 */
  29.   NVIC_Configuration();     /*GPIO端口配置*/

  30.   GPIO_Configuration();
  31.   DMA_Configuration();
  32.   ADC_Configuration();
  33.   Timer_Configuration();  
  34.   USART_Configuration();    /* 串口初始化 */

  35.   LCD_Initial();                        /*液晶初始化*/
  36.   Clear_Screen(BLACK);      //清屏幕
  37.   Display_Logo(30,150);  

  38.   /*----------显示开机提示信息页面----------*/

  39.   Display_Str(8, 87, GRN,PRN, "         System Initialize...");
  40.   Display_Str(8, 55, GRN,PRN, "            Please Wait");
  41.   Display_Str(8, 23, YEL,PRN, " Snail Dongbin Oscilloscope Ver 1.0 ");

  42.   printf("\n\r snail_dongbin 示波器实验 ! \n\r");

  43.   Delay_Counter=1000;
  44.   while (Delay_Counter)
  45.   {
  46.     Battery_Detect();         //电池电量检测
  47.     for(i=0; i<300; ++i)  Signal_Buffer[i]=120;
  48.     for(i=0; i<0x1000; ++i) Scan_Buffer[i]=1940;
  49.   };

  50.    /*示波器工作页面显示初始化*/  

  51.   Clear_Screen(BLACK);  //清屏幕
  52.   Display_Grid();       //显示背景网格
  53.   Display_Frame();

  54.     /* 主循环 */
  55.   while (1)         
  56.   {
  57.     Update_Item();
  58.     Scan_Wave();
  59.     if(Key_Buffer!=0)
  60.         {
  61.               Update[Item]=1;
  62.               if(Key_Buffer==KEYCODE_PLAY)
  63.                   {              
  64.                         Update[15]=1;
  65.                         if(Item_Index[RUNNING_STATUS]==RUN)  
  66.                                           Item_Index[RUNNING_STATUS]=HOLD;  
  67.                         else
  68.                                 {
  69.                                   ADC_Start();
  70.                                           Item_Index[RUNNING_STATUS]=RUN;
  71.                                           Sync=0;
  72.                         }
  73.               }
  74.       switch (Item)
  75.           {
  76.         case SYNC_MODE:   
  77.           if(Key_Buffer==KEYCODE_LEFT)  Item=TRIG_LEVEL;   
  78.           if(Key_Buffer==KEYCODE_RIGHT) Item=Y_SENSITIVITY;   
  79.           if(Key_Buffer==KEYCODE_DOWN){             //指向下一种扫描同步方式
  80.             if(Item_Index[SYNC_MODE]>0) Item_Index[SYNC_MODE]--;
  81.             else                        Item_Index[SYNC_MODE]=3;
  82.             ADC_Start();
  83.             Sync=0;
  84.             Frame=0;
  85.             Item_Index[RUNNING_STATUS]=RUN;                       
  86.             Update[RUNNING_STATUS]=1;
  87.           }                    
  88.           if(Key_Buffer==KEYCODE_UP){               //指向上一种扫描同步方式
  89.             if(Item_Index[SYNC_MODE]<3) Item_Index[SYNC_MODE]++;
  90.             else                        Item_Index[SYNC_MODE]=0;
  91.             ADC_Start();
  92.             Sync=0;
  93.             Frame=0;
  94.             Item_Index[RUNNING_STATUS]=RUN;                     
  95.             Update[RUNNING_STATUS]=1;
  96.           }                  
  97.         break;     
  98.               
  99.         case Y_SENSITIVITY:   
  100.           if(Key_Buffer==KEYCODE_LEFT)  Item=SYNC_MODE;     
  101.           if(Key_Buffer==KEYCODE_RIGHT) Item=X_SENSITIVITY;  
  102.           if(Key_Buffer==KEYCODE_UP){
  103.             Erase_Wave(MODEL);
  104.             ADC_Start();
  105.             Sync=0;
  106.             if((Item_Index[INPUT_ATTENUATOR]==0)&&(Item_Index[Y_SENSITIVITY]<9))  
  107.               Item_Index[Y_SENSITIVITY]++; //输入探头衰减=1时
  108.             if((Item_Index[INPUT_ATTENUATOR]==1)&&(Item_Index[Y_SENSITIVITY]<18))
  109.               Item_Index[Y_SENSITIVITY]++; //输入探头衰减=10时
  110.           }
  111.           if(Key_Buffer==KEYCODE_DOWN){
  112.             Erase_Wave(MODEL);
  113.             ADC_Start();
  114.             Sync=0;
  115.             if((Item_Index[INPUT_ATTENUATOR]==0)&&(Item_Index[Y_SENSITIVITY]>0))  
  116.               Item_Index[Y_SENSITIVITY]--; //输入探头衰减=1时
  117.             if((Item_Index[INPUT_ATTENUATOR]==1)&&(Item_Index[Y_SENSITIVITY]>11))
  118.               Item_Index[Y_SENSITIVITY]--; //输入探头衰减=10时
  119.           }
  120.           if(Item_Index[Y_SENSITIVITY]!=Ref_Buffer [302]) Hide_Ref=1;
  121.         break;
  122.             
  123.         case X_SENSITIVITY:   
  124.           if(Key_Buffer==KEYCODE_LEFT)  Item=Y_SENSITIVITY;
  125.           if(Key_Buffer==KEYCODE_RIGHT) Item=Y_POSITION;
  126.           if((Key_Buffer==KEYCODE_UP)&&(Item_Index[X_SENSITIVITY]<21)){
  127.             Item_Index[X_SENSITIVITY]++;
  128.             Erase_Wave(MODEL);
  129.             ADC_Start();
  130.             Sync=0;
  131.           }
  132.           if((Key_Buffer==KEYCODE_DOWN)&&(Item_Index[X_SENSITIVITY]>0)){
  133.             Item_Index[X_SENSITIVITY]--;
  134.             Erase_Wave(MODEL);
  135.             ADC_Start();
  136.             Sync=0;
  137.           }
  138.           if(Item_Index[X_SENSITIVITY]!=Ref_Buffer [303]) Hide_Ref=1;
  139.         break;

  140.         case Y_POSITION:   
  141.           if(Key_Buffer==KEYCODE_LEFT)  Item=X_SENSITIVITY;
  142.           if(Key_Buffer==KEYCODE_RIGHT) Item=MEASUR_KIND;   
  143.           if((Key_Buffer==KEYCODE_UP)&&(v0<MAX_Y)){
  144.             Erase_Wave(MODEL);
  145.             Erase_Wave(CURVE);
  146.             Erase_Dot_v0();
  147.             Erase_Vn(v0);
  148.             v0++;
  149.             Hide_v0=0;
  150.           }                                    //'垂直位移'基线上移,显示基线。
  151.           if((Key_Buffer==KEYCODE_DOWN)&&(v0>(MIN_Y+1))){
  152.             Erase_Wave(MODEL);
  153.             Erase_Wave(CURVE);
  154.             Erase_Dot_v0();
  155.             Erase_Vn(v0);
  156.             v0--;
  157.             Hide_v0=0;
  158.           }                                   //'垂直位移'基线下移,显示基线。
  159.           if(Key_Buffer==KEYCODE_MANU)
  160.             Hide_v0=1-Hide_v0;                //(显示/消隐)垂直位移基线。
  161.         break;

  162.         case MEASUR_KIND:      
  163.           if(Key_Buffer==KEYCODE_LEFT) Item=Y_POSITION;   
  164.           if(Key_Buffer==KEYCODE_RIGHT){
  165.             Hide_vs=0;
  166.             Item=TRIG_SENSITIVITY;
  167.           }
  168.           if(Key_Buffer==KEYCODE_UP){
  169.             if(Item_Index[MEASUR_KIND]<2) Item_Index[MEASUR_KIND]++;  //选择下一种测量类型
  170.             else                          Item_Index[MEASUR_KIND]=0;
  171.           }
  172.           if(Key_Buffer==KEYCODE_DOWN){
  173.             if(Item_Index[MEASUR_KIND]>0) Item_Index[MEASUR_KIND]--;  //选择上一种测量类型
  174.             else                          Item_Index[MEASUR_KIND]=2;
  175.           }  
  176.         break;  //测量类型共有:FREQN、CYCLE、DUTY 3种

  177.         case POWER_INFOMATION:   
  178.           if(Key_Buffer==KEYCODE_LEFT) Item=MEASUR_KIND;
  179.           if(Key_Buffer==KEYCODE_DOWN) Item=TRIG_SENSITIVITY;
  180.         break;  //供电方式共有:BATT(FULL、HALF、FEW、EMPTY)、USB 5种状态

  181.         case TRIG_SENSITIVITY:  
  182.           if(Key_Buffer==KEYCODE_UP){
  183.             Hide_vs=1;
  184.             Item=MEASUR_KIND;              
  185.             Update[Y_VERNIER_2]=1;  
  186.           }
  187.           if(Key_Buffer==KEYCODE_DOWN){
  188.             Item=TRIG_SLOPE;
  189.             Hide_vs=1;
  190.           }
  191.           if((Key_Buffer==KEYCODE_RIGHT)&&((Item_Index[TRIG_SENSITIVITY]+vt)<(MAX_Y-1))
  192.              &&((vt-Item_Index[TRIG_SENSITIVITY])>(MIN_Y+3))){
  193.             Item_Index[TRIG_SENSITIVITY]++;                      //降低触发灵敏度
  194.           }
  195.           if((Key_Buffer==KEYCODE_LEFT)&&(Item_Index[TRIG_SENSITIVITY]>0)){
  196.             temp=vt;
  197.             vt=temp+Item_Index[TRIG_SENSITIVITY];
  198.             Erase_Vn(vt);
  199.             vt=temp-Item_Index[TRIG_SENSITIVITY];
  200.             Erase_Vn(vt);
  201.             vt=temp;
  202.             Item_Index[TRIG_SENSITIVITY]--;                      //提高触发灵敏度
  203.           }
  204.         break;

  205.         case TRIG_SLOPE:   
  206.           if(Key_Buffer==KEYCODE_UP){
  207.             Hide_vs=0;
  208.             Item=TRIG_SENSITIVITY;
  209.           }
  210.           if(Key_Buffer==KEYCODE_DOWN) Item=INPUT_ATTENUATOR;   
  211.           if((Key_Buffer==KEYCODE_LEFT)||(Key_Buffer==KEYCODE_RIGHT)){
  212.             Item_Index[TRIG_SLOPE]=1-Item_Index[TRIG_SLOPE];  //选择(上升沿触发/下降沿触发)
  213.           }
  214.         break;

  215.         case INPUT_ATTENUATOR:      
  216.           if(Key_Buffer==KEYCODE_UP) Item=TRIG_SLOPE;
  217.           if(Key_Buffer==KEYCODE_DOWN){
  218.             if(SD_Card_ON()==0) Item=SAVE_WAVE_CURVE;
  219.             else Item=OUTPUT_FREQUENCY;        //若无SD卡,则指向'频率输出设定'
  220.           }
  221.           if((Key_Buffer==KEYCODE_LEFT)||(Key_Buffer==KEYCODE_RIGHT)){
  222.             Erase_Wave(MODEL);
  223.             Erase_Wave(CURVE);
  224.             Item_Index[INPUT_ATTENUATOR]=1-Item_Index[INPUT_ATTENUATOR];  //(×1/×0.1)输入衰减选择
  225.           }
  226.           if((Item_Index[INPUT_ATTENUATOR]==0)&&(Item_Index[Y_SENSITIVITY]>9))  
  227.             Item_Index[Y_SENSITIVITY]-=9;
  228.           if((Item_Index[INPUT_ATTENUATOR]==1)&&(Item_Index[Y_SENSITIVITY]<10))
  229.             Item_Index[Y_SENSITIVITY]+=9;
  230.         break;
  231.          
  232.         case SAVE_WAVE_CURVE:   
  233.           if(SD_Card_ON()==0)                          //有SD卡
  234.           {
  235. //            if(Key_Buffer==KEYCODE_UP) Item=INPUT_ATTENUATOR;
  236. //            if(Key_Buffer==KEYCODE_DOWN)  Item=LOAD_WAVE_CURVE;
  237. //            if((Key_Buffer==KEYCODE_RIGHT)&&(Item_Index[SAVE_WAVE_CURVE]<255))
  238. //              Item_Index[SAVE_WAVE_CURVE]++; //波形文件序号号+1
  239. //            if((Key_Buffer==KEYCODE_LEFT)&&(Item_Index[SAVE_WAVE_CURVE]>1))   
  240. //              Item_Index[SAVE_WAVE_CURVE]--; //波形文件序号号-1
  241. //            if(Key_Buffer==KEYCODE_MANU){         //按'M'键
  242. //              Update[SAVE_WAVE_CURVE]=0;
  243. //              Cursor_Counter=0;
  244. //              Char_to_Str(FileNum, Item_Index[SAVE_WAVE_CURVE]);
  245. //              if(FAT_Info()==0){
  246. //                if(Open_File(FileNum)==0){
  247. //                  for(i=0; i<300; ++i) {
  248. //                    SectorBuff[i+2]=View_Buffer[i];
  249. //                  }
  250. //                  SectorBuff[0]=0;
  251. //                  SectorBuff[1]=0;
  252. //                  SectorBuff[302]=(unsigned char)Item_Index[Y_SENSITIVITY];
  253. //                  SectorBuff[303]=(unsigned char)Item_Index[X_SENSITIVITY];
  254. //                  if(Write_File()==0){
  255. //                    Item_Index[LOAD_WAVE_CURVE]=Item_Index[SAVE_WAVE_CURVE]; //将当前写入的文件序号定为读取文件序号缺省值
  256. //                    if(Item_Index[SAVE_WAVE_CURVE]<255){
  257. //                      Item_Index[SAVE_WAVE_CURVE]++;
  258. //                    }
  259. //                  Update[SAVE_WAVE_CURVE]=1;
  260. //                  } else  Display_Str(89,2,WHITE,PRN,"!FileWriteErr!");
  261. //                } else    Display_Str(89,2,WHITE,PRN,"!File NoPlace!");
  262. //              } else      Display_Str(89,2,WHITE,PRN,"!Micro SD Err!");
  263. //            }                  
  264.           } else {
  265.             Item=OUTPUT_FREQUENCY;                              //若无SD卡,则指向'频率输出设定'
  266.           }
  267.         break;

  268. //        case LOAD_WAVE_CURVE:   
  269. //          if(SD_Card_ON()==0){
  270. //            if(Key_Buffer==KEYCODE_UP)   Item=SAVE_WAVE_CURVE;  
  271. //            if(Key_Buffer==KEYCODE_DOWN) Item=OUTPUT_FREQUENCY;
  272. //            if((Key_Buffer==KEYCODE_RIGHT)&&(Item_Index[LOAD_WAVE_CURVE]<255))
  273. //              Item_Index[LOAD_WAVE_CURVE]++; //波形文件序号号+1
  274. //            if((Key_Buffer==KEYCODE_LEFT)&&((Item_Index[LOAD_WAVE_CURVE])>1))  
  275. //              Item_Index[LOAD_WAVE_CURVE]--; //波形文件序号号-1
  276. //            if(Key_Buffer==KEYCODE_MANU) {        //按'M'键
  277. //              Erase_Wave(MODEL);
  278. //              Update[LOAD_WAVE_CURVE]=0;
  279. //              Cursor_Counter=0;
  280. //              Char_to_Str(FileNum, Item_Index[LOAD_WAVE_CURVE]);
  281. //              if(FAT_Info()==0){
  282. //                if(Open_File(FileNum)==0){
  283. //                  if(Read_File()==0){
  284. //                    for(i=0; i<300; ++i) {
  285. //                      Ref_Buffer[i]=SectorBuff[i+2];
  286. //                    }
  287. //                    if(SectorBuff[302]<12){
  288. //                      Item_Index[Y_SENSITIVITY]=SectorBuff[302];
  289. //                    }else{
  290. //                      Item_Index[Y_SENSITIVITY]=4;
  291. //                    }
  292. //                    if(SectorBuff[303]<22){
  293. //                      Item_Index[X_SENSITIVITY]=SectorBuff[303];
  294. //                    }else{
  295. //                      Item_Index[X_SENSITIVITY]=8;
  296. //                    }
  297. //                  } else  Display_Str(89,2,WHITE,PRN,"!File ReadErr!");
  298. //                } else    Display_Str(89,2,WHITE,PRN,"!File NoFound!");
  299. //              } else      Display_Str(89,2,WHITE,PRN,"!Micro SD Err!");
  300. //              Hide_Ref=0;//;显示新参考样本波形
  301. //            }                     
  302. //          } else  Item=OUTPUT_FREQUENCY;                       //若无SD卡,则指向'频率输出设定'
  303. //        break;

  304.         case OUTPUT_FREQUENCY:   
  305.           if(Key_Buffer==KEYCODE_UP) {
  306.             if(SD_Card_ON()==0) Item=LOAD_WAVE_CURVE;  
  307.             else             Item=INPUT_ATTENUATOR;  //若无SD卡,则指向'输入衰减选择'
  308.           }           
  309.           if(Key_Buffer==KEYCODE_DOWN) Item=X_VERNIER_2;  
  310.           if((Key_Buffer==KEYCODE_RIGHT)&&(Item_Index[OUTPUT_FREQUENCY]<15))
  311.             Item_Index[OUTPUT_FREQUENCY]++;  //基准频率输出提高一档
  312.           if((Key_Buffer==KEYCODE_LEFT)&&(Item_Index[OUTPUT_FREQUENCY]>0))   
  313.             Item_Index[OUTPUT_FREQUENCY]--;  //基准频率输出降低一档
  314.         break;

  315.         case X_VERNIER_2:   
  316.           if(Key_Buffer==KEYCODE_UP)   Item=OUTPUT_FREQUENCY;  
  317.           if(Key_Buffer==KEYCODE_DOWN) Item=X_VERNIER_1;  
  318.           if(Key_Buffer==KEYCODE_MANU){
  319.             Hide_t2=1-Hide_t2;                  //(显示/消隐)水平测量游标T2
  320.             Erase_Ti(t2);
  321.           }
  322.           if((Key_Buffer==KEYCODE_RIGHT)&&(t2<MAX_X)) { //时间测量游标线2右移
  323.             Erase_Dot_ti(t2);
  324.             Erase_Ti(t2);
  325.             t2++;
  326.             Hide_t1=0;
  327.             Hide_t2=0;
  328.           }
  329.           if((Key_Buffer==KEYCODE_LEFT)&&(t2>MIN_X+1)) { //时间测量游标线2左移
  330.             Erase_Dot_ti(t2);
  331.             Erase_Ti(t2);
  332.             t2--;
  333.             Hide_t1=0;
  334.             Hide_t2=0;
  335.           }
  336.           Update[DELTA_T]=1;
  337.           Update[VERNIERS]=1;
  338.         break;
  339.         
  340.         case X_VERNIER_1:   
  341.           if(Key_Buffer==KEYCODE_UP) Item=X_VERNIER_2;   
  342.           if(Key_Buffer==KEYCODE_DOWN) {
  343.             Item=X_POSITION;     
  344.             Draw_View_Area();
  345.           }
  346.           if(Key_Buffer==KEYCODE_MANU){
  347.             Hide_t1=1-Hide_t1;                  //(显示/消隐)水平测量游标T1
  348.             Erase_Ti(t1);
  349.           }
  350.           if((Key_Buffer==KEYCODE_RIGHT)&&(t1<MAX_X)) { //时间测量游标线1右移
  351.             Erase_Dot_ti(t1);
  352.             Erase_Ti(t1);
  353.             t1++;
  354.             Hide_t1=0;
  355.             Hide_t2=0;
  356.           }
  357.           if((Key_Buffer==KEYCODE_LEFT)&&(t1>MIN_X+1)) { //时间测量游标线1左移
  358.             Erase_Dot_ti(t1);
  359.             Erase_Ti(t1);
  360.             t1--;
  361.             Hide_t1=0;
  362.             Hide_t2=0;
  363.           }
  364.           Update[DELTA_T]=1;
  365.           Update[VERNIERS]=1;
  366.         break;

  367.         case X_POSITION:   
  368.           if(Key_Buffer==KEYCODE_UP) {
  369.             Item=X_VERNIER_1;               
  370.             Erase_View_Area();
  371.           }
  372.           if(Key_Buffer==KEYCODE_DOWN){
  373.             Item=Y_VERNIER_2;   
  374.             Update[Y_VERNIER_2]=1;
  375.             Erase_View_Area();
  376.           }
  377.           if(Key_Buffer==KEYCODE_RIGHT){
  378.             Stop=0;
  379.             Item_Index[X_POSITION]++;   //水平显示窗口位置右移
  380.             Draw_View_Area();
  381.           }
  382.           if(Key_Buffer==KEYCODE_LEFT){
  383.             Stop=0;
  384.             Item_Index[X_POSITION]--;   //水平显示窗口位置左移
  385.             Draw_View_Area();
  386.           }
  387.           Update[VERNIERS]=1;
  388.         break;

  389.         case RUNNING_STATUS:   
  390.           if(Key_Buffer==KEYCODE_UP)   Item=X_POSITION;  
  391.           if(Key_Buffer==KEYCODE_LEFT) Item =Y_VERNIER_2;
  392.         break;

  393.         case Y_VERNIER_2:   
  394.           if(Key_Buffer==KEYCODE_RIGHT) {
  395.             Item=X_POSITION;   
  396.             Draw_View_Area();
  397.           }
  398.           if(Key_Buffer==KEYCODE_LEFT) Item=Y_VERNIER_1;  
  399.             if(Key_Buffer==KEYCODE_MANU){
  400.             Hide_v2=1-Hide_v2;                  //(显示/消隐)垂直测量游标V2。
  401.             Erase_Vi(v2);
  402.           }
  403.           if((Key_Buffer==KEYCODE_UP)&&(v2<MAX_Y)){
  404.                                 Erase_Dot_vi(v2);
  405.                                 Erase_Vi(v2);
  406.             v2++;                               //垂直测量游标V2上移
  407.           }
  408.           if((Key_Buffer==KEYCODE_DOWN)&&(v2>MIN_Y+1)){
  409.             Erase_Dot_vi(v2);
  410.             Erase_Vi(v2);
  411.             v2--;                               //垂直测量游标V2下移
  412.           }
  413.           Update[VERNIERS]=1;
  414.         break;

  415.         case Y_VERNIER_1:
  416.           if(Key_Buffer==KEYCODE_RIGHT) Item=Y_VERNIER_2; //指向'垂直测量游标V2调整'模式
  417.           if(Key_Buffer==KEYCODE_LEFT)  Item=TRIG_LEVEL; //指向'触发电平设定'模式
  418.           if(Key_Buffer==KEYCODE_MANU){
  419.             Hide_v1=1-Hide_v1;                  //(显示/消隐)垂直测量游标V1。
  420.             Erase_Vi(v1);
  421.           }
  422.           if((Key_Buffer==KEYCODE_UP)&&(v1<MAX_Y)){
  423.             Erase_Dot_vi(v1);
  424.             Erase_Vi(v1);
  425.             v1++;                               //垂直测量游标V2上移
  426.           }
  427.           if((Key_Buffer==KEYCODE_DOWN)&&(v1>MIN_Y+1)){
  428.             Erase_Dot_vi(v1);
  429.             Erase_Vi(v1);
  430.             v1--;                               //垂直测量游标V2下移
  431.           }
  432.           Update[VERNIERS]=1;
  433.           break;

  434.         case TRIG_LEVEL:   
  435.           if(Key_Buffer==KEYCODE_RIGHT) Item=Y_VERNIER_1;
  436.           if(Key_Buffer==KEYCODE_LEFT)  Item=SYNC_MODE;
  437.           if(Key_Buffer==KEYCODE_MANU)  Hide_vt=1-Hide_vt;        //(显示/消隐)触发电平基线
  438.           if((Key_Buffer==KEYCODE_UP)&&(vt<(MAX_Y-Item_Index[TRIG_SENSITIVITY]))){
  439.             Erase_Dot_vt();
  440.             Erase_Vn(vt);
  441.             vt++;                               //触发电平游标Vt上移
  442.           }
  443.           if((Key_Buffer==KEYCODE_DOWN)&&(v1>(MIN_Y+5+Item_Index[TRIG_SENSITIVITY]))){
  444.             Erase_Dot_vt();
  445.             Erase_Vn(vt);
  446.             vt--;                               //触发电平游标Vt下移
  447.           }
  448.           break;
  449.       }
  450.       Key_Buffer=0;
  451.     }
  452.   }   

  453. }

  454. /*******************************************************************************
  455. * Function Name  : fputc
  456. * Description    : 重定义C语言的fprint函数
  457. * Input          : None
  458. * Output         : None
  459. * Return         : None
  460. *******************************************************************************/
  461. int fputc(int ch,FILE *f)
  462. {
  463.   /* Write a character to the USART */
  464.   USART_SendData(USART1, (unsigned char) ch);
  465.   /* Loop until the end of transmission */
  466.   while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);


  467.   return ch;
  468. }

  469. /******************* (C) COPYRIGHT 2012 DQ.elc *****END OF FILE****/
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:139564 发表于 2016-11-15 18:40 | 只看该作者
下来学习,祝楼主早日成功。
回复

使用道具 举报

板凳
ID:139564 发表于 2016-11-15 18:41 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

地板
ID:268302 发表于 2019-4-16 17:49 | 只看该作者
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表