標(biāo)題: 如何用16進(jìn)制代碼命令控制模塊 [打印本頁(yè)]

作者: wkl123    時(shí)間: 2018-10-28 19:43
標(biāo)題: 如何用16進(jìn)制代碼命令控制模塊
我現(xiàn)在激光測(cè)距模塊里的通訊協(xié)議是通過(guò)16進(jìn)制碼命令控制激光的打開(kāi),但16進(jìn)制代碼怎么輸進(jìn)去呢?#include <reg52.h>
#include"lcd.h"
#define  uchar unsigned char
#define  uint unsigned int
sbit k3=P3^2;         
uint Sysec;
uchar ErrorCode;
uchar stringLenth;//串口收到的字符串長(zhǎng)度,單次測(cè)量收到28字節(jié)  連續(xù)測(cè)量38個(gè)字節(jié)
#define  maxSbufLenth 38  //根據(jù)測(cè)量模式設(shè)置緩存大小
uchar aciiCount; //收到的字符數(shù)計(jì)算
uchar multipleTestShift; //連續(xù)測(cè)量要減去一個(gè)偏移量10字節(jié)
char uartSbuf[11];//第20位是距離的十位數(shù)  21是個(gè)位數(shù),后面是小數(shù)
uchar xdata laserOn[12]      ={"$0003260130&"};          
char xdata singleTest[4]={0x80,0x06,0x02,0x77};
uchar xdata multipleTest[10] ={"$00022426&"};
void Timer0Init(void)                //50毫秒@6.000MHz
{
        AUXR &= 0x7F;                //定時(shí)器時(shí)鐘12T模式
        TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
        TMOD |= 0x01;                //設(shè)置定時(shí)器模式
        TL0 = 0x58;                //設(shè)置定時(shí)初值
        TH0 = 0x9E;                //設(shè)置定時(shí)初值
        TF0 = 0;                //清除TF0標(biāo)志
        //TR0 = 1;                //定時(shí)器0開(kāi)始計(jì)時(shí)
        ET0=0;
        EA=1;
}
void UartInit(void)                //115200bps@11.0592MHz
{
    SCON=0X50;                        //設(shè)置為工作方式1
        TMOD=0X20;                        //設(shè)置計(jì)數(shù)器工作方式2
        PCON=0X00;                        //波特率加倍
        TH1=0XFD;                                //計(jì)數(shù)器初始值設(shè)置,注意波特率是9600的
        TL1=0XFD;
        ES=1;                                                //打開(kāi)接收中斷
        EA=1;                                                //打開(kāi)總中斷
        TR1=1;                                        //打開(kāi)計(jì)數(shù)器

}

/*********** ***發(fā)送字符(ASCII)函數(shù)*** **********/
void sendAscii(char a[4])
{                 int i;
        ES = 0;                  //關(guān)串口中斷
        for (i=0;i<4;i++)
        {
                SBUF = a[i];
                while (TI!=1);   //等待發(fā)送完成
                TI = 0;          //清除發(fā)送中斷標(biāo)志位
        }
        ES = 1;                  //開(kāi)串口中斷
}
void clearUartSbuf()
{
        uchar i;
        for (i=0;i<11;i++)
        {
                uartSbuf[i]=0x00;
        }
}

/*void main()
{
        uchar test;
        UartInit();
        LcdInit();
        sendAscii({0x80,0x06,0x02,0x78});//打開(kāi)激光            
          for(i=0;i<11;i++)
        {
                LcdWriteData(Disp[i]);       
        }

        while(1);                       
                                }
                                */
void uartRec()interrupt 4{
        ES=0;//關(guān)閉中斷

        if (RI)
        {
                RI=0;
                                aciiCount=0;
                uartSbuf[aciiCount]=SBUF;
                aciiCount++;
                if (aciiCount>11) //根據(jù)各個(gè)模式截取合適長(zhǎng)度的字符串
                {
                        aciiCount=0;
                }
        }
        if (TI)
        {
                TI=0;
        }
        ES=1;
}

typedef unsigned int u16;          //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
typedef unsigned char u8;
  u8 Disp[11];
  u16 f  ;   

/*******************************************************************************
* 函 數(shù) 名         : main
* 函數(shù)功能                   : 主函數(shù)
* 輸    入         : 無(wú)
* 輸    出         : 無(wú)
*******************************************************************************/
void main(void)
{
                 u8 i;
        uchar test;
        UartInit();
        LcdInit();                                                  

        sendAscii(singleTest);//打開(kāi)激光            
          for(i=0;i<11;i++)
        {
                LcdWriteData(uartSbuf[i]);       
        }
        while(1);                       
                                                               
}







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