找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4347|回复: 44
收起左侧

想问下我这段主函数有错误吗?

  [复制链接]
回帖奖励 20 黑币 回复本帖可获得 20 黑币奖励! 每人限 1 次
ID:377872 发表于 2018-8-11 18:42 | 显示全部楼层 |阅读模式
本帖最后由 hyg1997 于 2018-8-11 22:47 编辑

     编译0错误,0警告,但是蜂鸣器就是不响。。。。。。

#include<reg52.h>
#include <LCD1602.h>
#include<MOTOR.H>
#include<BEEP.H>
#define uchar unsigned char
#define uint unsigned int
void main()
{
uinti,j;
Delay_xms(50);//等待系统稳定
  /* 系统初始化 */
TMOD = 0x20;          //定时器T1使用工作方式2
  TH1= 253;        // 设置初值
  TL1= 253;
  TR1= 1;          // 开始计时
SCON = 0x50;          //工作方式1,波特率9600bps,允许接收   
  ES= 1;
  EA= 1;           // 打开所以中断   
  TI= 0;
  RI= 0;
SendData(str) ;   //发送到串口
Delay(1);         //延时100US12M晶振)
  
  while(1)
{
        if((K==0)&&(G==1))           
    {
          for(j=0;j<4;j++)       //圈数
          {
    for(i=0;i<500;i++)              //一圈
    {
       MotorCW();   //顺时针转动
    }
    }
    //Delay_xms(500);
         
    }
    else if ((G==0) &&(K==1))
    {
    for(j=0;j<4;j++)       //圈数
    {
    for(i=0;i<500;i++)
    {
    MotorCCW();  //逆时针转动
    }
  
    Delay_xms(500);
    }
    }
    else if ((G==0) &&(K==0))
    {
     MotorStop( );
    }
           {
beep=1;
if((FIRE==0)||(DOUT==0))
{
delay();
if((FIRE==0)||(DOUT==0))
{
beep=0;//蜂鸣器
}
}
}
    {        
   //------------------------
   //调用温湿度读取子程序
   RH();
   //串口显示程序
   //--------------------------
   
   str[0]=U8RH_data_H;
   str[1]=U8RH_data_L;
   str[2]=U8T_data_H;
   str[3]=U8T_data_L;
   str[4]=U8checkdata;
    SendData(str) ;  //发送到串口  
   //读取模块数据周期不易小于 2S
   lcddisplay();
   Delay(20000);
//elihw
    }
    }
// main
{
beep=1;
if((FIRE==0)||(DOUT==0))
{
delay();
if((FIRE==0)||(DOUT==0))
{
beep=0;
}
}
}
}   
   
   
void RSINTR() interrupt 4 using 2
    {
     U8 InPut3;
     if(TI==1) //发送中断         
    {
     TI=0;
     if(count!=5) //发送完5位数据         
    {
     SBUF= outdata[count];
     count++;
    }
  }
if(RI==1)         //接收中断                  
{        
   InPut3=SBUF;
   indata[count_r]=InPut3;
   count_r++;
   RI=0;                                                               
   if (count_r==5)//接收完4位数据
    {
     //数据接收完毕处理。
     count_r=0;
     str[0]=indata[0];
     str[1]=indata[1];
     str[2]=indata[2];
     str[3]=indata[3];
     str[4]=indata[4];
     P0=0;
    }
  }
}

评分

参与人数 1黑币 +5 收起 理由
13515024796qqq + 5 666

查看全部评分

回复

使用道具 举报

ID:372402 发表于 2018-8-13 09:10 | 显示全部楼层
这个只单独看程序也不行,如果程序没有问题还要看你电路这面是怎么设计的?电路连接的I/O口有没有设对,你的蜂鸣器是要单片机输出高电平响还是低电平响?还要确认一下蜂鸣器本身是不是好的?有没有焊接好,硬件连接检查好没问题了再来分析程序。

评分

参与人数 2黑币 +25 收起 理由
admin + 20 回帖助人的奖励!
jipinxlm + 5 很给力!

查看全部评分

回复

使用道具 举报

ID:135956 发表于 2018-8-13 10:32 | 显示全部楼层
楼上说的有道理,先从蜂鸣器开始,写几行单独测试蜂鸣器的代码,如果蜂鸣器不响,则蜂鸣器有问题,否则检查一下If条件内容,为啥没有执行,再来分析代码逻辑。

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:364278 发表于 2018-8-13 11:09 | 显示全部楼层
碰到这种情况先看自己管脚配置对不对,然后分段测试程序看是不是有bug

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:385940 发表于 2018-8-13 19:52 | 显示全部楼层
排查一下硬件接口,以及软件逻辑,看这些是否都已经搞好?

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:243168 发表于 2018-8-13 20:51 | 显示全部楼层
新人路过,看不出
回复

使用道具 举报

ID:386193 发表于 2018-8-14 14:52 | 显示全部楼层
仔细看了,没有大的问题,可以用软件测试下
回复

使用道具 举报

ID:235983 发表于 2018-8-16 21:14 | 显示全部楼层
看是否硬件有输出。
回复

使用道具 举报

ID:387069 发表于 2018-8-16 22:21 | 显示全部楼层
建议先测试基本的输入输出功能,硬件没问题再从程序上找
回复

使用道具 举报

ID:308437 发表于 2018-8-16 23:22 | 显示全部楼层
初始化先测试一下蜂鸣器。高电平:beep=1;低电平:beep=0;把主循环屏蔽,然后再测
回复

