找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

基于51單片機(jī)直流電機(jī)轉(zhuǎn)速測(cè)速系統(tǒng)(PG160128液晶顯示+程序)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:656668 發(fā)表于 2020-3-29 11:45 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
51單片機(jī)直流電機(jī)轉(zhuǎn)速測(cè)速系統(tǒng)PG160128液晶顯示+程序
可實(shí)現(xiàn)轉(zhuǎn)速的控制,測(cè)量,轉(zhuǎn)速的顯示
PROTEUS仿真如下:

#include <showfun.h>
#include <stdio.h>

extern char fnLCMInit(); // LCM 初始化
extern void at(unsigned char x,unsigned char y);/*設(shè)定文本x,y值*/
extern void cls();         // 清屏
extern void charout(unsigned char *str); //ASCII(8*8) 顯示函數(shù)
extern void fnSetPos(unsigned char urow, unsigned char  ucol);        // 設(shè)置當(dāng)前地址
extern uchar dprintf(uchar x,uchar y,char *fmt);// ASCII(8*16) 及 漢字(16*16) 顯示函數(shù)
extern uchar fnPR12(uchar uCmd); // 寫(xiě)無(wú)參數(shù)的指令
extern uchar fnPR13(uchar uData); // 寫(xiě)數(shù)據(jù)
extern unsigned int Adc0832(unsigned char channel);
extern void Line( unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, bit Mode);
extern void Pixel(unsigned char PointX,unsigned char PointY, bit Mode);



uchar dsp[10]={0,0,0,0,0,0,0,0,0,0,};
char abc[3]={0,0,0,};
uchar key=0;
uint a=100;
uchar n=5;
uchar count=1;
uint k1=0;

uchar GeyKey();
void delay(uchar i);
void control();


main()
{  

        fnLCMInit();
        fnSetPos(0,0);
        dprintf(0,0,"直流電機(jī)加-減速及測(cè)速系統(tǒng)");
        dprintf(0,12,"鍵盤(pán)+:步長(zhǎng)加速");
        dprintf(0,24,"鍵盤(pán)-:步長(zhǎng)減速");
        dprintf(0,36,"鍵盤(pán)=:順時(shí)針轉(zhuǎn)");
        dprintf(0,48,"鍵盤(pán)on/c:逆時(shí)針轉(zhuǎn)");

     dprintf(0,72,"方向:");
           dprintf(0,84,"轉(zhuǎn)速:");  

         P1_1=0;
     TMOD=0x15;
         TH1=0x3c;
         TL1=0xb0;
     TH0=0x00;
         TL0=0x00;
         ET0=1;
         ET1=1;
         TR0=1;
         TR1=1;

    while(1)
        {  key=GeyKey();
      switch(key)
       {   case '1': {          a=10;
                                    //sprintf(abc,"%3.2f",a/255.0);
                                        dprintf(0,96,"  5    r/min");   
                                //dprintf(0,96,abc);  
                                dprintf(60,96,"r/min");
                                    break;      }
               case '2': {          a=25;dprintf(0,96,"  25    r/min");    break;      }
                   case '3': {          a=40; dprintf(0,96," 40    r/min");   break;      }
                   case '4': {          a=55; dprintf(0,96," 60    r/min");   break;      }
                   case '5': {          a=70; dprintf(0,96," 80    r/min");   break;      }
                   case '6': {          a=90; dprintf(0,96,"100    r/min");   break;      }
                   case '7': {          a=110; dprintf(0,96,"120    r/min");   break;      }
                   case '8': {          a=130; dprintf(0,96,"135    r/min");   break;      }
                   case '9': {          a=150; dprintf(0,96,"150    r/min");   break;      }
               case '+': {          dprintf(0,72,"方向: 順時(shí)針");
                                    control();
                                                                break;
                                                }
           case '-': {         P1_0=0;
                                        dprintf(0,72,"方向: 逆時(shí)針");
                                         control();
                                        break;
                                        }
           case '=': {P1_0=1;dprintf(0,72,"方向: 順時(shí)針");break;}
           case 'c': {P1_0=0;dprintf(0,72,"方向: 逆時(shí)針");break;}
           case '/': {dprintf(0,72,"方向: 順時(shí)針");
                                    control();}
                   default:  break;
        }
    }
}


uchar GeyKey()
{
        P1_4=0;
        P1_5=1;
        P1_6=1;
        P1_7=1;
        P3_0=1;
        P3_1=1;
        P3_2=1;
    P3_3=1;
        _nop_();_nop_();
        if(!P3_0)return '7';
        if(!P3_1)return '8';
        if(!P3_2)return '9';
    if(!P3_3)return '/';
        P1_4=1;
        P1_5=0;
        P1_6=1;
        P1_7=1;
        _nop_();_nop_();
        if(!P3_0)return '4';
        if(!P3_1)return '5';
        if(!P3_2)return '6';
    if(!P3_3)return '*';

        P1_4=1;
        P1_5=1;
        P1_6=0;
        P1_7=1;
        _nop_();_nop_();
        if(!P3_0)return '1';
        if(!P3_1)return '2';
        if(!P3_2)return '3';
    if(!P3_3)return '-';


        P1_4=1;
        P1_5=1;
        P1_6=1;
        P1_7=0;
        _nop_();_nop_();
        if(!P3_0)return 'c';
        if(!P3_1)return '0';
        if(!P3_2)return '=';
    if(!P3_3)return '+';

        return 0;
}


void delay(uchar i)
{  uchar j,k;
    for(;i>0;i--)
    for(j=15;j>0;j--)
    for(k=11;k>0;k--);
}
       
       
       
void time()interrupt 3
{   
     TR1=0;
     count++;
     k1+=TL0;
         if(count==51)
         {     
              sprintf(dsp,"%3d",k1);
                  dprintf(0,108,dsp);   
          dprintf(60,108,"r/min");   
                  count=1;
          k1=0;
      }
          TH1=0x3c;
          TL1=0xb0;
          TH0=0x00;
          TL0=0x00;
          TR1=1;

}

void control()
{                           
       EA=1;
           while(1)
           {    if(a>=150)
               a=150;
                        if(a<=10)
                            a=10;
                         P1_1=0;
                         delay(160-a);
                         P1_1=1;
                         delay(a);
                         key=GeyKey();
                         if(key=='-') a-=n;
                         else
                           if(key=='+') a+=n;
                         else
                           if(key=='=')
                           {  P1_0=1;
                                   dprintf(0,72,"方向: 順時(shí)針");
                         }
                         else
                         if(key=='c')
                         {  P1_0=0;
                           dprintf(0,72,"方向: 逆時(shí)針");
                         }
                         else  
                          if(key=='*')
                          {   P1_1=0;
                              break;
                          }
                          else
                         if(key!=0)
                           break;
                         }
                 EA=0;
}
直流電機(jī)測(cè)速+中文液晶顯示.zip (104.74 KB, 下載次數(shù): 125)






評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:601639 發(fā)表于 2020-9-10 10:23 | 只看該作者
很好,下下來(lái)直接就能用,做的不錯(cuò)。
沒(méi)有缺頭文件的可以在51hei下載:http://www.torrancerestoration.com/bbs/dpj-55046-1.html
回復(fù)

使用道具 舉報(bào)

板凳
ID:316613 發(fā)表于 2020-9-16 17:22 | 只看該作者
程序不行,只有自帶的HEZ能用,
回復(fù)

使用道具 舉報(bào)

地板
ID:1083585 發(fā)表于 2023-7-1 15:20 | 只看該作者
very good謝謝大佬
回復(fù)

使用道具 舉報(bào)

5#
ID:1111120 發(fā)表于 2024-4-15 16:57 | 只看該作者
程序不行,只有自帶的HEx能用,.h文件沒(méi)有
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表