wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

自制直流電機調速系統仿真+單片機源代碼

[復制鏈接]
跳轉到指定樓層
樓主
自制直流電機調速系統仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include <reg52.h>
  2. /*********************************************
  3. * 定時器初值
  4. *********************************************/
  5. #define T0HIGH        0xec
  6. #define T0LOWW        0x8a

  7. /*********************************************
  8. *
  9. *********************************************/
  10. typedef unsigned char        u8;
  11. typedef unsigned int        u16;
  12. typedef unsigned long        u32;
  13. typedef bit                                BOOL;

  14. /*********************************************
  15. * 單片機管腳定義
  16. *********************************************/
  17. sbit KEY_ON_PIN = P2^0;
  18. sbit KEY_INC_PIN = P2^1;
  19. sbit KEY_DEC_PIN = P2^2;

  20. sbit MOTO_LEFT = P3^6;
  21. sbit MOTO_RIGHT = P3^7;

  22. /*********************************************
  23. * 按鍵定義
  24. *********************************************/
  25. #define KEY_NULL                0xff
  26. #define KEY_LONG_PERIOD        25
  27. #define KEY_CONTINUE_PERIOD        20

  28. #define KEY_DOWN                0x80
  29. #define KEY_CONTINUE        0x40
  30. #define KEY_UP                        0x20

  31. #define KEY_STATE_INIT                0
  32. #define KEY_STATE_WOBBLE        1
  33. #define KEY_STATE_PRESS                2
  34. #define KEY_STATE_LONG                3
  35. #define KEY_STATE_CONTINUE        4
  36. #define KEY_STATE_RELEASE        5

  37. #define KEY_ON_VALUE                1
  38. #define KEY_INC_VALUE                2
  39. #define KEY_DEC_VALUE                3

  40. #define KEY_ON                (KEY_ON_VALUE | KEY_DOWN)
  41. #define KEY_INC                (KEY_INC_VALUE | KEY_DOWN)
  42. #define KEY_INC_CON        (KEY_INC_VALUE | KEY_CONTINUE)
  43. #define KEY_DEC                (KEY_DEC_VALUE | KEY_DOWN)
  44. #define KEY_DEC_CON        (KEY_DEC_VALUE | KEY_CONTINUE)
  45. /*********************************************
  46. * 常量定義
  47. *********************************************/
  48. #define true        1
  49. #define false        0

  50. #define MOTO_ON                MOTO_LEFT = false;\
  51.                                         MOTO_RIGHT = true
  52. #define MOTO_OFF        MOTO_LEFT = true;\
  53.                                         MOTO_RIGHT = true
  54. /*********************************************
  55. * 全局變量定義
  56. *********************************************/
  57. code u8 DisCode[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0xff};

  58. u8 PWMpercent = 0;
  59. u8 DisNum[4] = {0x0a, 0x0a, 0x0a, 0x00};
  60. u8 DisPosition = 0;
  61. u8 SecCount = 0;
  62. u8 u10msNum = 0;

  63. BOOL b10msEvent = false;
  64. BOOL b100msEvent = false;
  65. BOOL b1secEvent = false;
  66. BOOL MotoStart = false;
  67. BOOL MotoRun = false;

  68. void Key_Prosess(void);
  69. void Dynamic_Display(void);
  70. void Speed_Display(void);

  71. /*********************************************
  72. * 主函數
  73. *********************************************/
  74. main()
  75. {
  76.         TMOD = 0x01;
  77.         TH0 = T0HIGH;
  78.         TL0 = T0LOWW;
  79.         TR0 = 1;
  80.         ET0 = 1;
  81.         EA = 1;
  82.         P1 = 0x00;

  83.         while(1)
  84.         {
  85.                 if(true == b10msEvent)        //10毫秒定時標志
  86.                 {
  87.                         b10msEvent = false;
  88.                         Key_Prosess();                //按鍵掃描
  89.                         Dynamic_Display();                //動態顯示

  90.                         if(true == MotoStart)        //如果電機啟動
  91.                         {
  92.                                 if(true == MotoRun)
  93.                                 {
  94.                                         if(--u10msNum == 0)                //如果電機轉動時間到,停止電機
  95.                                         {
  96.                                                 MotoRun = false;
  97.                                                 MOTO_OFF;
  98.                                         }
  99.                                 }
  100.                                 if(true == b1secEvent)                //PWM周期為1秒,1秒鐘時間到,開始下一個周期
  101.                                 {
  102.                                         b1secEvent = false;
  103.                                         MotoRun = true;
  104.                                         MOTO_ON;
  105.                                         u10msNum = PWMpercent;
  106.                                 }
  107.                         }
  108.                 }
  109.         }
  110. }
  111. /*********************************************
  112. * 清顯示
  113. *********************************************/
  114. void Num_Clear(void)
  115. {
  116.         u8 i;
  117.         for(i=0; i<3; i++)
  118.         {
  119.                 DisNum[i] = 0x0a;
  120.         }
  121.         DisNum[3] = 0x00;
  122. }
  123. /*********************************************
  124. * 讀鍵值
  125. *********************************************/
  126. u8 Key_Scan(void)
  127. {
  128.         if(KEY_ON_PIN == false)
  129.                 return KEY_ON_VALUE;
  130.         if(KEY_INC_PIN == false)
  131.                 return KEY_INC_VALUE;
  132.         if(KEY_DEC_PIN == false)
  133.                 return KEY_DEC_VALUE;
  134.         return KEY_NULL;
  135. }
  136. /*********************************************
  137. * 按鍵狀態掃描
  138. *********************************************/
  139. u8 GetKey(void)
  140. {
  141.         static u8 KeyState = KEY_STATE_INIT;
  142.         static u8 KeyTimeCount = 0;
  143.         static u8 LastKey = KEY_NULL;        //保存按鍵釋放時候的鍵值
  144.         u8 KeyTemp = KEY_NULL ;

  145.         KeyTemp = Key_Scan();

  146.         switch(KeyState)
  147.         {
  148.                 case KEY_STATE_INIT:        //初始狀態
  149.                         if(KEY_NULL != KeyTemp)        //有鍵按下
  150.                         {
  151.                                 KeyState = KEY_STATE_WOBBLE;        //進入消抖
  152.                         }
  153.                         break;

  154.                 case KEY_STATE_WOBBLE:        //消抖
  155.                         KeyState = KEY_STATE_PRESS;
  156.                         break;

  157.                 case KEY_STATE_PRESS:
  158.                         if(KEY_NULL != KeyTemp)
  159.                         {
  160.                                 LastKey = KeyTemp;        //保存鍵值,以便在釋放按鍵狀態返回鍵值
  161.                                 KeyTemp |= KEY_DOWN;        //按鍵按下
  162.                                 KeyState = KEY_STATE_LONG;
  163.                         }
  164.                         else
  165.                         {
  166.                                 KeyState = KEY_STATE_INIT;
  167.                         }
  168.                         break;

  169.                 case KEY_STATE_LONG:
  170.                         if(KEY_NULL != KeyTemp)
  171.                         {
  172.                                 if(++KeyTimeCount >= KEY_LONG_PERIOD)
  173.                                 {
  174.                                         KeyTimeCount = 0;
  175.                                         KeyState = KEY_STATE_CONTINUE;
  176.                                 }
  177.                         }
  178.                         else
  179.                         {
  180.                                 KeyState = KEY_STATE_RELEASE;
  181.                         }
  182.                         break;

  183.                 case KEY_STATE_CONTINUE:
  184.                         if(KEY_NULL != (KeyTemp))
  185.                         {
  186.                                 if(++KeyTimeCount >= KEY_CONTINUE_PERIOD)
  187.                                 {
  188.                                         KeyTimeCount = 0;
  189.                                         KeyTemp |= KEY_CONTINUE;  //連擊按鍵事件發生
  190.                                 }
  191.                         }
  192.                         else
  193.                         {
  194.                                 KeyState = KEY_STATE_RELEASE;
  195.                         }
  196.                         break;

  197.                 case KEY_STATE_RELEASE:
  198.                         LastKey |= KEY_UP;        //按鍵釋放
  199.                         KeyTemp = LastKey;
  200.                         KeyState = KEY_STATE_INIT;
  201.                         break;

  202.                 default:
  203.                         break;
  204.         }
  205.         return KeyTemp;
  206. }
  207. /*********************************************
  208. * 按鍵功能處理
  209. *********************************************/
  210. void Key_Prosess(void)
  211. {
  212.         u8 KeyData;

  213.         KeyData = GetKey();

  214.         switch(KeyData)
  215.         {
  216.                 case KEY_ON:        //開關電機
  217.                         if(true == MotoStart)
  218.                         {
  219.                                 MotoStart = false;
  220.                                 Num_Clear();
  221.                                 MOTO_OFF;
  222.                                 MotoRun = false;
  223.                                 PWMpercent= 0;
  224.                         }
  225.                         else
  226.                         {
  227.                                 MotoStart = true;
  228.                                 MOTO_ON;
  229.                                 MotoStart = true;
  230.                                 MotoRun = true;
  231.                                 u10msNum = PWMpercent = 1;
  232.                         }
  233.                         break;

  234.                 case KEY_INC:        //單步增加
  235.                 case KEY_INC_CON:        //連續增加
  236.                         if((PWMpercent < 100) && MotoStart)                //PWM從1%~100%
  237.                                 PWMpercent++;
  238.                         break;

  239.                 case KEY_DEC:        //單步減小
  240.                 case KEY_DEC_CON:        //連續減小
  241.                         if((PWMpercent > 1) && MotoStart)                //PWM從1%~100%
  242.                                 PWMpercent--;
  243.                         break;

  244.                 default:
  245.                         break;
  246.         }
  247.         Speed_Display();
  248. }
  249. /*********************************************
  250. * 速度轉換成十進制數
  251. *********************************************/
  252. void Speed_Display(void)
  253. {
  254.         u8 i;

  255.         DisNum[1] = PWMpercent / 100;
  256.         DisNum[2] = PWMpercent % 100 / 10;
  257.         DisNum[3] = PWMpercent % 10;
  258.         for(i=1; i<3; i++)
  259.         {
  260.                 if(DisNum[i] != 0)
  261.                         break;
  262.                 DisNum[i] = 0x0a;
  263. ……………………

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

所有資料51hei提供下載:
moto.rar (68.74 KB, 下載次數: 78)


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

使用道具 舉報

沙發
ID:409351 發表于 2018-10-14 10:53 | 只看該作者
很有用
回復

使用道具 舉報

板凳
ID:954538 發表于 2021-7-20 16:26 | 只看該作者
樓主你好,我想再控制一下電機的正反轉該怎么加代碼呢
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
成人午夜精品一区二区三区| 亚洲18私人小影院| 国产99一区视频免费| 亚洲激情播播| 国产乱码在线| 男女午夜刺激视频| 中文字幕在线免费看| 国产精彩视频在线观看| 激情图片中文字幕| 亚洲欧美一二三| 91视频免费在线| 最新91在线视频| 8v天堂国产在线一区二区| 国产欧美一区二区三区网站 | 天堂а√在线中文在线鲁大师| 亚洲爆乳无码精品aaa片蜜桃| 国产情人节一区| 日韩在线欧美在线| 欧美一区二区三区播放老司机 | 国产ts一区二区| 亚洲美女av在线播放| 一本一道波多野结衣一区二区| 91蝌蚪porny| 蜜臀av一区二区在线免费观看| 欧美男男gaytwinkfreevideos| 日韩毛片免费观看| 超碰porn在线| 先锋影音欧美性受| 五月综合网站| 999人在线精品播放视频| 国产又大又长又粗| 日本一本高清视频| 女人十八毛片嫩草av| theporn国产精品| 国产一区二区在线视频播放| 神马欧美一区二区| 国产精品福利视频| 国产日韩欧美在线播放| 91精品国产91久久久久久最新 | 日韩码欧中文字| 成人高清av在线| 蜜桃久久av一区| 激情视频一区| 91精品啪在线观看国产81旧版 | 求av网址在线观看| 中文天堂在线观看| 久草.com| eeuss鲁片一区| 免费高清av| 黄色小视频免费| 4438欧美| 免费看片91| 精品入口蜜桃| 国产精品成人免费一区久久羞羞| 国产成人艳妇aa视频在线| 欧美韩国日本精品一区二区三区| 99国产盗摄| 国产一区二区色| 国产精品视频xxx| 国产精品99一区| 国产成人精品av在线| 欧美在线观看网站| 欧美最猛黑人xxxx黑人猛叫黄 | 插我舔内射18免费视频| 17c国产在线| 男操女免费网站| 在线观看av日韩| 五月激情婷婷在线| 污视频网址在线观看| 中文字幕中文在线| 欧美69精品久久久久久不卡 | 国精产品一区一区三区mba视频| 丝袜美腿一区二区三区| 日本亚洲视频在线| 国产一区二区视频在线播放| 国内精品写真在线观看| 国产成人精品免费在线| 成人免费黄色在线| 国产日产欧产精品推荐色| 欧美激情中文不卡| 伊人夜夜躁av伊人久久| 精品久久久久久久久久久久| 欧美日韩精品二区| 欧美日韩电影一区| 精品卡一卡二卡三卡四在线| 精品亚洲一区二区三区| 中文字幕在线日韩| 羞羞色国产精品| 亚洲japanese制服美女| 精品国产乱码久久久久久88av| 欧美精品人人做人人爱视频| 永久免费精品视频网站| 日本一道本久久| 欧美成年人视频在线观看| 999这里有精品| 久久丫精品国产亚洲av不卡| www.5588.com毛片| 中文字幕精品无| 亚洲乱码在线观看| 国产经典中年夫妇盗摄| av先锋影音资源站| 美女做暖暖视频免费在线观看全部网址91| 在线观看黄av| 日韩av电影资源网| 国产精品中文字幕亚洲欧美| 伊人久久成人| 成人国产一区二区三区精品| 亚洲三级在线观看| 日韩一区二区免费在线观看| 色噜噜狠狠狠综合曰曰曰| 国产成人精品综合久久久| 美女黄毛**国产精品啪啪| 99在线免费视频观看| 日批视频在线看| 亚洲 欧美 变态 另类 综合| 波多野结衣二区三区| 亚洲色图影院| 99re在线视频播放| 成人免费观看视频大全| 欧美激情福利| 99久久99久久精品国产片果冰| 蜜桃精品视频在线| 国产精品视频观看| 欧美高清性hdvideosex| 久久资源免费视频| 国产厕所精品在线观看| 国产精品久久中文字幕| 呦呦视频在线观看| 91精品国产高清一区二区三密臀| 精产国品一区二区三区| 国产日产在线观看| 国产一区二区小视频| 韩国专线一区二三区| 涩爱av在线播放一区二区| 精品91久久| 日韩成人精品一区| 国产精品夜夜嗨| 精品国产福利视频| 色婷婷综合久久久久中文字幕1| 91精品免费看| 亚洲美免无码中文字幕在线 | 美女视频网站在线观看| av网站在线免费观看| 精品入口麻豆88视频| 亚洲人成高清| 国产精品久久综合| 日韩国产在线看| 国产精品网站视频| 精品无码国模私拍视频| 欧美人与禽zoz0善交| 日批免费在线观看| 在线免费视频你懂得| 香蕉成人在线| 久久一区激情| 性久久久久久久久久久久| 日韩中文字幕国产| 蜜桃成人在线| www.日本高清| 国精产品乱码一区一区三区四区| 国产一级性片| 亚洲爽爆av| 美女脱光内衣内裤视频久久网站| 午夜av一区二区三区| 久久躁日日躁aaaaxxxx| 一本久道久久综合| 91视频免费在观看| 岛国电影中文在线| 国产黄在线观看| 日韩精品福利一区二区三区| 国产精品正在播放| 91精品国产综合久久久久久久| 日本一区二区在线播放| 欧美日韩黄色一级片| 青娱乐免费在线视频| 国产麻豆高清视频在线第一页 | 国产免费高清视频| 全部孕妇毛片丰满孕妇孕| 亚洲欧美久久精品| 国产综合色产在线精品| 欧美日高清视频| 亚洲xxxx18| 精人妻一区二区三区| 亚洲精品无码久久久| 最新二区三区av| www.国产精品一区| 丁香网亚洲国际| 亚洲精品国产精品国产自| 福利精品视频| 加勒比精品视频| 一色屋成人免费精品网| caoporn视频在线| 日韩视频在线一区二区三区 | 亚洲日本无吗高清不卡| 国产又粗又长免费视频| 热99精品视频| 99在线视频影院| 免费看的黄色欧美网站| 欧美性色黄大片手机版| 国产欧美在线看| 亚洲v在线观看| 男人插入女人视频| www在线看| 日本欧美一区二区三区| 天堂资源在线播放| 美女av在线免费观看| 国产精品chinese在线观看| 91蜜桃视频在线| 麻豆国产精品va在线观看不卡| 妞干网在线观看视频| 中文在线免费观看| 国产系列在线观看| 亚洲国产一区二区在线观看| 日韩欧美999| 国产精品三区在线| 美国一级片在线观看| 777奇米888色狠狠俺也去| 国产精品网址| 亚洲综合色网站| 国产美女精彩久久| mm131丰满少妇人体欣赏图| 免费自拍视频| 中文字幕av一区二区三区人| 一区二区三区美女| 7777精品久久久大香线蕉小说| 永久免费看mv网站入口78| 免费免费啪视频在线观播放| 97品白浆高清久久久久久| 中文字幕一区二区三区精华液| 欧美孕妇性xx| 90岁老太婆乱淫| 妞干网在线视频| 99成人在线视频| 久久久91精品国产一区二区精品 | 亚洲国产aⅴ天堂久久| 成人午夜黄色影院| 91九色在线免费视频| 亚洲观看黄色网| 美女被c出白浆| 曰本一区二区三区视频| 欧美午夜激情在线| 久久涩涩网站| 国产成人无码一区二区三区在线| 一二三区在线| 久久精品一区| 一区二区三区视频在线| 免费观看成人网| 最新中文字幕久久| 好吊操视频这里只有精品| 欧美多人野外伦交| 日本福利一区| 欧美日韩在线亚洲一区蜜芽| 秋霞毛片久久久久久久久| 中国黄色一级视频| 岛国在线视频网站| 亚洲国产成人自拍| 操一操视频一区| 国产对白videos麻豆高潮| 在线播放麻豆| 99精品桃花视频在线观看| 欧美中文在线免费| 国产精品视频看看| 国产福利免费在线观看| 国产乱码字幕精品高清av| 久久久亚洲福利精品午夜| 一级黄色片大全| 美女做暖暖视频免费在线观看全部网址91| 日韩av在线免费观看不卡| 久久久精品一区| 国产精品jizz| 亚洲美女电影在线| 国产麻豆成人传媒免费观看| 国产91精品久久久久久久| 18啪啪污污免费网站| porn视频在线观看| 国产一区在线精品| 国产成人在线一区| 日韩乱码人妻无码中文字幕| 国产网红在线观看| 亚洲欧洲一区二区在线播放| 久久综合九色综合网站| 精品人妻一区二区三区麻豆91| 精品午夜视频| 欧美日韩国产一级片| 麻豆传传媒久久久爱| jizz视频播放器| 丝袜亚洲精品中文字幕一区| 97在线视频免费播放| 国产一级二级三级| 天堂亚洲精品| 亚洲午夜国产一区99re久久| 在线无限看免费粉色视频| 亚洲天堂久久久| 91精品蜜臀一区二区三区在线| 亚洲欧洲成视频免费观看| 91超薄肉色丝袜交足高跟凉鞋| 天堂av中文在线资源库| 国产精品996| 91pron在线| 手机在线中文字幕| 欧美人与牲禽动交com | 隔壁老王国产在线精品| 国产亚洲欧美久久久久| 午夜不卡影院| 欧洲激情一区二区| 色多多视频在线播放| h短视频大全在线观看| 国产福利一区二区三区视频| 亚洲成人动漫在线观看| 免费看国产一级片| 国产精品视频一区二区图片| 国产一区二区三区精品欧美日韩一区二区三区 | 91在线国产福利| 欧美日韩一区二区三区免费| 无国产精品白浆免费视| 影音先锋中文字幕一区| 欧美最近摘花xxxx摘花| 国产亲伦免费视频播放| 国产精品密蕾丝视频下载| 久久精品99国产精品酒店日本| 欧美黄色一区二区三区| 日韩精品第二页| 亚洲国产高清福利视频| 国产主播av在线| 外国电影一区二区| 日韩视频一区二区| 性猛交娇小69hd| 台湾佬中文娱乐久久久| 欧美一级黄色片| 中文字幕伦理片| 欧洲亚洲精品| 亚洲欧洲日产国产网站| 久久久久无码精品国产| 豆花视频一区| 在线播放精品一区二区三区| 久久免费播放视频| 成人香蕉社区| 精品中文字幕乱| 中文字幕视频免费观看| 99久久亚洲精品蜜臀| 热久久美女精品天天吊色| 国产黄色免费大片| 亚洲手机在线| 91免费看蜜桃| 国产5g影院天天爽天天看| 国产一区二区在线免费观看| 日韩欧美精品一区二区三区经典 | 国产99久久| 97免费中文视频在线观看| 国产色在线视频| 91久久亚洲| 成人欧美一区二区三区在线观看| 成人午夜国产福到在线| 丁香六月久久综合狠狠色| 国产精品久久久影院| 在线看的网站你懂| 精品美女国产在线| 麻豆国产精品一区| 成人一区视频| 日韩在线观看免费av| 国产精品一区二区av白丝下载| 在线看片一区| 欧美视频小说| 免费网站www在线观看| 亚洲自拍偷拍九九九| 成人在线观看一区二区| 亚洲四虎影院| 欧美成人在线免费| 香蕉av一区二区三区| 久久精品国产秦先生| av动漫在线播放| 色一情一乱一伦| 国产精品99一区二区三| 147欧美人体大胆444| 91香蕉视频在线观看| 久久精品一区八戒影视| 国产美女18xxxx免费视频| 在线免费三级电影网站| 在线国产精品播放| 精品黑人一区二区三区在线观看 | 深夜福利一区| 日韩免费观看网站| 91美女视频| 国产精品毛片久久久久久久| 亚洲精品一区二区18漫画| 国产精品天堂蜜av在线播放| 久热精品视频在线免费观看| 欧美一区,二区| 国产成人精品免费| 天天视频天天爽| 国产福利亚洲| 欧美激情免费观看| 欧美黑人xxxx猛牲大交| 久久久精品影视| 亚洲国产精品狼友在线观看| 麻豆精品久久| 成人激情视频免费在线| 国产美女av| 欧美日韩精品一区二区三区| 欧美性猛交bbbbb精品| 亚洲在线成人|