使用道具 举报

ID:386381 发表于 2018-8-16 23:36 来自手机 | 显示全部楼层
这么高深的程序学习了
回复

使用道具 举报

ID:387200 发表于 2018-8-17 11:54 | 显示全部楼层
如果是自己焊接的板子,那么需要对电路板进行检测。然后按照前面大佬说的单独用程序去检测蜂鸣器是否正常,这个要一步一步检测,只看程序难以看出端倪

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:387281 发表于 2018-8-17 15:05 | 显示全部楼层
我第一次用单片机也是蜂鸣器怎么都不响,后来强制把初值设置为1就好了,可能出厂的时候厂商设置为低电平了
回复

使用道具 举报

ID:362591 发表于 2018-8-18 09:44 | 显示全部楼层
是硬件的问题吧
回复

使用道具 举报

ID:387481 发表于 2018-8-18 10:18 | 显示全部楼层
蜂鸣器有那种上拉下拉电阻的,你把程序的0和1改改试下
回复

使用道具 举报

ID:386837 发表于 2018-8-18 11:19 | 显示全部楼层
对,你把电路连接发一下,帮你看看
回复

使用道具 举报

ID:327030 发表于 2018-8-18 11:25 | 显示全部楼层
先看对应的IO有输出吗,再看程序写的对不对,还有蜂鸣器是有源的还是无源的。
回复

使用道具 举报

ID:387615 发表于 2018-8-18 16:09 | 显示全部楼层
感覺沒什麼問題
回复

使用道具 举报

ID:385372 发表于 2018-8-18 17:10 | 显示全部楼层
分段测试程序看是不是有bug 应该是陈序进入死循环了
回复

使用道具 举报

ID:387676 发表于 2018-8-18 21:02 | 显示全部楼层
软件无错的话,就从硬件上排查,可以单独对蜂鸣器进行调试呀
回复

使用道具 举报

ID:387767 发表于 2018-8-19 10:57 | 显示全部楼层
程序没什么问题 你看看电路连接 还有元器件有问题没用
回复

使用道具 举报

ID:385318 发表于 2018-8-20 09:38 | 显示全部楼层
先排查线路的问题吧,如果没有问题就检测IO的输出
回复

使用道具 举报

ID:388052 发表于 2018-8-20 10:49 | 显示全部楼层
先学习一下,这个只单独看程序也不行,如果程序没有问题还要看你电路这面是怎么设计的?电路连接的I/O口有没有设对,你的蜂鸣器是要单片机输出高电平响还是低电平响?还要确认一下蜂鸣器本身是不是好的?有没有焊接好,硬件连接检查好没问题了再来分析程序。

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:208849 发表于 2018-8-20 11:00 | 显示全部楼层
能不能把原理图贴上来,这样好分析,不然很难看出来,既然都是0错误0警告了,书写上肯定没有问题的,贴上来大家交流交流

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:388074 发表于 2018-8-20 11:46 | 显示全部楼层
蜂鸣器有那种上拉下拉电阻的,你把程序的0和1改改试下
回复

使用道具 举报

ID:388162 发表于 2018-8-20 15:16 | 显示全部楼层
电路是怎么设计的?
回复

使用道具 举报

ID:371423 发表于 2018-8-20 17:22 | 显示全部楼层
单独测试蜂鸣器。另外确认使用的是有源蜂鸣器。无缘的话只给高低电平不会响的。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:387102 发表于 2018-8-30 18:40 | 显示全部楼层
可以仿真一下
回复

使用道具 举报

ID:367460 发表于 2018-8-31 19:39 | 显示全部楼层
你是用 仿真吗    看是不是  蜂鸣器 没设置好  双击一下蜂鸣器  设置成2v左右  看看

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:392113 发表于 2018-8-31 20:10 | 显示全部楼层
建议先测试基本的输入输出功能,硬件没问题再从程序上找

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:392116 发表于 2018-8-31 21:20 | 显示全部楼层
这种情况最好拿个示波器或者万用表看一下单片机的IO脚有没有被拉高还是拉低,光看程序没有意义,遇到问题首先要判断是硬件还是软件问题

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:392177 发表于 2018-8-31 23:43 | 显示全部楼层
上原理图看看,或许真像23楼说的

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:150693 发表于 2018-9-1 04:39 | 显示全部楼层
用万用表测蜂鸣端的电压变化

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:391456 发表于 2018-9-1 09:51 | 显示全部楼层
void main() { uinti,j; <---------------------这里算不算错误

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:392435 发表于 2018-9-1 20:39 | 显示全部楼层
SendData(str) ;   //发送到串口
str是什么?

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:135640 发表于 2018-9-2 12:09 | 显示全部楼层
把你的#include<BEEP.H>看看有没有问题,是哪个引脚!

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:392580 发表于 2018-9-2 12:47 | 显示全部楼层
beep=1  delay()    beep=0   再加个delay()试试~~~~~~~~~不行的话就是I/O脚配置问题,驱动能力不行

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:392604 发表于 2018-9-2 15:12 | 显示全部楼层
管脚定义也没有啊,我觉得你可以把后面的先注释掉,然后单看蜂鸣器能不能控制到

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:392682 发表于 2018-9-3 12:18 来自手机 | 显示全部楼层
蜂鸣器是有源的吗?
回复

使用道具 举报

ID:392937 发表于 2018-9-3 13:58 | 显示全部楼层
检查管脚,确定无误后再拆分程序测试查找原因
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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