【问题标题】:Blueooth HC06 Interfacing with PIC18F蓝牙 HC 06 与 PIC18F 接口
【发布时间】:2017-12-17 09:46:39
【问题描述】:

我目前正在学习 PIC。我正在使用 PIC18F46K22。我想使用蓝牙 HC06 模块从手机向 PIC 发送命令。在 Arduino 上,一切正常。但是,当我切换到 PIC 时,它不起作用。它正在连接,但 Rx 和 Tx 不执行。与 arduino 代码比较后,我看到的唯一问题是蓝牙初始化。我已将蓝牙的 Tx 和 Rx 引脚分别连接到 PIC 的 Rx 和 Tx。我读的所有网站都是一样的,我已经尝试过了,所以我不知道该怎么做。非常感谢您对问题的任何帮助。 这是我的代码:

char receive;
     void main(){

           TRISA=0x00;
           ANSELA=0;
           PORTA.F0=0;
           UART1_Init(9600);
           Delay_ms(100);

          while(1){

          if (UART1_Data_Ready()) {
             receive = UART1_Read();
                 if (receive=='1')   {
                  PORTA.F0=1;
                 }
                 else{
                 PORTA.F0=0;
                        }

                             }
                                  }
                                         }

【问题讨论】:

    标签: pic microc


    【解决方案1】:

    首先,你没有说你使用的是什么编译器?你调试你的代码了吗?也许你的时钟设置是错误的。这是由于设置了错误的波特率。检查您的 uart 初始化。

    【讨论】:

    • 感谢您的回复。我正在使用 microC 编译器。这种语言是 PIC 的 microC。正如您在代码中看到的那样,我的波特率为 9600。同样的波特率也适用于 Arduino。我尝试了更高,但它也没有奏效。根据您的经验,错误似乎在 UART 初始化或什么?
    • 首先你要检查什么接收数据?你看变量“接收”。另外,你的UART设置在哪里?我只能看到一个要初始化的函数。也许你可以配置你的时钟设置。
    【解决方案2】:

    你有一个非常简单的错误,这应该是问题所在。 PORTC 默认初始化为模拟端口。因此,Tx 和 Rx 引脚不执行它们的功能。为了将 PORTC 禁用为模拟(配置为数字),使用 PIC18F46K22,函数为 ANSELC=0; 希望对您有所帮助!

    【讨论】:

    • 谢谢!有效!非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多