久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

本來是單片機(jī)usb串口通訊,現(xiàn)在想變成藍(lán)牙串口通訊,求幫助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:730545 發(fā)表于 2020-4-30 18:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
以下是主程序


#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;   
}


以下是網(wǎng)上找的又經(jīng)過自己亂改的藍(lán)牙程序
void        sendDate(uchar dat);

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

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

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

    while(1);
}

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

    //收到的數(shù)據(jù)是date
        
}


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

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

使用道具 舉報

沙發(fā)
ID:648281 發(fā)表于 2020-4-30 23:12 | 只看該作者
你好!
藍(lán)牙功能,需要增加藍(lán)牙硬件;
然后再就是編寫藍(lán)牙接收程序。
回復(fù)

使用道具 舉報

板凳
ID:452950 發(fā)表于 2020-5-1 10:40 | 只看該作者
改成藍(lán)牙串口透傳不需要修改原來的串口程序,可通過usb轉(zhuǎn)串口模塊連接藍(lán)牙模塊和電腦,通過串口助手發(fā)送AT指令修改藍(lán)牙模塊的參數(shù),如波特率、工作方式、模塊名稱等,波特率要與單片機(jī)一致。
然后將藍(lán)牙模塊接到單片機(jī)的串口上,電腦藍(lán)牙與藍(lán)牙模塊配對后就可以在串口助手上搜索到藍(lán)牙虛擬串口,連接后便可以進(jìn)行串口通訊。
如果是兩個單片機(jī)進(jìn)行串口通訊,需要一個藍(lán)牙模塊設(shè)置為主機(jī)模式、一個藍(lán)牙模塊從機(jī)模式。
支持主從兩種模式的藍(lán)牙模塊會稍微貴一點(diǎn)。如果是單片機(jī)連電腦可以買只支持從機(jī)模式的JDY-31,大概五塊多。
還有藍(lán)牙3.0(SPP)和4.0(BLE)的區(qū)別,如果單片機(jī)連安卓手機(jī)的話用藍(lán)牙3.0就好,安卓4.3以后的版本也支持藍(lán)牙4.0。蘋果手機(jī)只有藍(lán)牙4.0才能正常串口通信。有的藍(lán)牙模塊是雙模的,支持兩種方式。
回復(fù)

使用道具 舉報

地板
ID:730545 發(fā)表于 2020-5-5 13:31 | 只看該作者
xxpp2011 發(fā)表于 2020-5-1 10:40
改成藍(lán)牙串口透傳不需要修改原來的串口程序,可通過usb轉(zhuǎn)串口模塊連接藍(lán)牙模塊和電腦,通過串口助手發(fā)送AT ...

你好,我是想用藍(lán)牙當(dāng)作串口,與手機(jī)app進(jìn)行通訊,是不需要連接電腦的那一種
回復(fù)

使用道具 舉報

5#
ID:730545 發(fā)表于 2020-5-5 13:32 | 只看該作者
51hei**1140 發(fā)表于 2020-4-30 23:12
你好!
藍(lán)牙功能,需要增加藍(lán)牙硬件;
然后再就是編寫藍(lán)牙接收程序。

你好,藍(lán)牙我用的是HC—05,我是想用藍(lán)牙當(dāng)作串口,與手機(jī)app進(jìn)行通訊,是不需要連接電腦的那一種。但是現(xiàn)在藍(lán)牙的程序我不會編寫,就放在上邊,可以幫我看一下并更正一下嗎?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品亚洲91 | 欧美日韩1区2区 | 91视频国产精品 | 日韩伦理一区二区 | 青青草av在线播放 | 亚洲福利视频一区二区 | 成人午夜在线观看 | 成年人网站免费视频 | 一区二区三区中文 | 欧美电影免费观看高清 | 亚洲区视频 | 午夜影院| 国产欧美精品一区二区三区 | 久久久这里只有17精品 | 福利视频一区 | 久久国产成人 | 欧美日韩一区二区视频在线观看 | 婷婷丁香激情 | 精品一区二区三区免费视频 | 国产精品1区 | 久久精品中文 | 精品三区| 天天看天天操 | 欧美亚洲国语精品一区二区 | 欧美激情亚洲激情 | 欧美色a v| 欧美成人精品一区二区男人看 | 久久久久电影 | 精品国产乱码久久久久久久久 | 三级欧美 | 色爱综合网 | 国产精品久久久久久久粉嫩 | 精品欧美乱码久久久久久1区2区 | 91精品国产91久久综合桃花 | 一级特黄色毛片 | 五月综合激情网 | 成人在线免费电影 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 欧美一区免费在线观看 | 91精品国产综合久久久久久丝袜 | 最新中文字幕 |