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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6180|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機仿真編碼器電機測速程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:342451 發(fā)表于 2020-4-20 23:02 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
利用Proteus8.6,元器件庫編碼器電機結(jié)合51單片機,進行速度測量由此可以延伸利用仿真實現(xiàn)PID電機轉(zhuǎn)速控制(請自行設(shè)計)
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. /***********頭文件聲明************/
  2. #include "reg52.h"//此文件中定義了單片機的一些特殊功能寄存器
  3. /***********數(shù)據(jù)類型聲明***********/
  4. typedef unsigned int u16;//對數(shù)據(jù)類型進行聲明定義
  5. typedef unsigned char u8;
  6. /***********IO口相關(guān)定義***********/
  7. sbit LSA=P2^0;
  8. sbit LSB=P2^1;
  9. sbit MOTOR=P2^2;
  10. /**********變量定義*************/
  11. u16 Pulse;
  12. u16 Speed;
  13. u16 pwm;
  14. /*******************************************************************************
  15. * 函 數(shù) 名         : delay
  16. * 函數(shù)功能                     : 延時函數(shù),i=1時,大約延時10us
  17. *******************************************************************************/
  18. void delay(u16 i)
  19. {
  20.         while(i--);        
  21. }
  22. /*******************************************************************************
  23. * 函數(shù)名       :DigDisplay()
  24. * 函數(shù)功能                 :數(shù)碼管顯示函數(shù)
  25. *******************************************************************************/
  26. void DigDisplay()
  27. {
  28.   u8 disp[2];
  29.   u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  30.         u8 i;
  31.         for(i=0;i<2;i++)
  32.         {
  33.                 switch(i)         //位選,選擇點亮的數(shù)碼管,
  34.                 {
  35.                         case(0):
  36.                                 LSA=0;LSB=1; break;//顯示第0位
  37.                         case(1):
  38.                                 LSA=1;LSB=0; break;//顯示第1位
  39.                 }
  40.                 P0=disp[i];//發(fā)送數(shù)據(jù)
  41.                 delay(10); //間隔一段時間掃描        
  42.                 P0=0x00;//消隱
  43.         }
  44.         disp[0]=smgduan[Speed/10];        
  45.         disp[1]=smgduan[Speed%10];        
  46. }
  47. /*******************************************************************************
  48. * 函 數(shù) 名         : Int0Init()
  49. * 函數(shù)功能                     : 設(shè)置外部中斷0
  50. *******************************************************************************/
  51. void Int0Init()
  52. {
  53.         //設(shè)置INT0
  54.         IT0=1;//跳變沿出發(fā)方式(下降沿)
  55.         EX0=1;//打開INT0的中斷允許。        
  56.         EA=1;//打開總中斷        
  57. }
  58. /*******************************************************************************
  59. * 函 數(shù) 名         : Timer0Init
  60. * 函數(shù)功能                     : 定時器0初始化
  61. *******************************************************************************/
  62. void Timer0Init()
  63. {
  64.         TMOD|=0X01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
  65.         TH0 = 0xFC;//給定時器賦初值,定時1ms  
  66.   TL0 = 0x18;
  67.         ET0=1;//打開定時器0中斷允許
  68.         EA=1;//打開總中斷
  69.         TR0=1;//打開定時器               
  70. }
  71. /*******************************************************************************
  72. * 函 數(shù) 名       : main
  73. * 函數(shù)功能                   : 主函數(shù)
  74. *******************************************************************************/
  75. void main()
  76. {        
  77.         Int0Init();
  78.         Timer0Init();
  79.         pwm=50;
  80.         while(1);
  81. }
  82. /*外部中斷0的中斷函數(shù)*/
  83. void Int0()        interrupt 0               
  84. {
  85.   Pulse++;//脈沖++
  86. }
  87. /*定時器0的中斷函數(shù)*/
  88. void Timer0() interrupt 1
  89. {
  90.         static u8 Period,dis,PWM_Period;
  91.         TH0 = 0xFC;//定時1ms  
  92.         TL0 = 0x18;
  93.         Period++;        
  94.         PWM_Period++;        
  95.         dis++;
  96.         /*******轉(zhuǎn)速計算********/
  97.         if(Period == 100)//1*100ms
  98.         {
  99.                 //計算速度S=(Pulse/360)*10*60 r/min
  100.                 Speed=(Pulse)*1.6;
  101.                 Pulse=0;
  102.                 Period=0;
  103.         }
  104.         /*******PWM 輸出********/
  105.         if(PWM_Period <  pwm) MOTOR=1;
  106.         if(PWM_Period >= pwm) MOTOR=0;
  107.         if(PWM_Period == 100)        PWM_Period=0;
  108.         /*******數(shù)碼管顯示********/
  109.         if(dis == 4)
  110.         {
  111.                 DigDisplay();//數(shù)碼管顯示函數(shù)        
  112.                 dis=0;               
  113.         }
  114. }
復(fù)制代碼

所有資料51hei提供下載:
基于51單片機的轉(zhuǎn)速測量.zip (139.97 KB, 下載次數(shù): 122)




評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲综合区 | 99热热精品| 中文字幕 在线观看 | 一区二区三区免费 | 精品久久久久久亚洲综合网站 | 欧美区在线观看 | 久久久久久女 | av性色全交蜜桃成熟时 | 久久久久国产精品 | 丝袜美腿一区二区三区 | 日本欧美大片 | 国内久久| 国产精品免费高清 | av免费网站在线观看 | 91精品国产自产精品男人的天堂 | 日韩欧美视频网站 | 91观看 | 国产精品一区二区三区久久 | 国产在线永久免费 | 欧美日韩在线一区二区三区 | 人人天天操 | 日韩精品福利 | 国内精品视频一区二区三区 | 久久久久亚洲精品国产 | 91天堂网 | 中文字幕亚洲精品 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 亚洲网站在线观看 | www.日日操 | 国产成人在线播放 | 国产成人午夜精品影院游乐网 | 久久久国产一区二区三区四区小说 | 亚洲精色 | 欧美黑人狂野猛交老妇 | 在线日韩欧美 | 欧美激情五月 | 免费av电影网站 | 蜜臀网站 | 日韩精品在线一区 | 91精品久久久久久久久久 | 中文在线а√在线8 |