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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

簡易舵機測試儀

[復制鏈接]
跳轉到指定樓層
樓主
在原來電壓顯示器的基礎上稍加修改就成舵機測試儀。對最小時間片和周期有了更深的了解。







  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. }
復制代碼



評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:603812 發表于 2021-12-13 10:01 | 只看該作者
高手謝謝分享,老貼子頂起別讓它沉了
回復

使用道具 舉報

板凳
ID:895060 發表于 2022-12-7 21:29 | 只看該作者
我來了來了 發表于 2021-12-13 10:01
高手謝謝分享,老貼子頂起別讓它沉了

不錯不錯,學習了
回復

使用道具 舉報

地板
ID:1056411 發表于 2022-12-8 10:31 | 只看該作者
用什么軟件編程的,我是新手
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区欧美一区 | 亚洲一区欧美 | 亚洲v区| 欧美爱爱视频网站 | 久久国产精品一区二区三区 | 日韩成人免费视频 | 成人精品一区二区三区 | 情侣黄网站免费看 | 成人国产精品久久久 | 狠狠草视频 | 91亚洲一区 | 日韩毛片在线视频 | 亚洲精品一区二区网址 | 午夜电影合集 | 波多野结衣一区二区三区在线观看 | 色综网| 做a视频 | 人人人干| 日本午夜免费福利视频 | 奇米影视首页 | 中文字幕亚洲一区二区三区 | 亚洲高清在线 | 亚洲免费在线 | 日本三级视频 | 国产高清一区二区 | 久久影院一区 | 拍真实国产伦偷精品 | 成人在线视频免费观看 | 黄色在线免费观看 | 国产农村妇女毛片精品久久麻豆 | 91极品尤物在线播放国产 | 蜜桃视频在线观看免费视频网站www | 91传媒在线播放 | 国产羞羞视频在线观看 | 黄色精品| 中文字幕在线观看视频网站 | 岛国午夜| 一区二区三区福利视频 | 亚洲精品68久久久一区 | 性色av一区二区三区 | 欧美1页 |