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

標(biāo)題: 單片機(jī)Proteus仿真實(shí)現(xiàn)步進(jìn)電機(jī)正反轉(zhuǎn),加減速的功能,同時(shí)在lcd上顯示出來 [打印本頁]

作者: yxf123456    時(shí)間: 2019-4-9 15:49
標(biāo)題: 單片機(jī)Proteus仿真實(shí)現(xiàn)步進(jìn)電機(jī)正反轉(zhuǎn),加減速的功能,同時(shí)在lcd上顯示出來
用protues實(shí)現(xiàn)步進(jìn)電機(jī)正反轉(zhuǎn),加減速的功能,內(nèi)附Proteus仿真原理圖,用keil編程的C語言程序。


單片機(jī)源程序如下:
  1. #include <AT89X52.H>
  2. int delay();
  3. void inti_lcd();
  4. void show_lcd(int);
  5. void cmd_wr();
  6. void ShowState();
  7. void clock(unsigned int Delay);
  8. void DoSpeed();//計(jì)算速度
  9. #define RIGHT_RUN 1//正轉(zhuǎn)值
  10. #define LEFT_RUN 0//反轉(zhuǎn)值
  11. sbit RS=0xA0;
  12. sbit RW=0xA1;
  13. sbit E=0xA2;
  14. char SpeedChar[]="SPEED(n/min):";
  15. char StateChar[]="RUN STATE:";
  16. char STATE_CW[]="CW";
  17. char STATE_CCW[]="CCW";
  18. char SPEED[3]="050";
  19. unsigned int RunSpeed=50;//速度
  20. unsigned char RunState=RIGHT_RUN;//運(yùn)行狀態(tài)
  21. void main()
  22. {
  23.         //定時(shí)器設(shè)置
  24.         TMOD=0x66;
  25.         EA=1;//開中斷
  26.         
  27.         TH0=0xff;//定時(shí)器0初始值FFH;
  28.         TL0=0xff;
  29.         ET0=1;
  30.         TR0=1;

  31.         TH1=0xff;//定時(shí)器1初始值FFH
  32.         TL1=0xff;
  33.         ET1=1;
  34.         TR1=1;

  35.         IT0=1;//脈沖方式
  36.         EX0=1;//開外部中斷0:加速
  37.         IT1=1;//脈沖方式
  38.         EX1=1;//開外部中斷1:減速
  39.         
  40.         inti_lcd();
  41.         DoSpeed();
  42.         ShowState();
  43.         while(1)
  44.                 {
  45.                         clock(RunSpeed);
  46.                         P0_1=P0_1^0x01;
  47.                 }
  48. }
  49. //定時(shí)器0中斷程序:正轉(zhuǎn)
  50. void t_0(void)interrupt 1
  51. {
  52.         RunState=RIGHT_RUN;
  53.         P0_0=1;
  54.         P1=0x01;
  55.         cmd_wr();
  56.         ShowState();
  57. }
  58. //定時(shí)器1中斷程序:反轉(zhuǎn)
  59. void t_1(void)interrupt 3
  60. {
  61.         RunState=LEFT_RUN;
  62.         P0_0=0;
  63.         P1=0x01;
  64.         cmd_wr();
  65.         ShowState();
  66. }
  67. //中斷0:加速程序
  68. void SpeedUp()interrupt 0
  69. {
  70.         if(RunSpeed>=12)
  71.                 RunSpeed=RunSpeed-2;
  72.         DoSpeed();
  73.         P1=0x01;
  74.         cmd_wr();
  75.         ShowState();
  76. }
  77. //中斷1:減速程序
  78. void SpeedDown()interrupt 2
  79. {
  80.         if(RunSpeed<=100)
  81.                 RunSpeed=RunSpeed+2;
  82.         DoSpeed();
  83.         P1=0x01;
  84.         cmd_wr();
  85.         ShowState();
  86. }
  87. int delay()//判斷LCD是否忙
  88. {
  89.         int a;
  90. start:
  91.         RS=0;
  92.         RW=1;
  93.         E=0;
  94.         for(a=0;a<2;a++);
  95.         E=1;
  96.         P1=0xff;
  97.         if(P1_7==0)
  98.                 return 0;
  99.         else
  100.                 goto start;
  101. }
  102. void inti_lcd()//設(shè)置LCD方式
  103. {
  104.         P1=0x38;//設(shè)置16*2顯示
  105.         cmd_wr();
  106.         delay();

  107.         P1=0x01;//清除
  108.         cmd_wr();
  109.         delay();

  110.         P1=0x0f;
  111.         cmd_wr();
  112.         delay();

  113.         P1=0x06;//光標(biāo)移動(dòng)設(shè)置
  114.         cmd_wr();
  115.         delay();

  116.         P1=0x0c;//顯示開及光標(biāo)設(shè)置
  117.         cmd_wr();
  118.         delay();
  119. }
  120. void cmd_wr()//寫控制字
  121. {
  122.         RS=0;
  123.         RW=0;
  124.         E=0;
  125.         E=1;
  126. }
  127. void show_lcd(int i)//LCD顯示子程序
  128. {
  129.         P1=i;
  130.         RS=1;
  131.         RW=0;
  132.         E=0;
  133.         E=1;
  134. }
  135. void ShowState()//顯示狀態(tài)與速度
  136. {
  137.         int i=0;
  138.         while(SpeedChar[i]!='\0')        ///char SpeedChar[]="SPEED(n/min)";
  139.         {
  140.                 delay();
  141.                 show_lcd(SpeedChar[i]);
  142.                 i++;
  143.         }
  144.         delay();
  145.         P1=0x80|0x0d;
  146.         cmd_wr();
  147.         i=0;
  148.         while(SPEED[i]!='\0')
  149.         {
  150.                 delay();
  151.                 show_lcd(SPEED[i]); SPEED[3]="050";
  152.                 i++;
  153.         }
  154.                 delay();
  155.                 P1=0xC0;
  156.                 cmd_wr();
  157.                 i=0;
  158.                 while(StateChar[i]!='\0')
  159.         {
  160.                 delay();
  161.                 show_lcd(StateChar[i]);/// char StateChar[]="RUN STATE";
  162.                 i++;
  163.         }
  164.         delay();
  165.         P1=0xC0|0x0A;
  166.         cmd_wr();
  167.         i=0;
  168.         if(RunState==RIGHT_RUN)
  169.                 while(STATE_CW[i]!='\0')
  170.         {
  171.                 delay();
  172. ……………………

  173. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
新建文件夾.zip (41.5 KB, 下載次數(shù): 180)



作者: jialishoushi    時(shí)間: 2019-4-12 19:18
好資料     謝謝分享
作者: leel5211314    時(shí)間: 2019-4-12 23:25
不能用
作者: 要錢的大哥    時(shí)間: 2019-4-27 12:23
很好,可以用
作者: 呱呱兔    時(shí)間: 2020-5-27 02:55
老哥,這個(gè)可以再加個(gè)星三角啟動(dòng)嗎
作者: hasakei    時(shí)間: 2020-7-2 12:16
誰有這個(gè)原理圖啊,發(fā)一下,謝謝。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产成人免费视频网站视频社区 | 亚洲国产精品美女 | 欧美中文字幕一区二区 | 成人精品久久日伦片大全免费 | 91av在线免费看 | 国产精品自产拍 | 91久久综合 | 国产一区二区三区久久 | 中文字幕在线看 | 亚洲人人| 91免费在线播放 | 自拍偷拍亚洲视频 | 免费一区| 久久久久国产一区二区三区 | 精品91av| 国产精品久久久久久久久久久免费看 | av一二三区| 国产国产精品久久久久 | 亚洲超碰在线观看 | 先锋影音资源网站 | 免费视频一区二区 | 成人亚洲视频 | 欧美激情久久久 | 日韩精品视频在线免费观看 | 日本视频在线 | 欧美高清成人 | 自拍偷拍3p| 久久99久久久久 | 日本黄色大片免费看 | 久久免费观看视频 | 欧美日韩在线一区二区 | 欧美精品在线免费 | 国产精品成人一区二区三区夜夜夜 | 国产精品免费在线 | 久久91精品国产 | 亚洲欧美v | 亚洲一区在线播放 | 九九在线精品视频 | 91极品尤物在线播放国产 | www.婷婷亚洲基地 | 免费人成激情视频在线观看冫 |