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

標題: 本來是單片機usb串口通訊,現在想變成藍牙串口通訊,求幫助 [打印本頁]

作者: aspen大花    時間: 2020-4-30 18:31
標題: 本來是單片機usb串口通訊,現在想變成藍牙串口通訊,求幫助
以下是主程序


#include <stc12c5a60s2.h>
#include <lcd.h>
#include <intrins.h>
#include <BT.h>
#define        uchar        unsigned char
#define uint        unsigned int
        
#define MAIN_Fosc                11059200L
//                                                                7       6      5       4         3      2    1    0   Reset Value
//sfr ADC_CONTR = 0xBC;                ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0 0000,0000      
#define ADC_OFF()        ADC_CONTR = 0
#define ADC_ON                (1 << 7)
#define ADC_90T                (3 << 5)
#define ADC_180T        (2 << 5)
#define ADC_360T        (1 << 5)
#define ADC_540T        0
#define ADC_FLAG        (1 << 4)  
#define ADC_START        (1 << 3)  
#define ADC_CH0                0
#define ADC_CH1                1
#define ADC_CH2                2
#define ADC_CH3                3
#define ADC_CH4                4
#define ADC_CH5                5
#define ADC_CH6                6
#define ADC_CH7                7
sbit        P_TXD1 = P3^1;
sbit k1 = P2^0;
sbit k2 = P2^1;
sbit buzzer = P3^7;

int wind_set = 50;
float wind_speed = 0.0;
float wind_ppm = 0.0;
void wind_Value_Conversion();

void        Tx1Send(uchar dat);


void StartUART( void )
{                     
     SCON = 0x50;
     TMOD = 0x20;
     TH1 = 0xFD;
     TL1 = 0xFD;
     PCON = 0x00;
     TR1 = 1;
}

uint        adc10_start(uchar channel)        //channel = 0~7
{
        uint        adc;
        uchar        i;

        ADC_RES = 0;
        ADC_RESL = 0;

        ADC_CONTR = (ADC_CONTR & 0xe0) | ADC_START | channel;

        i = 250;
        do{
                if(ADC_CONTR & ADC_FLAG)
                {
                        ADC_CONTR &= ~ADC_FLAG;
                        adc = (uint)ADC_RES;
                        adc = (adc << 2) | (ADC_RESL & 3);
                        return        adc;
                }
        }while(--i);
        return        1024;
}


//Ñóê±oˉêy//
void Delay1(unsigned int time)
{
    unsigned int timeCounter = 0;
        for (timeCounter = time;timeCounter > 0 ;timeCounter --)
                DelayUs(255);
}

void DelayUs(unsigned int time)
{
        unsigned int timeCounter = 0;
        for (timeCounter = 0;timeCounter < time;timeCounter ++)
                _nop_();
}

void press_k1()
{
        if(k1 == 0)
        {
                Delay1(100);
                if(k1 == 0)
                {
                        wind_set += 1;
                        if(wind_set>999)
                        {
                                wind_set = 0;
                        }
                }
        }
}
void press_k2()
{
        if(k2 == 0)
        {
                Delay1(100);
                if(k2 == 0)
                {
                        wind_set -= 1;
                        if(wind_set<0)
                        {
                                wind_set = 999;
                        }
                }
        }
}

void display_set()                //°′¼üéèÖÃÏÔê¾
{
        uchar num1, num2, num3;
        num1 = wind_set/100+'0';
        num2 = wind_set%100/10+'0';
        num3 = wind_set%10+'0';
        DisplaySingleChar(0x04,1,num1);        
        DisplaySingleChar(0x05,1,num2);        
        DisplaySingleChar(0x06,1,num3);
        DisplayString(0x7,1,"km/h");               
}


void main()
{
        StartUART();        
        P1ASF = 0x07;         
        ADC_CONTR = ADC_360T | ADC_ON;
        LCDInit();   
        DisplayString(0x0,0,"  Welcome...  ");
        DisplayString(0x0,1,"Wind Speed");
        Delay1(500);
        WriteCmd(LCD_CLS);
        DisplayString(0x0,0,"Speed:");
        DisplayString(0x0,1,"Set:");        
        while(1)
        {
                        press_k1();
                        press_k2();
                        wind_speed = adc10_start(0);                                
                        wind_Value_Conversion();               
                        display_set();
                        if(wind_ppm>=wind_set)
                        {
                                buzzer = 0;
                        }
                        else
                        {
                                buzzer = 1;
                        }
        }
}

