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

標題: 簡易舵機測試儀 [打印本頁]

作者: xiancun010    時間: 2017-2-16 23:45
標題: 簡易舵機測試儀
在原來電壓顯示器的基礎上稍加修改就成舵機測試儀。對最小時間片和周期有了更深的了解。







  1. //用于測試電壓的     用的單片機是 STC15F408AS
  2. #include <reg51.h>
  3. #include<intrins.h>
  4. void Display(unsigned int num);//用于數碼管顯示具體數字  顯示0到9直接用相應的數字做參數,顯示1到9 加個點 用1到9乘以10做參數 0加一個點用11做參數
  5. void Display_num(unsigned int num,unsigned char weizhi); // 用于確認那個數碼管顯示數字。  第一參數num是要顯示的數字, 第二個參數weizhi是要在哪個數碼管顯示(最左邊為1,最右邊為4)
  6. void Delay10us();                //@12.000MHz
  7. void delay_n_10us(unsigned int n);
  8. unsigned int a; //保存模數轉換后的數據

  9. sfr P2M0=0x96;     //聲明 P2引腳模式寄存器
  10. sfr P3M0=0xb2;     //聲明 P3引腳模式寄存器
  11. sfr P5=0xc8;
  12. sfr P1ASF=0x9D;    //聲明 P1口模擬功能寄存器  p1.7開啟模擬功能
  13. sfr ADC_RES=0xBD;  //聲明 ADC轉換結果寄存器
  14. sfr ADC_CONTR=0xBC;//聲明 ADC控制寄存器
  15. sbit OUT=P5^5;//定義一個輸出引腳
  16. unsigned int L; //用于存儲讀出的PWM
  17. unsigned char count;//用于存儲次數
  18. unsigned char displaytime;
  19. unsigned int data1,data2,data3; //用于存儲PWM的個位和十位和百位

  20.                                        
  21. sbit DA=P2^4;                        //數碼管每個引腳
  22. sbit DB=P3^2;
  23. sbit DC=P3^6;
  24. sbit DD=P2^0;
  25. sbit DE=P2^1;
  26. sbit DF=P2^3;
  27. sbit DG=P3^5;
  28. sbit DP=P3^7;

  29. sbit B1=P2^5;                        //四個數碼管的引腳定義          用于控制哪個數碼管亮
  30. sbit B2=P2^2;
  31. sbit B3=P3^3;
  32. sbit B4=P3^4;

  33. void main()
  34. {
  35.    P2M0=0x1B;                //需要高電平大電流的引腳 2.4、2.3、2.1、2.0,填入數值0001 1011
  36.    P3M0=0xE4;                //需要高電平大電流的引腳 3.7、3.6、3.5、3.2,填入數值1110 0100
  37.    //B1=B2=B3=B4=0;

  38.    
  39.        
  40.   while(1)
  41.   {
  42.     delay_n_10us(400);
  43.         count++;
  44.         if(count>4)
  45.         {
  46.             count=0;
  47.                 B1=B2=B3=B4=0;  //暫時關閉數碼管 防止閃爍

  48.                 //開始  模--數轉換
  49.         P1ASF=0x80;
  50.             ADC_CONTR=0X88+7;
  51.                    delay_n_10us(5);
  52.             a=ADC_RES;
  53.             L=a;//先將讀數給PWM                 
  54.              //輸出PWM
  55.               if(L>200)         //如果時間大于2ms,從1ms重新開始
  56.              {
  57.                 L=200;
  58.              }
  59.              else if(L<100)         //如果時間小于2ms,從1ms重新開始
  60.                   {
  61.                         L=100;
  62.                       }               
  63.              OUT=1;
  64.              delay_n_10us(L);//輸出高電平   
  65.              OUT=0;
  66.                  data3=L/100;
  67.                  data2=L%100/10;
  68.                  data1=L%10;
  69.                  
  70.                
  71.                      
  72.         }
  73.          
  74.        
  75.         displaytime++;
  76.         if(displaytime>2)
  77.           displaytime=0;
  78.         if(displaytime==0)     
  79.           Display_num(data1,4);        //顯示個位
  80.         if(displaytime==1)
  81.           Display_num(data2,3);        //顯示十位
  82.         if(displaytime==2)
  83.           Display_num(data3*10,2); //顯示百位
  84.                        
  85.           
  86.           
  87.        
  88.          
  89.   }
  90.   
  91. }
  92. void Display(unsigned int num) //顯示0到9直接用相應的數字做參數,顯示1到9 加個點 用1到9乘以10做參數 0加一個點用11做參數
  93. {
  94.    switch(num)
  95.         {
  96.                  case 0:
  97.                      {
  98.                          DA=0;  DB=0;   DC=0;          DD=0;   DE=0; DF=0; DG=1;      DP=1;         //顯示0       
  99.                          break;          
  100.                          }
  101.              case 1:
  102.                      {
  103.                          DA=1;  DB=0;   DC=0;          DD=1;  DE=1; DF=1;   DG=1;      DP=1;         //顯示1
  104.                          break;                  
  105.                          }
  106.                  case 2:
  107.                      {
  108.                          DA=0;  DB=0;   DC=1;          DD=0;   DE=0;  DF=1;          DG=0;     DP=1;         //顯示2                  
  109.                          break;
  110.                          }
  111.                  case 3:
  112.                      {
  113.                          DA=0;  DB=0;    DC=0;          DD=0;    DE=1; DF=1;         DG=0;     DP=1;         //顯示3                  
  114.                          break;
  115.                          }
  116.                  case 4:
  117.                      {
  118.                          DA=1;  DB=0;  DC=0;          DD=1;    DE=1;  DF=0;           DG=0;     DP=1;         //顯示4                  
  119.                          break;
  120.                          }
  121.                  case 5:
  122.                      {
  123.                          DA=0;  DB=1;     DC=0;          DD=0;   DE=1;   DF=0;           DG=0;   DP=1;         //顯示5                  
  124.                          break;
  125.                          }
  126.                  case 6:
  127.                      {
  128.                          DA=0;  DB=1;     DC=0;          DD=0;  DE=0;  DF=0;          DG=0;    DP=1;         //顯示6                  
  129.                          break;
  130.                          }
  131.                  case 7:
  132.                      {
  133.                          DA=0;  DB=0;   DC=0;          DD=1;   DE=1;  DF=1;          DG=1;     DP=1;         //顯示7                  
  134.                          break;
  135.                          }
  136.                  case 8:
  137.                      {
  138.                          DA=0;  DB=0;    DC=0;          DD=0;  DE=0;  DF=0;          DG=0;     DP=1;         //顯示8                  
  139.                          break;
  140.                          }
  141.                  case 9:
  142.                      {
  143.                          DA=0;  DB=0;  DC=0;          DD=0;   DE=1; DF=0;           DG=0;      DP=1;         //顯示9                  
  144.                          break;
  145.                          }
  146.                  
  147.              case 10:
  148.                      {
  149.                          DA=1;  DB=0;   DC=0;          DD=1;  DE=1; DF=1;   DG=1;      DP=0;         //顯示1加個點
  150.                          break;                  
  151.                          }
  152.                 case 11:
  153.                      {
  154.                          DA=0;  DB=0;   DC=0;          DD=0;   DE=0; DF=0; DG=1;      DP=0;         //顯示0        加個點
  155.                          break;          
  156.                          }
  157.                  case 20:
  158.                      {
  159.                          DA=0;  DB=0;   DC=1;          DD=0;   DE=0;  DF=1;          DG=0;     DP=0;         //顯示2        加個點          
  160.                          break;
  161.                          }
  162.                  case 30:
  163.                      {
  164.                          DA=0;  DB=0;    DC=0;          DD=0;    DE=1; DF=1;         DG=0;     DP=0;         //顯示3        加個點          
  165.                          break;
  166.                          }
  167.                  case 40:
  168.                      {
  169.                          DA=1;  DB=0;  DC=0;          DD=1;    DE=1;  DF=0;           DG=0;     DP=0;         //顯示4        加個點          
  170.                          break;
  171.                          }
  172.                  case 50:
  173.                      {
  174.                          DA=0;  DB=1;     DC=0;          DD=0;   DE=1;   DF=0;           DG=0;   DP=0;         //顯示5        加個點          
  175.                          break;
  176.                          }
  177.                  case 60:
  178.                      {
  179.                          DA=0;  DB=1;     DC=0;          DD=0;  DE=0;  DF=0;          DG=0;    DP=0;         //顯示6        加個點          
  180.                          break;
  181.                          }
  182.                  case 70:
  183.                      {
  184.                          DA=0;  DB=0;   DC=0;          DD=1;   DE=1;  DF=1;          DG=1;     DP=0;         //顯示7        加個點          
  185.                          break;
  186.                          }
  187.                  case 80:
  188.                      {
  189.                          DA=0;  DB=0;    DC=0;          DD=0;  DE=0;  DF=0;          DG=0;     DP=0;         //顯示8        加個點          
  190.                          break;
  191.                          }
  192.                  case 90:
  193.                      {
  194.                          DA=0;  DB=0;  DC=0;          DD=0;   DE=1; DF=0;           DG=0;      DP=0;         //顯示9        加個點          
  195.                          break;
  196.                          }
  197.                  default :
  198.                      {
  199.                           DA=1;  DB=1;   DC=1;          DD=1;   DE=1;  DF=1;          DG=1;     DP=1;         //全滅          
  200.                          break;
  201.                          }
  202.         }
  203. }

  204. void Display_num(unsigned int num,unsigned char weizhi)
  205. {
  206.    switch(weizhi)
  207.    {
  208.       case 1:
  209.                {
  210.                         B1=1; B4=0;B2=0;B3=0;
  211.                                   Display(num);
  212.                                 break;
  213.                         }
  214.            case 2:
  215.                {
  216.                         B2=1; B1=0;B3=0;B4=0;
  217.                                   Display(num);
  218.                                 break;
  219.                         }
  220.             case 3:
  221.                {
  222.                         B3=1; B1=0;B2=0;B4=0;
  223.                                   Display(num);
  224.                                 break;
  225.                         }
  226.                  case 4:
  227.                {
  228.                         B4=1; B1=0;B2=0;B3=0;
  229.                                   Display(num);
  230.                                 break;
  231.                         }


  232.     }  
  233. }  





  234. void Delay10us()                //@12.000MHz
  235. {
  236.         unsigned char i;

  237.         _nop_();
  238.         _nop_();
  239.         i = 24;
  240.         while (--i);
  241. }

  242. void delay_n_10us(unsigned int n) //延時n個10us的函數
  243. {      
  244.      while(n)         
  245.           {  
  246.               Delay10us();   
  247.                   n=n-1;//每循環一次n減小1  
  248.            }
  249. }
