找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于51单片机蓝牙风扇的程序问题,求指教!

查看数: 4483 | 评论数: 13 | 收藏 3
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-8-4 18:17

正文摘要:

本帖最后由 sunmebaby 于 2021-8-4 21:55 编辑 要实现的功能是通过按键和蓝牙两种方式实现对风扇的调速,按键部分的程序调试过没有问题,但是蓝牙部分的程序不管怎么调试都没有反应,串口助手上也可以接收到数据 ...

回复

ID:149162 发表于 2021-8-8 11:59
P30和IO口复用了
ID:906254 发表于 2021-8-7 20:37
lkc8210 发表于 2021-8-6 13:58
你的减档键接了RXD脚
单片机以为有串口信号就入了中断
如果不是没脚用,尽量不要用RXD(P30)/TXD(P31)脚 ...

懂了,谢谢!
ID:161164 发表于 2021-8-6 13:58
sunmebaby 发表于 2021-8-6 12:30
谢谢大佬,发现自己接线时候有错误,把RXD和TXD接反了,然后按照大佬的写法改了之后可以了...还有个问题. ...

你的减档键接了RXD脚
单片机以为有串口信号就入了中断
如果不是没脚用,尽量不要用RXD(P30)/TXD(P31)脚
以免影响串口通讯
ID:906254 发表于 2021-8-6 12:30
本帖最后由 sunmebaby 于 2021-8-6 12:55 编辑
lkc8210 发表于 2021-8-5 23:41
12T 8051的指令执行速度比较慢(一句1us)
你代码中的定时器中断时间只有1us
而中断的指令有那么多句

谢谢大佬,发现自己接线时候有错误,把RXD和TXD接反了,然后按照大佬的写法改了之后可以了...还有个问题...我在串口中断函数里加了句LED =~LED想观察现象,发现按减档键LED会亮灭,但是我用这是按键触发中断了吗...?
ID:81196 发表于 2021-8-6 10:27
起码保证串口连接没问题,再确定波特率等参数配置无误,然后调试能否进入中断,
ID:161164 发表于 2021-8-5 23:41
本帖最后由 lkc8210 于 2021-8-5 23:55 编辑
sunmebaby 发表于 2021-8-5 12:58
while(1)去掉也还是不行。。。

12T 8051的指令执行速度比较慢(一句1us)
你代码中的定时器中断时间只有1us
而中断的指令有那么多句
于是单片机进入中断时被中断中断了去进入中断。。。
尝试把TL0=0xF7;改为TL0=0xC7;
而且你的串口初始化和定时器0初始化的写法会互相覆盖TMOD的设定
void UsarInit()                //串口初始化
{
    TMOD = 0x20;            //设置计数器工作方式2
改为TMOD |= 0x20;
void timer0_init()        //定时器0初始化
{
    TMOD = 0x01;
改为TMOD |= 0x01;
ID:81365 发表于 2021-8-5 22:59
看看是否进入了中断,还有按键和指令码的作用结合写,或者干脆暂时屏蔽按键
ID:906254 发表于 2021-8-5 22:29
zqy181818 发表于 2021-8-5 20:50
不是去了,而是结合到一块,放到主函数里。

void main()                                        //主函数
{
        timer0_init();
        UsarInit();
        while(1)
        {
                display();               
                Motor_up();
                Motor_down();
                switch(Data)
                {case 'a':count = 0; break;
                 case 'b':count = 25;break;
                 case 'c':count = 50;break;
                 case 'd':count = 75;break;
        }
}

是改成这样吗。。。之前这样试过,也还是没有反应。。。
ID:130231 发表于 2021-8-5 20:50
sunmebaby 发表于 2021-8-5 12:58
while(1)去掉也还是不行。。。

不是去了,而是结合到一块,放到主函数里。
ID:906254 发表于 2021-8-5 12:58
18701931930 发表于 2021-8-5 12:56
串口中断函数里有个while(1)死循环

while(1)去掉也还是不行。。。
ID:554500 发表于 2021-8-5 12:56
串口中断函数里有个while(1)死循环
ID:906254 发表于 2021-8-5 12:31
jizi 发表于 2021-8-5 10:23
老哥
你上面的图片是蓝牙 加ttl 之后和电脑相连的 数据吗
如果是 那就检查一下你的晶振频率 看看是不是那 ...

晶振是11.0592MHz,之前用AT指令调试过了,是可以正常工作的
ID:272269 发表于 2021-8-5 10:23
老哥
你上面的图片是蓝牙 加ttl 之后和电脑相连的 数据吗
如果是 那就检查一下你的晶振频率 看看是不是那种通信晶振
简单的方法 单片机 和  电脑通信 在串口助手那里 直接下发 蓝牙指令看看有否工作
或者直接  你发什么数据 就让单片机返回什么数据上电脑 这样调试一目了然

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表