void wind_Value_Conversion()        //·çËù2aá¿
{
          uchar num1, num2, num3;
                wind_speed=(wind_speed*5)/1024;           
          wind_ppm = 100*wind_speed ;   


                num1 = (int)(wind_ppm)/100;   
                num2 = (int)(wind_ppm)/10;
                num3 = (int)(wind_ppm)%10;
          DisplaySingleChar(0x06,0,num1+0x30);        
          DisplaySingleChar(0x07,0,num2+0x30);        
          DisplaySingleChar(0x08,0,num3+0x30);
          DisplayString(0x9,0,"km/h");
                Tx1Send(0x23);        
                Tx1Send(num1+0x30);
                Tx1Send(num2+0x30);        
                Tx1Send(num3+0x30);        
}

//Ä£Äa′®¿ú·¢Ëí
void        Tx1Send(uchar R_Byte)                //9600£¬N£¬8£¬1                ·¢Ëíò»¸ö×Ö½ú
{
         SBUF = R_Byte;  
     while( TI == 0 );                                //2éÑˉ·¨
           TI = 0;   
}


以下是網上找的又經過自己亂改的藍牙程序
void        sendDate(uchar dat);

void UartConfiguration()  
{
    TMOD=0x20;      //設置計數器1的工作方式2
    TH1=0xfd;            //設置計數器1的初值,決定波特率
    TL1=0xfd;                //設置計數器1的初值,決定波特率
    PCON=0x00;      // 波特率倍增0x00不加倍         0x80加倍
    SCON=0x50;                //設置工作方式1 開啟接受允許
    EA=1;                    //開啟總中斷
    ES=1;                        //開啟串口接受中斷
    TR1=1;                        //計數器1開始運行
}
/*發送數據*/
void sendDate(char date)
{
    SBUF=date;                  //接收到的數據放入發送緩存器發送
    while(!TI);       //等待發送數據完成
    TI=0;                          //清除發送完成標志位
}

/*主函數*/
void main()
{
    UartConfiguration();

    sendDate('1');  //發送字符1

    while(1);
}

/*中斷函數*/
void Uart() interrupt 4
{
    uchar date;
    date=SBUF;        //取出接受到的數據
    RI=0;                          //清除接受中斷標志位

    //收到的數據是date
        
}


說實話我真是很菜,求大家高抬貴手,不要噴我,謝謝大家~


作者: 51hei**1140    時間: 2020-4-30 23:12
你好!
藍牙功能,需要增加藍牙硬件;
然后再就是編寫藍牙接收程序。
作者: xxpp2011    時間: 2020-5-1 10:40
改成藍牙串口透傳不需要修改原來的串口程序,可通過usb轉串口模塊連接藍牙模塊和電腦,通過串口助手發送AT指令修改藍牙模塊的參數,如波特率、工作方式、模塊名稱等,波特率要與單片機一致。
然后將藍牙模塊接到單片機的串口上,電腦藍牙與藍牙模塊配對后就可以在串口助手上搜索到藍牙虛擬串口,連接后便可以進行串口通訊。
如果是兩個單片機進行串口通訊,需要一個藍牙模塊設置為主機模式、一個藍牙模塊從機模式。
支持主從兩種模式的藍牙模塊會稍微貴一點。如果是單片機連電腦可以買只支持從機模式的JDY-31,大概五塊多。
還有藍牙3.0(SPP)和4.0(BLE)的區別,如果單片機連安卓手機的話用藍牙3.0就好,安卓4.3以后的版本也支持藍牙4.0。蘋果手機只有藍牙4.0才能正常串口通信。有的藍牙模塊是雙模的,支持兩種方式。
作者: aspen大花    時間: 2020-5-5 13:31
xxpp2011 發表于 2020-5-1 10:40
改成藍牙串口透傳不需要修改原來的串口程序,可通過usb轉串口模塊連接藍牙模塊和電腦,通過串口助手發送AT ...

你好,我是想用藍牙當作串口,與手機app進行通訊,是不需要連接電腦的那一種
作者: aspen大花    時間: 2020-5-5 13:32
51hei**1140 發表于 2020-4-30 23:12
你好!
藍牙功能,需要增加藍牙硬件;
然后再就是編寫藍牙接收程序。

你好,藍牙我用的是HC—05,我是想用藍牙當作串口,與手機app進行通訊,是不需要連接電腦的那一種。但是現在藍牙的程序我不會編寫,就放在上邊,可以幫我看一下并更正一下嗎?




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