復制代碼




作者: 我來了來了    時間: 2021-12-13 10:01
高手謝謝分享,老貼子頂起別讓它沉了

作者: w516464390    時間: 2022-12-7 21:29
我來了來了 發表于 2021-12-13 10:01
高手謝謝分享,老貼子頂起別讓它沉了

不錯不錯,學習了

作者: 李李李LIIIILi    時間: 2022-12-8 10:31
用什么軟件編程的,我是新手




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲小视频 | 国产一区二区 | 女生羞羞网站 | 日本一道本视频 | 一区二区三区小视频 | 久久综合久色欧美综合狠狠 | 成人免费网站www网站高清 | 91pron在线| 精品电影 | 欧美成ee人免费视频 | 91在线视频免费观看 | 日韩三级免费观看 | 99久久婷婷国产综合精品电影 | 午夜黄色| 国产成人精品网站 | 欧美日韩精品久久久免费观看 | 国产成人精品久久二区二区 | 久久久久国产 | 男人天堂网址 | 久草网站 | 精品日韩一区二区 | 成人在线观看免费视频 | 视频一区二区在线观看 | 91免费观看视频 | 91偷拍精品一区二区三区 | 久久免费精品 | 免费在线a视频 | 欧美一区二区三区精品免费 | 国产成人在线看 | 日韩一级免费观看 | 高清一区二区三区 | 精品美女视频在线观看免费软件 | 久久三区 | 欧美日韩亚洲成人 | 亚洲一区二区三区欧美 | 亚洲精品久久国产高清情趣图文 | 91午夜在线 | 日本色综合 | 精品一区二区免费视频 | 蜜桃综合在线 | 中文成人在线 |