標(biāo)題: 單片機(jī)按鍵控制步進(jìn)電機(jī)啟停 液晶顯示電機(jī)狀態(tài),有源碼和仿真電路 [打印本頁(yè)]

作者: PeaceY    時(shí)間: 2020-4-18 13:18
標(biāo)題: 單片機(jī)按鍵控制步進(jìn)電機(jī)啟停 液晶顯示電機(jī)狀態(tài),有源碼和仿真電路
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include <reg52.h>                 //調(diào)用單片機(jī)頭文件
  2. #include <intrins.h>
  3. #define uchar unsigned char  
  4. #define uint  unsigned int         
  5. //引腳聲明
  6. sbit rs=P2^0;//1602數(shù)據(jù)/命令選擇引腳
  7. sbit rw=P2^1;//1602讀寫引腳               
  8. sbit e =P2^2;//1602使能引腳
  9. sbit IN1=P3^3;//電動(dòng)機(jī)方向引腳1
  10. sbit IN2=P3^4;//電動(dòng)機(jī)方向引腳2
  11. sbit ENA=P3^5;//電動(dòng)機(jī)使能引腳
  12. sbit key_hy=P3^7;//紅外傳感器
  13. sbit key_end=P3^6;//行程開關(guān)
  14. //us延時(shí)函數(shù)
  15. void delay(uint i)
  16. {
  17.          while(--i);
  18. }
  19. //毫秒延時(shí)函數(shù)
  20. void delayms(uint xms)
  21. {
  22.         uint x,y;
  23.         for(x=0;x<xms;x++)
  24.                 for(y=0;y<122;y++);
  25. }
  26. //1602寫命令函數(shù)
  27. void write_com(uchar com)
  28. {
  29.         e=0;
  30.         rs=0;//指令模式
  31.         rw=0;//寫
  32.         P0=com;
  33.         delay(3);
  34.         e=1;
  35.         delay(25);
  36.         e=0;
  37. }

  38. //1602寫數(shù)據(jù)函數(shù)
  39. void write_data(uchar dat)
  40. {
  41.         e=0;
  42.         rs=1;//數(shù)據(jù)模式
  43.         rw=0;//寫
  44.         P0=dat;
  45.         delay(3);
  46.         e=1;
  47.         delay(25);
  48.         e=0;        
  49. }
  50. //初始化1602液晶
  51. void init_1602()
  52. {
  53.         delay(1000);
  54.         write_com(0x38);//雙行顯示,5*7字符
  55.         write_com(0x0c);//不顯示光標(biāo)
  56.         write_com(0x06);//向后顯示
  57.         write_com(0x01);//清屏
  58.         delay(1000);
  59. }
  60. //主函數(shù)
  61. void main()
  62. {
  63.         init_1602();//1602液晶初始化
  64.         IN1=0;//初始狀態(tài)電動(dòng)機(jī)停止
  65.         IN2=0;
  66.         ENA=0;
  67.         write_com(0x80);
  68.         write_data('C'); write_data('L');write_data('O');write_data('S');write_data('E');
  69.         while(1)
  70.         {
  71.                 if(key_hy==0) //紅外傳感器檢測(cè)到信號(hào)
  72.                 {
  73.                          IN1=0;//電動(dòng)機(jī)運(yùn)行,后備箱車門打開
  74.                          IN2=1;
  75.                          ENA=1;
  76.                          //lcd1602顯示ON
  77.                          write_com(0x80);
  78.                          write_data('O'); write_data('P');write_data('E');write_data('N');write_data(' ');
  79.                          delayms(5000);//開啟5秒
  80.                          IN1=0;//電動(dòng)機(jī)運(yùn)停止
  81.                          IN2=0;
  82.                          ENA=0;        
  83.                          //lcd1602顯示STOP
  84.                          write_com(0x80);
  85.                          write_data('S'); write_data('T');write_data('O');write_data('P');write_data(' ');
  86.                 }
  87.         }
  88. }
復(fù)制代碼

所有資料51hei提供下載:
后備箱車門控制系統(tǒng).rar (34.22 KB, 下載次數(shù): 43)



作者: 我的抽油機(jī)啊    時(shí)間: 2022-11-26 14:37
這個(gè)紅外檢測(cè)具體是怎么用的呢  檢測(cè)到信號(hào) 然后點(diǎn)擊啟動(dòng)嗎?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1