標題: 想問下我這段主函數有錯誤嗎? [打印本頁]
作者: 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.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |