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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

小程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:225553 發表于 2017-8-7 20:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
//  GY-25
//  使用單片機:STC89C52
//  晶振:  11.0592 M
//  液晶屏:LCD1602
//  波特率:9600
#include<REG52.H>
#include<math.h>       //Keil library  
#include<stdio.h>      //Keil library
#include<INTRINS.H>
#define uchar unsigned char
#define uint  unsigned int
//****************電機定義部分******************
sbit IN1=P1^0;//左電機紅線
sbit IN2=P1^1;//左電機藍線
sbit ENA=P1^2;//左電機使能端
sbit wela=P2^7;
sbit dula=P2^6;
sbit lcden=P3^4;
sbit lcdrs=P3^5;
//********定義變量*****************************
uchar   BUF[10];          //數據緩存區
uchar   cnt=0;           //接收數據的累計值
uchar   sign=0;
int YPR[3];
float a;
float yuzhi0=0.0;
float yuzhi1=45.0;
float yuzhi2=90.0;
float yuzhi3=135.0;
float yuzhi4=180.0;
uchar s[18];
//*********************************************
//串口中斷
void serial_serve(void) interrupt 4
{
  if(RI==1){         //中斷標志
     RI=0;
    BUF[cnt]=SBUF;
   cnt++;        //接收計數
    if(cnt==8)                //
    {   
       cnt=0;                 //
       sign=1;
    }
  }

}
//*********************************************
//串口初始化
//9600 bps @ 11.059 MHz
void init_uart()
{
TMOD=0x21;   
TH1=0xfd;   
TL1=0xfd;   
SCON=0x50;
PS=1;      //串口中斷設為高優先級別
TR0=1;    //啟動定時器   
TR1=1;
ET0=1;     //打開定時器0中斷   
ES=1;
// EA=1;
}
//**********延時函數***************
void delay(uint z)//z毫秒延時函數
{
     uint x,y;
     for(x=z;x>0;x--)
       for(y=110;y>0;y--);
}
//寫指令
void writecom(uchar com)
{
        lcdrs=0;
        P0=com;
        delay(1);
        lcden=1;
        delay(1);
        lcden=0;
}
//寫數據
void writedata(uchar date)
{
        lcdrs=1;//高電平
        P0=date;
        delay(1);
        lcden=1;
        delay(1);
        lcden=0;
}
//1602液晶初始化
void init()
{
    dula=0;
    wela=0;
    lcden=0;
    writecom(0x38);
    writecom(0x0c);
    writecom(0x06);
    writecom(0x01);
}                  
//*********串口數據發送******************
void  SeriPushSend(uchar send_data)
{
    SBUF=send_data;  
while(!TI);TI=0;
}
//*************************************
void dis_play(int num)
{
if(num<0)
{
  num=-num;
  SeriPushSend('-');
}
else
  SeriPushSend('+');
SeriPushSend(0x30|(num/10000));
SeriPushSend(0x30|(num%10000/1000));
SeriPushSend(0x30|(num%1000/100));
SeriPushSend(0x2e);
SeriPushSend(0x30|(num%100/10));
SeriPushSend(0x30|(num%10));
SeriPushSend(',');
}
void dispose(float jiaodu)
{
   
           if((abs(jiaodu)>yuzhi0)&&(abs(jiaodu)<yuzhi1))
                {
                 IN1=1;IN2=0;
                 ENA=0;
                 delay(1);
                 ENA=1;
                 delay(90);
                }
               
           if((abs(jiaodu)>yuzhi1)&&(abs(jiaodu)<yuzhi2))
                {
                 IN1=0;IN2=1;
                 ENA=0;
                 delay(35);
                 ENA=1;
                 delay(55);
                }
               
           if((abs(jiaodu)>yuzhi2)&&(abs(jiaodu)<yuzhi3))
                {
                 IN1=1;IN2=0;
                 ENA=0;
                 delay(55);
                 ENA=1;
                 delay(35);
                }
                 
           if((abs(jiaodu)>yuzhi3)&&(abs(jiaodu)<yuzhi4))
                {
                 IN1=0;IN2=1;
                 ENA=0;
                 delay(90);
                 ENA=1;
                 delay(0);
                }      
}
void display()
{
   if(sign)
         {
          sign=0;
          if(BUF[0]==0XAA&&BUF[7]==0X55)
         {                         //幀頭判斷        
          YPR[0]=(BUF[1]<<8|BUF[2]);  
          YPR[1]=(BUF[3]<<8|BUF[4]);
          YPR[2]=(BUF[5]<<8|BUF[6]);
     
      SeriPushSend('#');
      SeriPushSend('Y');
      SeriPushSend('P');
      SeriPushSend('R');
      SeriPushSend('=');   
      dis_play(YPR[0]);
                     dis_play(YPR[1]);
      dis_play(YPR[2]);                           
      SeriPushSend(0X0d);
      SeriPushSend(0X0a);
           
        }  
   }  
   else
    {
       SeriPushSend('N');
    }
}
void yejing(int num,int num1,int num2)
{
         uchar i;
        
         if(num<0)
          {
              num=-num;
              s[0]=0x30+(num/10000);
              s[1]=0x30+(num%10000/1000);
              s[2]=0x30+(num%1000/100);
              s[3]=0x30+(num%100/10);
              s[4]=0x30+(num%10);
              writecom(0x80);
              writedata('-');
              for(i=0;i<=2;i++)
               {
                 writedata(s[i]);
            
               }
              writedata('.');
              for(i=3;i<=4;i++)
               {
                 writedata(s[i]);
               }
          }
         else
          {
              s[0]=0x30+(num/10000);
              s[1]=0x30+(num%10000/1000);
              s[2]=0x30+(num%1000/100);
              s[3]=0x30+(num%100/10);
              s[4]=0x30+(num%10);
              writecom(0x80);
              writedata('+');
              for(i=0;i<=2;i++)
               {
                 writedata(s[i]);
               }
              writedata('.');
              for(i=3;i<=4;i++)
               {
                 writedata(s[i]);
               }
              
          }   
         if(num1<0)
          {
              num1=-num1;
              s[5]=0x30+(num1/10000);
              s[6]=0x30+(num1%10000/1000);
              s[7]=0x30+(num1%1000/100);
              s[8]=0x30+(num1%100/10);
              s[9]=0x30+(num1%10);
              writecom(0x88);
              writedata('-');
              for(i=5;i<=7;i++)
               {
                 writedata(s[i]);
            
               }
              writedata('.');
              for(i=8;i<=9;i++)
               {
                 writedata(s[i]);
               }
          }
         else
          {
              s[5]=0x30+(num1/10000);
              s[6]=0x30+(num1%10000/1000);
              s[7]=0x30+(num1%1000/100);
              s[8]=0x30+(num1%100/10);
              s[9]=0x30+(num1%10);
              writecom(0x88);
              writedata('+');
              for(i=5;i<=7;i++)
               {
                 writedata(s[i]);
            
               }
              writedata('.');
              for(i=8;i<=9;i++)
               {
                 writedata(s[i]);
               }
           }
         if(num2<0)
          {
              num2=-num2;
              s[10]=0x30+(num2/10000);
              s[11]=0x30+(num2%10000/1000);
              s[12]=0x30+(num2%1000/100);
              s[13]=0x30+(num2%100/10);
              s[14]=0x30+(num2%10);
              writecom(0x80+0x40);
              writedata('-');
              for(i=10;i<=12;i++)
               {
                 writedata(s[i]);
            
               }
              writedata('.');
              for(i=13;i<=14;i++)
               {
                 writedata(s[i]);
               }
          }
         else
          {
              s[10]=0x30+(num2/10000);
              s[11]=0x30+(num2%10000/1000);
              s[12]=0x30+(num2%1000/100);
              s[13]=0x30+(num2%100/10);
              s[14]=0x30+(num2%10);
              writecom(0x80+0x40);
              writedata('+');
              for(i=10;i<=12;i++)
               {
                 writedata(s[i]);
            
               }
              writedata('.');
              for(i=13;i<=14;i++)
               {
                 writedata(s[i]);
               }
              
          }                          
}
//主程序
void main()
{   
   init_uart();
   init();                                              //初始化串口
   EA=1;                                                      //開總中斷
   cnt=0;
   SeriPushSend(0XA5);
   SeriPushSend(0X52);                                        //發送1幀讀取命令,連續讀取
   while(1)
     {  
                      ENA=0;
                      display();
                      a=(YPR[2]/100.0);  
                      dispose(a);
                      yejing(YPR[0],YPR[1],YPR[2]);              
   }                                                           //end while
}

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表