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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機測漏儀程序+PCB原理圖 利用氣泵測試漏氣的儀器(顯示實時氣壓版)

[復制鏈接]
跳轉到指定樓層
樓主
元件配置及傳感器在原理圖中
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


單片機源程序如下:
  1. #include <reg52.h>                  
  2. #include <intrins.H>            
  3. #include "i2c.h"

  4. #define DataPort2_DuanMa P2  //數碼管段碼數據口
  5. #define DataPort1_WeiMa P1          //數碼管位碼數據口
  6. #define uchar unsigned char   
  7. #define uint unsigned int

  8. #define AddWr 0x90   //寫數據地址
  9. #define AddRd 0x91   //讀數據地址
  10. #define Pre_Max 45  //設定氣壓最大值
  11. #define Pre_Min 10  //設定氣壓最小值
  12. extern bit ack;
  13. unsigned char ReadADC(unsigned char Chl);
  14. bit WriteDAC(unsigned char dat);

  15. sbit Key_Set=P3^0;                                 //設置
  16. sbit Key_Add=P3^1;                                  //        加
  17. sbit Key_Dec=P3^2;                                  //減
  18. sbit Key_Str=P3^3;                                //啟動
  19. sbit Realy_1=P3^6;                                  //繼電器1
  20. sbit Realy_2=P3^7;                                          //繼電器2
  21. sbit Led=P0^6;                 //系統指示燈
  22. sbit Bee=P0^7;                                                                 //蜂鳴器
  23. sbit Led_Red=P0^4;
  24. sbit Led_Green=P0^5;
  25. /*******************************************新加***********************************************************************/
  26.   
  27. sfr ISP_DATA = 0xe2;     
  28. sfr ISP_ADDRH = 0xe3;      
  29. sfr ISP_ADDRL = 0xe4;     
  30. sfr ISP_CMD = 0xe5;     
  31. sfr ISP_TRIG = 0xe6;        
  32. sfr ISP_CONTR = 0xe7;  

  33. void  cc(uint addr);//擦除
  34. void  xcx(uint addr,uchar dat);//寫字節
  35. uchar dcx(uint addr);//讀字節
  36. void  Q0();//關閉ISP
  37.                                        

  38. /*擦除一個扇區*/
  39. void cc(uint addr)
  40. {       
  41.                                                   // 0x83(??<5M)   0x82(??<10M)   0x81(??<20M)   0x80(??<40M)
  42.     ISP_CONTR = 0x83;              // ?? IAP ??(ISPEN(ISP_CONTR.7)=1:??????Flash, ?? Flash ???????
  43.     ISP_CMD   = 0x03;                  // ?????"Data Flash/EEPROM?"??????
  44.     ISP_ADDRL = addr;         // ISP/IAP????????????,
  45.     ISP_ADDRH = addr>>8;      // ISP/IAP?????????????
  46.                 EA =0;   
  47.     ISP_TRIG = 0x46;          // ?ISPEN(ISP_CONTR.7)=1?,?ISP_TRIG???46h,
  48.     ISP_TRIG = 0xB9;          // ???B9h,ISP/IAP???????
  49.     _nop_();
  50.     Q0();                                          // ??ISP/IAP
  51. }
  52. /*寫一個字節*/
  53. void xcx(uint addr,uchar dat)
  54. {
  55.     ISP_CONTR = 0x83;                  
  56.     ISP_CMD   = 0x02;              // ?????"Data Flash/EEPROM?"??????
  57.     ISP_ADDRL = addr;        
  58.     ISP_ADDRH = addr>>8;      
  59.     ISP_DATA  = dat;          // ???ISP_DATA
  60.     EA = 0;
  61.     ISP_TRIG = 0x46;         
  62.     ISP_TRIG = 0xB9;         
  63.     _nop_();
  64.     Q0();                                          // ??ISP/IAP
  65. }
  66. /*讀一個字節*/
  67. uchar dcx(uint addr)
  68. {   
  69.     uchar dat;
  70.        
  71.         ISP_CONTR = 0x83;                  
  72.     ISP_CMD   = 0x01;         // ?????"Data Flash/EEPROM?"?????
  73.     ISP_ADDRL = addr;         
  74.     ISP_ADDRH = addr>>8;      
  75.     EA = 0;
  76.     ISP_TRIG = 0x46;         
  77.     ISP_TRIG = 0xB9;         
  78.     _nop_();
  79.     dat = ISP_DATA;                          // ????
  80.         Q0();                                          // ??ISP/IAP                   
  81.         return dat;
  82. }
  83. /*關閉ISP操作*/
  84. void Q0()
  85. {
  86.     ISP_CONTR = 0;            // ??IAP??
  87.     ISP_CMD   = 0;            // ????,?ISP??
  88.     ISP_TRIG  = 0;            // ??IAP??, ??ISP??????????
  89. }


  90. /***************************************************************************************************************/





  91. unsigned char code DuanMa[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};// 顯示段碼值0~9
  92. unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對應相應的數碼管點亮,即位碼
  93. unsigned char TempData[6]; //存儲顯示值的全局變量

  94. uchar Pressure_Flag;
  95. uchar Time_Flag;
  96. uchar Flash_Pressure_Flag;
  97. uchar Flash_Time_Flag;


  98. uchar Data_IIC,Pressure,Pressure2,Time,Time_Buffer,key_press_num,Key_Set_Num;
  99. uchar Flag_Str,Flag_Test,Flag_Bee,Flag_Count,Flag_Result,State_Red,State_Green,Flag_GetTime,Flag_Realy_1;

  100. int Time_500ms,Time_CountDown;
  101. void Display(unsigned char FirstBit,unsigned char Num);
  102. void Init_Timer0(void);
  103. void Init_Timer1(void);
  104. void DelayUs2x(unsigned char t);//微秒延時函數聲明
  105. void DelayMs(unsigned char t);//毫秒延時函數聲明
  106. // void ISR_INT0(void);

  107. /*------------------------------------------------
  108.                     定時器初始化子程序
  109. ------------------------------------------------*/
  110. void Init_Timer1(void)
  111. {
  112. TMOD |= 0x10;          //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
  113. TH1=0x00;              //給定初值,這里使用定時器最大值從0開始計數一直到65535溢出
  114. TL1=0x00;
  115. EA=1;            //總中斷打開
  116. ET1=1;           //定時器中斷打開
  117. TR1=1;           //定時器開關打開
  118. }

  119. /*------------------------------------------------
  120.                 顯示數據處理函數1
  121. ------------------------------------------------*/
  122. void Display_Data_Operation1(void)
  123. {
  124.         TempData[0]=DuanMa[(Pressure2)/100];
  125.         TempData[1]=DuanMa[((Pressure2)%100)/10];
  126.         TempData[2]=DuanMa[((Pressure2)%100)%10];
  127.         TempData[3]=DuanMa[Time/100];
  128.         TempData[4]=DuanMa[(Time%100)/10];
  129.         TempData[5]=DuanMa[(Time%100)%10];
  130. }


  131. /*------------------------------------------------
  132.                 顯示數據處理函數2
  133. ------------------------------------------------*/
  134. void Display_Data_Operation2(void)
  135. {
  136.         TempData[0]=DuanMa[Pressure/100];
  137.         TempData[1]=DuanMa[(Pressure%100)/10];
  138.         TempData[2]=DuanMa[(Pressure%100)%10];
  139.         TempData[3]=0xff;
  140.         TempData[4]=0xff;
  141.         TempData[5]=0xff;
  142. }


  143. /*------------------------------------------------
  144.                 顯示數據處理函數3
  145. ------------------------------------------------*/
  146. void Display_Data_Operation3(void)
  147. {
  148.         TempData[0]=0xff;
  149.         TempData[1]=0xff;
  150.         TempData[2]=0xff;
  151.         TempData[3]=DuanMa[Time/100];
  152.         TempData[4]=DuanMa[(Time%100)/10];
  153.         TempData[5]=DuanMa[(Time%100)%10];
  154. }

  155. /*------------------------------------------------
  156.                 顯示數據處理函數4
  157. ------------------------------------------------*/
  158. void Display_Data_Operation4(void)
  159. {
  160.         TempData[0]=DuanMa[Pressure/100];
  161.         TempData[1]=DuanMa[(Pressure%100)/10];
  162.         TempData[2]=DuanMa[(Pressure%100)%10];
  163.         TempData[3]=DuanMa[Time/100];
  164.         TempData[4]=DuanMa[(Time%100)/10];
  165.         TempData[5]=DuanMa[(Time%100)%10];
  166. }

  167. /*------------------------------------------------
  168.                     主函數
  169. ------------------------------------------------*/
  170. void main (void)
  171. {
  172.         Flag_Str=0;
  173.         Flag_Test=0;
  174.         Pressure = dcx(0x2000);       
  175.         Time= dcx(0x2004);       
  176.         EA=1;          //全局中斷開
  177. //   EX0=1;         //外部中斷0開
  178. //   IT0=1;         //0電平觸發  1邊沿觸發
  179.         Realy_1=1;
  180.         Realy_2=1;
  181.         Init_Timer0();
  182.   Init_Timer1();

  183.         while (1)                       
  184.   {   
  185.                 Data_IIC=ReadADC(0);
  186.                 Pressure2=(Data_IIC-11)*113/255;
  187.                
  188.                 if(!Key_Add && Pressure_Flag==1)  //如果檢測到低電平,說明按鍵按下
  189.                 {
  190.                         DelayMs(10); //延時去抖,一般10-20ms
  191.                         if(!Key_Add&& Pressure_Flag==1)     //再次確認按鍵是否按下,沒有按下則退出
  192.                         {
  193.                                 while(!Key_Add&& Pressure_Flag==1)
  194.                                 {
  195.                                         key_press_num++;
  196.                                         DelayMs(10);           //10x100=1000ms=1s
  197.                                         if(key_press_num==90) //大約1s
  198.                                         {
  199.                                                 key_press_num=0;    //如果達到長按鍵標準
  200.                                                                  //則進入長按鍵動作
  201.                                                 while(!Key_Add && Pressure_Flag==1)     //這里用于識別是否按
  202.                                                 //鍵還在按下,如果按
  203.                                                 //下執行相關動作,否則退出
  204.                                                 {
  205. //                                                         if(Vol<99)    //加操作
  206.                                                         Pressure++;
  207.                                                         if(Pressure>Pre_Max)
  208.                                                                                 {
  209.                                                                                                 Pressure=Pre_Min;
  210.                                                                                 }
  211.                                                         DelayMs(80);//用于調節長按循環操作
  212.                                                         //的速度,可以自行調整此值以便達到最佳效果
  213.                                                 }
  214.                                         }
  215.                                 }
  216.                                 key_press_num=0;//防止累加造成錯誤識別

  217.                                 Pressure++;
  218.                                 if(Pressure>Pre_Max)
  219.                                                         {
  220.                                                                         Pressure=Pre_Min;
  221.                                                         }
  222.                         }
  223.                 }

  224.                 if(!Key_Dec && Pressure_Flag==1)  //如果檢測到低電平,說明按鍵按下
  225.                 {
  226.                         DelayMs(10); //延時去抖,一般10-20ms
  227.                         if(!Key_Dec && Pressure_Flag==1) //再次確認按鍵是否按下,沒有
  228.                         //按下則退出
  229.                         {
  230.                                 while(!Key_Dec && Pressure_Flag==1)
  231.                                 {
  232.                                         key_press_num++;
  233.                                         DelayMs(10);
  234.                                         if(key_press_num==100) //大約1s
  235.                                         {
  236.                                                 key_press_num=0;
  237.                                                 while(!Key_Dec && Pressure_Flag==1)
  238.                                                 {
  239.                                                         if(Pressure>Pre_Min)  //減操作
  240.                                                         Pressure--;

  241.                                                         DelayMs(80);
  242.                                                         //用于調節長按循環操作的速度
  243.                                                 }
  244.                                         }
  245.                                 }
  246.                                 key_press_num=0;//防止累加造成錯誤識別
  247.                                 if(Pressure>Pre_Min)  //減操作
  248.                                 Pressure--;

  249.                         }
  250.                 }

  251.         if(!Key_Add && Time_Flag==1)  //如果檢測到低電平,說明按鍵按下
  252.                 {
  253.                         DelayMs(10); //延時去抖,一般10-20ms
  254.                         if(!Key_Add && Time_Flag==1)     //再次確認按鍵是否按下,沒有按下則退出
  255.                         {
  256.                                 while(!Key_Add && Time_Flag==1)
  257.                                 {
  258.                                         key_press_num++;
  259.                                         DelayMs(10);           //10x100=1
  260.                                         if(key_press_num==100) //大約1s
  261.                                         {
  262.                                                 key_press_num=0;    //如果達到長按鍵標準
  263.                                                                  //則進入長按鍵動作
  264.                                                 while(!Key_Add && Time_Flag==1)     //這里用于識別是否按
  265.                                                 //鍵還在按下,如果按
  266.                                                 //下執行相關動作,否則退出
  267.                                                 {

  268.                                                         Time++;
  269.                                                         if(Time>600)
  270.                                                         {
  271.                                                                         Time=0;
  272.                                                         }
  273.                                                         DelayMs(50);//用于調節長按循環操作
  274.                                                         //的速度,可以自行調整此值以便達到最佳效果
  275.                                                 }
  276.                                         }
  277.                                 }
  278.                                 key_press_num=0;//防止累加造成錯誤識別

  279.                                 Time++;
  280.                                 if(Time>600)
  281.                                                         {
  282.                                                                         Time=0;
  283.                                                         }
  284.                         }
  285.                 }

  286.                 if(!Key_Dec && Time_Flag==1)  //如果檢測到低電平,說明按鍵按下
  287.                 {
  288.                         DelayMs(10); //延時去抖,一般10-20ms
  289.                         if(!Key_Dec && Time_Flag==1) //再次確認按鍵是否按下,沒有
  290.                         //按下則退出
  291.                         {
  292.                                 while(!Key_Dec && Time_Flag==1)
  293.                                 {
  294.                                         key_press_num++;
  295.                                         DelayMs(10);
  296.                                         if(key_press_num==100) //大約1s
  297.                                         {
  298.                                                 key_press_num=0;
  299.                                                 while(!Key_Dec && Time_Flag==1)
  300.                                                 {
  301.                                                         if(Time>0)  //減操作
  302.                                                         Time--;
  303.                                                         DelayMs(50);
  304.                                                         //用于調節長按循環操作的速度
  305.                                                 }
  306.                                         }
  307.                                 }
  308.                                 key_press_num=0;//防止累加造成錯誤識別
  309.                                 if(Time>0)  //減操作
  310.                                 Time--;
  311.                         }
  312.                 }
  313. /*------------------------------------------------
  314. 按設置鍵,保存數據,循環設置參數
  315.         ------------------------------------------------*/

  316.                
  317.                 if((!Key_Set) &&(Flag_Count==0) && (Flag_Str==0)&&(Flag_Bee==0)&& (State_Red==0) && (State_Green==0) ) //如果檢測到低電平,說明按鍵按下,并且啟動標志為零
  318.     {
  319.                         DelayMs(10); //延時去抖,一般10-20ms
  320.                         if((!Key_Set) &&(Flag_Count==0)&& (Flag_Str==0)&&(Flag_Bee==0)&& (State_Red==0)&& (State_Green==0))    //再次確認按鍵是否按下,并且啟動標志為零,沒有按下則退出
  321.                         {
  322.                                 while((!Key_Set)&&(Flag_Count==0)&& (Flag_Str==0)&&(Flag_Bee==0)&& (State_Red==0)&& (State_Green==0));//如果確認按下按鍵等待按鍵釋放,沒有釋放則一直等待
  323.                                 {
  324.                                         Key_Set_Num++;                       
  325.                                         if(Key_Set_Num>2)
  326.                                         {
  327.                                                 Key_Set_Num=0;
  328.                                         }                                               
  329. //                         EX0=1;
  330. //                         IT0=1;
  331.                         cc(0x2000);
  332.                         xcx(0x2000,Pressure);          // ?EEPROM?2002h??2
  333.                         xcx(0x2004,Time);         
  334.                         EA = 1;               
  335.                                 }
  336.                         }
  337.                 }
  338. /*------------------------------------------------
  339.                 設置時的三種循環狀態
  340.         ------------------------------------------------*/

  341.                 if(Key_Set_Num==0)
  342.                 {
  343.                         Pressure_Flag=0;
  344.                         Time_Flag=0;
  345.                         Flash_Pressure_Flag=0;
  346.                         Flash_Time_Flag=0;               
  347.                 }
  348.                
  349.                 if(Key_Set_Num==1)
  350.                 {
  351.                         Pressure_Flag=1;
  352.                         Time_Flag=0;
  353.                         Flash_Pressure_Flag=1;
  354.                         Flash_Time_Flag=0;
  355.                 }
  356.                                
  357.                 if(Key_Set_Num==2)
  358.                 {
  359.                         Pressure_Flag=0;
  360.                         Time_Flag=1;
  361.                         Flash_Pressure_Flag=0;
  362.                         Flash_Time_Flag=1;
  363.                 }
  364. /*------------------------------------------------
  365.                 按下啟動且啟動標志置0,不合格狀態置0,則啟動氣泵,并把啟動標志置1
  366.         ------------------------------------------------*/               
  367.                 if( (!Key_Str) && (Flag_Str==0) &&(State_Red==0) &&(Flag_Count==0)) //如果檢測到低電平,說明按鍵按下,并且啟動標志為零
  368.                 {
  369.                         DelayMs(10); //延時去抖,一般10-20ms
  370.                         if((!Key_Str) && (Flag_Str==0)  &&(State_Red==0) &&(Flag_Count==0) )  //再次確認按鍵是否按下,并且啟動標志為零,沒有按下則退出
  371.                         {
  372.                                 while((!Key_Str)&& (Flag_Str==0) &&(State_Red==0)&&(Flag_Count==0) )//如果確認按下按鍵等待按鍵釋放,沒有釋放則一直等待
  373.                                 {
  374.                                         Flag_Realy_1=1;
  375.                                         Flag_Str=1;
  376.                                 }
  377.                         }
  378.                 }
  379.                 if((Pressure2<Pressure)&&(Flag_Realy_1==1))
  380.                 {
  381.                         Realy_1=0;
  382.                 }               
  383.        
  384.                
  385. /*------------------------------------------------
  386. 同時按下 加 減 ,清除報警狀態
  387.         ------------------------------------------------*/                       
  388.                 if( (!Key_Add) &&(!Key_Dec) ) //如果檢測到低電平,說明按鍵按下,并且啟動標志為零
  389.                 {
  390.                         DelayMs(10); //延時去抖,一般10-20ms
  391.                         if( (!Key_Add) &&(!Key_Dec) )  //再次確認按鍵是否按下,并且啟動標志為零,沒有按下則退出
  392.                         {
  393.                                 while( (!Key_Add) &&(!Key_Dec) )//如果確認按下按鍵等待按鍵釋放,沒有釋放則一直等待
  394.                                 {
  395.                                         Led_Red=1;
  396.                                         Bee=1;
  397.                                         State_Red=0;
  398.                                         Flag_Count=0;
  399.                                         Time=Time_Buffer;
  400.                                         Realy_1=1;
  401.                                 }
  402.                         }
  403.                 }               


  404.                
  405. /*------------------------------------------------
  406. 如果實時壓力 > 設定壓力 ,且啟動標志置1,那么,關閉氣泵,把時間放入緩存
  407.         ------------------------------------------------*/       
  408.                 if( (Pressure2>(Pressure))&&(Flag_Str==1)&&(Flag_Realy_1==1) )
  409.                 {
  410.                         Realy_1=1;
  411.                         Flag_Realy_1=0;                       
  412.                         Time_Buffer=Time;       
  413.                         Flag_Bee=1;//充氣完成的聲音提醒
  414.                         Flag_Test=1;//檢測開始的標志
  415.                         Flag_Str=0;        //啟動標志置0       
  416.                 }
  417.                
  418.                
  419.                 if(Flag_Bee==1)//聲音提醒
  420.                 {
  421.                         Bee=0;        
  422.                         DelayMs(500);
  423.                         DelayMs(500);
  424.                         Bee=1;
  425.                         Flag_Bee=0;
  426.                 }
  427.                
  428.                 if(Flag_Test==1)//開始檢測
  429.                 {
  430.                         Time=0;//初始化時間
  431.                         Time_CountDown=0;
  432.                         Flag_GetTime=1;
  433.                         Flag_Test=0;
  434.                         Flag_Count=1;
  435.                 }
  436.                 if(Flag_Count==1)//計數標志置1,時間開始從0計數到設定值
  437.                 {
  438.                         Time=Time_CountDown/2;
  439.                 }
  440.                 if((Time==Time_Buffer)&&(Flag_GetTime==1))//計時完成,結果標志置1
  441.                 {
  442.                         Flag_Count=0;
  443.                         Flag_Result=1;
  444.                         Flag_GetTime=0;
  445.                 }       

  446. /*------------------------------------------------
  447. 經過一段時間后,如果壓力小了,說明不合格,亮紅燈,蜂鳴器長響,不合格標志置1
  448.         ------------------------------------------------*/       
  449.                
  450.                 if((Flag_Count==1) &&(Pressure2*10 < Pressure*8) )
  451.                 {
  452.                         Flag_Result=0;
  453.                         Led_Red=0;
  454.                         Bee=0;
  455.                         State_Red=1;
  456.                 }       
  457.                
  458.                
  459.                
  460.                
  461.                
  462.                
  463. /*------------------------------------------------
  464. 經過一段時間后,如果壓力沒減小,說明合格,合格標志置1
  465.         ------------------------------------------------*/                       
  466.                 if((Flag_Result==1) &&(Pressure2*10 > Pressure*9) )
  467.                 {
  468.                         State_Green=1;
  469.                 }
  470. /*------------------------------------------------
  471. 合格標志置1后,且結果標志置1,則發出合格提示
  472.         ------------------------------------------------*/                               
  473.                 if((State_Green==1) && (Flag_Result==1))
  474.                 {
  475.                         Led_Green=0;
  476.                         Realy_2=0;
  477.                         Bee=0;
  478.                         DelayMs(500); //第一響
  479.                         Bee=1;
  480.                         DelayMs(300);
  481.                         Bee=0;        //第二響
  482.                         DelayMs(500); //第二響
  483.                         Bee=1;
  484.                         Led_Green=1;
  485.                         DelayMs(500);
  486.                         Realy_2=1;
  487.                         Flag_Result=0;
  488.                         State_Green=0;
  489.                         Time=Time_Buffer;
  490.                 }
  491.                                
  492.         }       
  493. }



  494. /*------------------------------------------------
  495.              讀AD轉值程序
  496. 輸入參數 Chl 表示需要轉換的通道,范圍從0-3
  497. 返回值范圍0-255
  498. ------------------------------------------------*/
  499. unsigned char ReadADC(unsigned char Chl)
  500. {
  501.    unsigned char Val;
  502.    Start_I2c();               //啟動總線
  503.    SendByte(AddWr);             //發送器件地址
  504.      if(ack==0)return(0);
  505.    SendByte(0x40|Chl);            //發送器件子地址
  506.      if(ack==0)return(0);
  507.    Start_I2c();
  508.    SendByte(AddWr+1);
  509.      if(ack==0)return(0);
  510.    Val=RcvByte();
  511.    NoAck_I2c();                 //發送非應位
  512.    Stop_I2c();                  //結束總線
  513.   return(Val);
  514. }




  515. /*------------------------------------------------
  516. us延時函數


  517. 含有輸入參數 unsigned char t,無返回值
  518. unsigned char 是定義無符號字符變量,其值的范圍是
  519. 0~255 這里使用晶振12M,精確延時請使用匯編,大致延時
  520. 長度如下 T=tx2+5 uS
  521. ------------------------------------------------*/
  522. void DelayUs2x(unsigned char t)
  523. {   
  524. while(--t);
  525. }
  526. /*------------------------------------------------
  527. mS延時函數

  528. 含有輸入參數 unsigned char t,無返回值
  529. unsigned char 是定義無符號字符變量,其值的范圍是
  530. 0~255 這里使用晶振12M,精確延時請使用匯編
  531. ------------------------------------------------*/
  532. void DelayMs(unsigned char t)
  533. {
  534.      
  535. while(t--)
  536. {
  537.      //大致延時1mS
  538.    DelayUs2x(245);
  539.          DelayUs2x(245);
  540. }
  541. }




  542. /*數碼管顯示函數*/
  543. void Display(unsigned char FirstBit,unsigned char Lenth)
  544. {
  545.         static unsigned char i=0;
  546.         DataPort2_DuanMa=0;   //清空段碼數據,防止重影
  547.         DataPort1_WeiMa=WeiMa[i+FirstBit]; //取位碼
  548.         DataPort2_DuanMa=TempData[i]; //取顯示數據,段碼
  549.         i++;
  550.         if(i==Lenth)
  551.         i=0;
  552. ……………………

  553. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
測漏儀工程.rar (674.25 KB, 下載次數: 53)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:543424 發表于 2022-2-6 19:22 | 只看該作者
請問這個制作完氣壓需要校準嗎?
回復

使用道具 舉報

板凳
ID:1045538 發表于 2022-9-25 15:58 來自手機 | 只看該作者
有沒有哪位大神知道原理圖左上角的p1,p2是啥啊,仿真的話怎么辦啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品久久久久久一区二区 | 少妇诱惑av| 精品精品视频 | 毛片免费观看 | 激情一区二区三区 | 久久这里有精品 | 成人在线视频免费观看 | 久久精品中文 | 国产一区二区a | 欧美精品一区二区在线观看 | 欧美日韩在线一区二区 | 国产乱码精品一区二区三区忘忧草 | 成年视频在线观看福利资源 | 91成人在线 | 欧美成人高清 | 亚洲综合大片69999 | 中国一级特黄视频 | 欧美天堂 | 99在线免费观看视频 | 97caoporn国产免费人人 | 精品美女久久久 | 高清成人免费视频 | 在线免费观看日本视频 | 91精品久久久久久久久中文字幕 | 操人网 | 日韩精品一区二区三区在线播放 | 91九色在线观看 | 欧美精品一区二区三区在线播放 | 激情久久av一区av二区av三区 | 看羞羞视频免费 | 99精品在线观看 | 四虎永久影院 | 免费观看黄a一级视频 | 亚洲视频一区二区三区四区 | 最新国产在线 | 一级片在线播放 | 波多野吉衣在线播放 | 中文成人在线 | 婷婷在线免费 | 久久久久午夜 | 精品国产一区二区国模嫣然 |