标题: 想问下我这段主函数有错误吗? [打印本页]
作者: hyg1997 时间: 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); //延时100US(12M晶振)
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;
}
}
}
作者: 关外秀才 时间: 2018-8-13 09:10
这个只单独看程序也不行,如果程序没有问题还要看你电路这面是怎么设计的?电路连接的I/O口有没有设对,你的蜂鸣器是要单片机输出高电平响还是低电平响?还要确认一下蜂鸣器本身是不是好的?有没有焊接好,硬件连接检查好没问题了再来分析程序。
作者: wanroi 时间: 2018-8-13 10:32
楼上说的有道理,先从蜂鸣器开始,写几行单独测试蜂鸣器的代码,如果蜂鸣器不响,则蜂鸣器有问题,否则检查一下If条件内容,为啥没有执行,再来分析代码逻辑。
作者: ch12063119 时间: 2018-8-13 11:09
碰到这种情况先看自己管脚配置对不对,然后分段测试程序看是不是有bug
作者: c32c9811 时间: 2018-8-13 19:52
排查一下硬件接口,以及软件逻辑,看这些是否都已经搞好?
作者: oliverlau2k11 时间: 2018-8-13 20:51
新人路过,看不出
作者: tiaotiao 时间: 2018-8-14 14:52
仔细看了,没有大的问题,可以用软件测试下
作者: atchboy 时间: 2018-8-16 21:14
看是否硬件有输出。
作者: 宝梦 时间: 2018-8-16 22:21
建议先测试基本的输入输出功能,硬件没问题再从程序上找
作者: yousunny 时间: 2018-8-16 23:22
初始化先测试一下蜂鸣器。高电平:beep=1;低电平:beep=0;把主循环屏蔽,然后再测
作者: 文凤轩 时间: 2018-8-16 23:36
这么高深的程序学习了
作者: 狗肉天涯 时间: 2018-8-17 11:54
如果是自己焊接的板子,那么需要对电路板进行检测。然后按照前面大佬说的单独用程序去检测蜂鸣器是否正常,这个要一步一步检测,只看程序难以看出端倪
作者: SisCao 时间: 2018-8-17 15:05
我第一次用单片机也是蜂鸣器怎么都不响,后来强制把初值设置为1就好了,可能出厂的时候厂商设置为低电平了
作者: yosugonasora 时间: 2018-8-18 09:44
是硬件的问题吧
作者: 愚笨的黑胖纸 时间: 2018-8-18 10:18
蜂鸣器有那种上拉下拉电阻的,你把程序的0和1改改试下
作者: xz1158403759 时间: 2018-8-18 11:19
对,你把电路连接发一下,帮你看看
作者: stev 时间: 2018-8-18 11:25
先看对应的IO有输出吗,再看程序写的对不对,还有蜂鸣器是有源的还是无源的。
作者: curry312235 时间: 2018-8-18 16:09
感覺沒什麼問題
作者: jsq347 时间: 2018-8-18 17:10
分段测试程序看是不是有bug 应该是陈序进入死循环了
作者: 786063594 时间: 2018-8-18 21:02
软件无错的话,就从硬件上排查,可以单独对蜂鸣器进行调试呀
作者: cona4142 时间: 2018-8-19 10:57
程序没什么问题 你看看电路连接 还有元器件有问题没用
作者: CrlikenNN 时间: 2018-8-20 09:38
先排查线路的问题吧,如果没有问题就检测IO的输出
作者: sl001mile 时间: 2018-8-20 10:49
先学习一下,这个只单独看程序也不行,如果程序没有问题还要看你电路这面是怎么设计的?电路连接的I/O口有没有设对,你的蜂鸣器是要单片机输出高电平响还是低电平响?还要确认一下蜂鸣器本身是不是好的?有没有焊接好,硬件连接检查好没问题了再来分析程序。
作者: tonggin 时间: 2018-8-20 11:00
能不能把原理图贴上来,这样好分析,不然很难看出来,既然都是0错误0警告了,书写上肯定没有问题的,贴上来大家交流交流
作者: 547559330 时间: 2018-8-20 11:46
蜂鸣器有那种上拉下拉电阻的,你把程序的0和1改改试下
作者: dedederek 时间: 2018-8-20 15:16
电路是怎么设计的?
作者: NPC-1024 时间: 2018-8-20 17:22
单独测试蜂鸣器。另外确认使用的是有源蜂鸣器。无缘的话只给高低电平不会响的。
作者: 电子狂 时间: 2018-8-30 18:40
可以仿真一下
作者: 昆明路口卖提莫 时间: 2018-8-31 19:39
你是用 仿真吗 看是不是 蜂鸣器 没设置好 双击一下蜂鸣器 设置成2v左右 看看
作者: a634965449 时间: 2018-8-31 20:10
建议先测试基本的输入输出功能,硬件没问题再从程序上找
作者: Jpower 时间: 2018-8-31 21:20
这种情况最好拿个示波器或者万用表看一下单片机的IO脚有没有被拉高还是拉低,光看程序没有意义,遇到问题首先要判断是硬件还是软件问题
作者: kuiyin 时间: 2018-8-31 23:43
上原理图看看,或许真像23楼说的
作者: 暗双魂 时间: 2018-9-1 04:39
用万用表测蜂鸣端的电压变化
作者: xinforever 时间: 2018-9-1 09:51
void main() { uinti,j; <---------------------这里算不算错误
作者: 魔翼 时间: 2018-9-1 20:39
SendData(str) ; //发送到串口
str是什么?
作者: liao42 时间: 2018-9-2 12:09
把你的#include<BEEP.H>看看有没有问题,是哪个引脚!
作者: 6744 时间: 2018-9-2 12:47
beep=1 delay() beep=0 再加个delay()试试~~~~~~~~~不行的话就是I/O脚配置问题,驱动能力不行
作者: 392177410 时间: 2018-9-2 15:12
管脚定义也没有啊,我觉得你可以把后面的先注释掉,然后单看蜂鸣器能不能控制到
作者: qinshuai 时间: 2018-9-3 12:18
蜂鸣器是有源的吗?
作者: Time_sck 时间: 2018-9-3 13:58
检查管脚,确定无误后再拆分程序测试查找原因
作者: Time_sck 时间: 2018-9-3 14:00
先看自己管脚对不对,分段测试程序
作者: 风起于 时间: 2018-9-3 14:04
买个逻辑分析仪,看一下引脚输出波形,以后调程序会轻松点
作者: YUYU123 时间: 2018-9-5 21:25
好像没什么问题呀
作者: 奕奕赤 时间: 2018-9-6 00:30
好难看出啊
作者: duker 时间: 2018-9-6 15:13
串口能接收到数据吗?正确不?然后确定你调用的库函数没有问题。同时确定下硬件有无问题,最简单的是拿一块蜂鸣器能响的板子进行测试,如果下入你的程序后,蜂鸣器能响,那就是硬件问题,否则再排查软件问题。
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |