欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 無(wú)刷電機(jī)霍爾匹配小工具制作(適用電機(jī)控制器霍爾120度)附單片機(jī)源碼與電路 [打印本頁(yè)]

作者: jxrjamu    時(shí)間: 2018-10-11 19:26
標(biāo)題: 無(wú)刷電機(jī)霍爾匹配小工具制作(適用電機(jī)控制器霍爾120度)附單片機(jī)源碼與電路
玩過(guò)無(wú)刷電機(jī)的和電動(dòng)車維修的人經(jīng)常碰到電機(jī)霍爾和控制器不匹配的問(wèn)題。主控是AT89c2051以前51單片機(jī)入門的時(shí)候買的扔了可惜所以拿來(lái)用了當(dāng)然使用現(xiàn)在市面上的51單片機(jī)都可以 顯示是12864液晶屏串行驅(qū)動(dòng),  按鍵就3個(gè), 第一個(gè)是復(fù)位  第2個(gè)是匹配方式加  第3個(gè)是匹配方式減
總共6種接法。編程水平入門級(jí) 大神看了程序不要取笑。

廢話少說(shuō)直接上制作出來(lái)的實(shí)物圖



Altium Designer畫的原理圖如下:(51hei附件中可下載工程文件)


單片機(jī)源程序如下:
  1. /* 液晶模塊型號(hào):JLX12864C-1
  2.    接口方式:串行
  3.    液晶模塊驅(qū)動(dòng)IC是:ST7920(或兼容的IC),
  4. */
  5. #include <reg51.h>
  6. sbit sid=P3^2;        //R/W
  7. sbit sclk=P3^3; //E

  8. sbit k1=P3^5;
  9. sbit k2=P3^4;

  10. sbit Q1=P3^7;
  11. #define  uchar unsigned char
  12. #define uint unsigned int

  13. uchar a=1;
  14. bit b=1;
  15. /*=============延時(shí)=====================*/
  16. void delay(int i)               
  17. {
  18. int j,k;
  19. for(j=0;j<i;j++)
  20. for(k=0;k<110;k++);
  21. }

  22. //=============transfer command to LCM===============
  23. void transfer_command(int data1)   //傳輸命令到LCM
  24. {
  25.         int i;

  26.         for(i=0;i<5;i++)
  27.         {
  28.                 sid=1;
  29.                 sclk=0;               
  30.                 sclk=1;               
  31.         }
  32.         sid=0;               
  33.         sclk=0;       
  34.         sclk=1;               
  35.         sid=0;       
  36.         sclk=0;       
  37.         sclk=1;               
  38.         sid=0;
  39.         sclk=0;               
  40.         sclk=1;               
  41.         for(i=0;i<4;i++)
  42.         {
  43.        
  44.                 if(data1&0x80) sid=1;
  45.                 else sid=0;
  46.                 sclk=0;       
  47.                 sclk=1;       
  48.                  data1=data1<<=1;
  49.          }
  50.          
  51.         for(i=0;i<4;i++)
  52.         {
  53.                 sid=0;
  54.                 sclk=0;               
  55.                 sclk=1;       
  56.         }       
  57.         for(i=0;i<4;i++)
  58.         {
  59.        
  60.                 if(data1&0x80) sid=1;
  61.                 else sid=0;
  62.                 sclk=0;               
  63.                 sclk=1;       
  64.                  data1=data1<<=1;
  65.          }
  66.          
  67.         for(i=0;i<4;i++)
  68.         {
  69.                 sid=0;
  70.                 sclk=0;               
  71.                 sclk=1;               
  72.         }       

  73. }

  74. //-----------transfer data to LCM---------------
  75. void transfer_data(int data1)//將數(shù)據(jù)傳輸?shù)絃CM
  76. {
  77.         int i;
  78.         for(i=0;i<5;i++)                        /*SID=1,5個(gè)脈沖,同步信號(hào)串*/
  79.         {
  80.                 sid=1;
  81.                 sclk=0;               
  82.                 sclk=1;
  83.         }
  84.         sid=0;                                                /*這一位為R/W設(shè)置,R/W=0表示寫*/
  85.         sclk=0;
  86.         sclk=1;
  87.         sid=1;                                                /*這一位為RS設(shè)置,RS=1表示數(shù)據(jù)寄存器*/
  88.         sclk=0;
  89.         sclk=1;
  90.         sid=0;
  91.         sclk=0;
  92.         sclk=1;       
  93.         for(i=0;i<4;i++)                        /*傳數(shù)據(jù)的高4位*/
  94.         {
  95.        
  96.                 if(data1&0x80) sid=1;
  97.                 else sid=0;
  98.                 sclk=0;
  99.                 sclk=1;
  100.                  data1=data1<<=1;
  101.          }
  102.          
  103.         for(i=0;i<4;i++)                        /*SID=0,過(guò)4個(gè)脈沖*/
  104.         {
  105.                 sid=0;
  106.                 sclk=0;
  107.                 sclk=1;
  108.         }       
  109.         for(i=0;i<4;i++)                        /*傳數(shù)據(jù)的低4位*/
  110.         {
  111.        
  112.                 if(data1&0x80) sid=1;
  113.                 else sid=0;
  114.                 sclk=0;
  115.                 sclk=1;
  116.                  data1=data1<<=1;
  117.          }
  118.          
  119.         for(i=0;i<4;i++)                        /*SID=0,過(guò)4個(gè)脈沖*/
  120.         {
  121.                 sid=0;
  122.                 sclk=0;
  123.                 sclk=1;
  124.         }       
  125.                        
  126. }

  127. void clear_ddram()
  128. {
  129.         transfer_command(0x30);
  130.         transfer_command(0x01);
  131.         delay(5);
  132. }

  133. /*初始化*/
  134. void Initial_ic()
  135. {
  136.     delay(100);   
  137.         transfer_command(0x30);        /*選用基本指令集*/
  138.         delay(10);
  139.         transfer_command(0x01);     /*清屏*/
  140.         delay(10);
  141.         transfer_command(0x06);        //
  142.         delay(10);
  143. //        transfer_command(0x1c);        //光標(biāo)右移
  144.         transfer_command(0x0c);/*開(kāi)顯示,關(guān)光標(biāo)*/
  145.         delay(10);
  146. }

  147. /*調(diào)用中文字庫(kù)里的漢字*/
  148. void display_char(int y,int x,int char_length,uchar *p)
  149. {
  150.         uchar i=0;
  151.         transfer_command(0x30);        /*選用基本指令集*/
  152.         delay(2);
  153.         //transfer_command(0x01);     /*清屏*/
  154.         delay(2);
  155.         if(y<3)
  156.         {
  157.                 transfer_command(0x80+(y-1)*(0x10)+(x-1));
  158.         }
  159.         else
  160.         {
  161.                 transfer_command(0x80+(y-3)*(0x10)+(x+7));
  162.         }
  163.         for(i=0;i<char_length;i++)
  164.         {
  165.                 transfer_data(*p);
  166.                 p++;
  167.                 transfer_data(*p);/*  以上兩行數(shù)據(jù)合起來(lái)顯示一個(gè)漢字*/
  168.                 p++;
  169.         }
  170. }

  171. //單行反顯
  172. /*void OneLine_reverse(int y)
  173. {
  174.         if(y>0&&y<3)
  175.         {
  176.                 transfer_command(0x34);       
  177.                 delay(10);
  178.                 transfer_command(0x04+y-1);
  179.                 delay(10);
  180.         }

  181.         else
  182.         {
  183.                 y-=2;
  184.                 transfer_command(0x34);       
  185.                 delay(10);
  186.                 transfer_command(0x04+y-1);
  187.                 delay(10);
  188.         }       
  189. }*/





  190. /*主程序*/
  191. void main(void)
  192. {
  193.                  clear_ddram();
  194.                  Initial_ic();                                        /*初始化*/
  195.                          display_char(1,1,8,"無(wú)刷電機(jī)霍爾配對(duì)");  /*(在第1行,第1列,8個(gè)漢字)調(diào)用顯示漢字子程序*/         
  196. //黃對(duì)黃  綠對(duì)綠 藍(lán)對(duì)藍(lán)        1
  197. //黃對(duì)黃  綠對(duì)藍(lán) 藍(lán)對(duì)綠 2
  198.          
  199. //黃對(duì)綠  綠對(duì)黃 藍(lán)對(duì)藍(lán) 3
  200. //黃對(duì)綠  綠對(duì)藍(lán) 藍(lán)對(duì)黃 4
  201.          
  202. //黃對(duì)藍(lán)  綠對(duì)綠 藍(lán)對(duì)黃 5
  203. //黃對(duì)藍(lán)  綠對(duì)黃 藍(lán)對(duì)綠 6

  204.         while(1)
  205.         {       
  206.         if(k1==0)
  207.                         delay(150);                 //消抖
  208. {
  209. if(k1==0)
  210. {
  211. while(!k1);
  212. a++;b=1;if(a>=6)a=6;
  213. }       
  214. }                       
  215.         if(k2==0)
  216.                        
  217. {
  218. if(k2==0)
  219. {
  220.         delay(150);                 //消抖
  221. while(!k2);
  222. a--;b=1;if(a<=1)a=1;       

  223. }
  224. }
  225. switch(a)
  226. {
  227.         case(1):if(b==1)
  228.         {P1=0XFC;
  229. //                         display_char(1,1,8,"無(wú)刷電機(jī)霍爾配對(duì)");  /*(在第1行,第1列,8個(gè)漢字)調(diào)用顯示漢字子程序*/
  230.                          display_char(2,1,8,"黃對(duì)黃    綠對(duì)綠");  /*(在第2行,第1列,8個(gè)漢字)調(diào)用顯示漢字子程序*/       
  231.                          display_char(3,1,8,"藍(lán)對(duì)藍(lán)          ");
  232.                          display_char(4,1,8,"匹配方式1       ");        b=0;       
  233.         }
  234.                 break;
  235.        
  236.         case(2):if(b==1)
  237.         {P1=0XE4;
  238.         //                 display_char(1,1,8,"無(wú)刷電機(jī)霍爾配對(duì)");  /*(在第1行,第1列,8個(gè)漢字)調(diào)用顯示漢字子程序*/
  239.                          display_char(2,1,8,"黃對(duì)黃    綠對(duì)藍(lán)");  /*(在第2行,第1列,8個(gè)漢字)調(diào)用顯示漢字子程序*/       
  240.                          display_char(3,1,8,"藍(lán)對(duì)綠          ");
  241.                          display_char(4,1,8,"匹配方式2       ");        b=0;       
  242.         }
  243.                 break;
  244.        
  245.         case(3):if(b==1)
  246.         {P1=0X9C;
  247.          //                display_char(1,1,8,"無(wú)刷電機(jī)霍爾配對(duì)");  /*(在第1行,第1列,8個(gè)漢字)調(diào)用顯示漢字子程序*/
  248.                          display_char(2,1,8,"黃對(duì)綠    綠對(duì)黃");  /*(在第2行,第1列,8個(gè)漢字)調(diào)用顯示漢字子程序*/       
  249.                          display_char(3,1,8,"藍(lán)對(duì)藍(lán)          ");
  250.                          display_char(4,1,8,"匹配方式3       ");        b=0;       
  251.         }
  252.                 break;
  253.        
  254.         case(4):if(b==1)
  255.         {P1=0XA8;
  256.         //                 display_char(1,1,8,"無(wú)刷電機(jī)霍爾配對(duì)");  /*(在第1行,第1列,8個(gè)漢字)調(diào)用顯示漢字子程序*/
  257.                          display_char(2,1,8,"黃對(duì)綠    綠對(duì)藍(lán)");  /*(在第2行,第1列,8個(gè)漢字)調(diào)用顯示漢字子程序*/       
  258.                          display_char(3,1,8,"藍(lán)對(duì)黃          ");
  259.                          display_char(4,1,8,"匹配方式4       ");        b=0;       
  260.         }
  261.                 break;
  262.        
  263.         case(5):if(b==1)
  264.         {P1=0X78;
  265.         //                 display_char(1,1,8,"無(wú)刷電機(jī)霍爾配對(duì)");  /*(在第1行,第1列,8個(gè)漢字)調(diào)用顯示漢字子程序*/
  266.                          display_char(2,1,8,"黃對(duì)藍(lán)    綠對(duì)綠");  /*(在第2行,第1列,8個(gè)漢字)調(diào)用顯示漢字子程序*/       
  267.                          display_char(3,1,8,"藍(lán)對(duì)黃          ");
  268.                          display_char(4,1,8,"匹配方式5       ");        b=0;       
  269.         }
  270.                 break;
  271.        
  272.         case(6):if(b==1)
  273.         {P1=0X54;
  274.         //                 display_char(1,1,8,"無(wú)刷電機(jī)霍爾配對(duì)");  /*(在第1行,第1列,8個(gè)漢字)調(diào)用顯示漢字子程序*/
  275.                          display_char(2,1,8,"黃對(duì)藍(lán)    綠對(duì)黃");  /*(在第2行,第1列,8個(gè)漢字)調(diào)用顯示漢字子程序*/       
  276.                          display_char(3,1,8,"藍(lán)對(duì)綠          ");
  277.                          display_char(4,1,8,"匹配方式6       ");        b=0;       
  278.         }
  279.                 break;
  280. }       

  281.         }
  282. }
復(fù)制代碼

所有資料51hei提供下載:
AT89C2051-12864-霍爾匹配程序.rar (136.02 KB, 下載次數(shù): 32)



作者: cccc888    時(shí)間: 2018-10-11 22:56
只是提示.沒(méi)測(cè)試功能.
作者: dfgddfg    時(shí)間: 2018-10-12 08:47
拿來(lái)用了當(dāng)然使用現(xiàn)在市面上的51單片機(jī)都可以 顯示是12864液晶屏串行驅(qū)動(dòng),  按鍵就3個(gè), 第一個(gè)是復(fù)位  第2個(gè)是匹配方式加  第3個(gè)是匹配方式減
總共6種接法。編程水平入門級(jí) 大神看了




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