久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3251|回復: 17
打印 上一主題 下一主題
收起左側

關于信號檢測出現的問題

[復制鏈接]
跳轉到指定樓層
樓主
大家好,剛剛學習單片機,想制作一個檢測信號的設備,但是程序寫好后,led5燈不亮。只寫了一小部分程序進行驗證。請各位大神幫忙看看程序哪里有問題。謝謝啦。(正在上班,剛剛接觸單片機)
#include <reg51.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
sbit k1=P1^0;         //合閘信號(常開)
sbit k2=P1^1;    //分閘信號(常閉)
sbit k3=P1^2;    //合閘信號(常開)
sbit k4=P1^3;    //分閘信號(常閉)
sbit k5=P1^4;    //合閘信號(常開)
sbit k6=P1^5;    //分閘信號(常閉)
sbit k7=P1^6;    //儲能信號(常開)
sbit k8=P1^7;    //儲能信號(常閉)
sbit k9=P2^0;    //分閘測試按鈕
sbit k10=P2^1;   //合閘測試按鈕
sbit K11=P2^2;   //儲能測試按鈕
sbit led1=P0^0;         //分閘測試合格,燈亮;綠色
sbit led2=P0^1;  //合閘測試合格,燈亮;黃色
sbit led3=P0^2;  //儲能測試合格,燈亮;藍色
sbit led4=P0^3;  //信號錯誤指示燈。分閘不合格,led1滅,led4亮。合閘不合格,led2滅,led4亮。儲能同上
sbit led5=P0^4;  //分閘測試功能指示燈
sbit led6=P0^5;  //合閘測試功能指示燈
sbit led7=P0^6;  //儲能測試功能指示燈
void delayms(uint);
void jianpan();
void main()
{
        while(1)
        {
                jianpan();
        }
}
void jianpan()
{
        if(k9==0)
        {
                delayms(10);
                if(k9==0)
                {
                        led5=~led5;
                        while(!k9);
                }
        }
}
void delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}



捕獲.PNG (55.38 KB, 下載次數: 124)

捕獲.PNG
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:158375 發表于 2017-9-19 16:28 | 只看該作者
你的 LED 不加限流電阻 ?
回復

使用道具 舉報

板凳
ID:82765 發表于 2017-9-19 16:43 | 只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

地板
ID:230847 發表于 2017-9-19 17:00 | 只看該作者
謝謝大神,我想實現的功能如下:

微博圖片.jpg (147.39 KB, 下載次數: 113)

微博圖片.jpg
回復

使用道具 舉報

5#
ID:230847 發表于 2017-9-19 17:04 | 只看該作者
感覺程序好復雜。初步想驗證主函數調用子函數。當按鍵k9按下,led5燈亮。剛開始led是加有限流電阻,單子仿真的時候燈不亮,以為是限流電阻太大,就把電阻去了。稍后把電阻加上。
回復

使用道具 舉報

6#
ID:230915 發表于 2017-9-19 18:32 來自手機 | 只看該作者
沒看完,不過led5=~led5是不合適的,應該是led5=!led5。
回復

使用道具 舉報

7#
ID:230915 發表于 2017-9-19 18:35 來自手機 | 只看該作者
還有P0口要加上拉電阻
回復

使用道具 舉報

8#
ID:157238 發表于 2017-9-19 20:48 | 只看該作者
在proteus仿真中,51單片機的P0口需要加上上拉電阻
回復

使用道具 舉報

9#
ID:230847 發表于 2017-9-19 20:53 | 只看該作者
又仔細看了一邊程序,問題出現在
if(k9==0)
                {
                        led5=~led5;
                        while(!k9);
                }
應該把維護ile(!k9)放在“}”外邊,這樣就可以了
回復

使用道具 舉報

10#
ID:213173 發表于 2017-9-19 21:11 | 只看該作者
一束光的旅程 發表于 2017-9-19 17:04
感覺程序好復雜。初步想驗證主函數調用子函數。當按鍵k9按下,led5燈亮。剛開始led是加有限流電阻,單子仿 ...

你仿真不成功問題不在LED限流電阻,應該是89C52沒有導入程序HEX文件。

回復

使用道具 舉報

11#
ID:230847 發表于 2017-9-19 21:35 | 只看該作者
這次將所有程序的功能全部寫出來了。程序如下。
#include <reg51.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
sbit k1=P1^0;         //合閘信號(常開)
sbit k2=P1^1;    //分閘信號(常閉)
sbit k3=P1^2;    //合閘信號(常開)
sbit k4=P1^3;    //分閘信號(常閉)
sbit k5=P1^4;    //合閘信號(常開)
sbit k6=P1^5;    //分閘信號(常閉)
sbit k7=P1^6;    //儲能信號(常開)
sbit k8=P1^7;    //儲能信號(常閉)
sbit k9=P2^0;    //分閘測試按鈕
sbit k10=P2^1;   //合閘測試按鈕
sbit k11=P2^2;   //儲能測試按鈕
sbit led1=P0^0;         //分閘測試合格,燈亮;綠色
sbit led2=P0^1;  //合閘測試合格,燈亮;黃色
sbit led3=P0^2;  //儲能測試合格,燈亮;藍色
sbit led4=P0^3;  //信號錯誤指示燈。分閘不合格,led1滅,led4亮。合閘不合格,led2滅,led4亮。儲能同上
sbit led5=P0^4;  //分閘測試功能指示燈
sbit led6=P0^5;  //合閘測試功能指示燈
sbit led7=P0^6;  //儲能測試功能指示燈
void delayms(uint);//延時定義
void anjiank9();//定義按鍵k9
void anjiank10();//定義按鍵k10
void anjiank11();//定義按鍵k11
void main()
{
        while(1)
        {
                anjiank9();
                anjiank10();
                anjiank11();
        }
}
void anjiank9()   //按鍵9功能定義
{
        if(k9==0)
        {
                delayms(10);
                if(k9==0)
                {
                        led5=~led5;
                }
                        while(!k9);
                                if(k1==1&k2==0&k3==1&k4==0&k5==1&k6==0&k7==1&k8==1)
                                {
                                        led1=0;
                                }
                                else
                                {
                                        led1=1;
                                        led4=0;
                                }
                               
        }
}

void anjiank10()  //定義按鍵k10功能
{
        if(k10==0)
        {
                delayms(10);
                if(k10==0)
                {
                        led6=~led6;
                }
                while(!k10);
                        if(k1==0&k2==1&k3==0&k4==1&k5==0&k6==1&k7==0&k8==0)
                        {
                                led2=0;
                        }
                        else
                        {
                                led2=1;
                                led4=0;
                        }
                }
}

void anjiank11()  //定義按鍵k11功能
{
        if(k11==0)
        {
                delayms(10);
                if(k11==0)
                {
                        led7=~led7;
                }
                while(!k11);
                        if(k7!=0&k8!=0)
                        {
                                led3=0;
                        }
                        else
                        {
                                led3=1;
                                led4=0;
                        }
        }
}
               

void delayms(uint xms)  //延時函數
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}
               


捕獲.PNG (53.5 KB, 下載次數: 130)

捕獲.PNG
回復

使用道具 舉報

12#
ID:230847 發表于 2017-9-19 21:41 | 只看該作者
gaochang000000 發表于 2017-9-19 18:35
還有P0口要加上拉電阻

你好,已經加上了,還想問一下發光二極管與單片機之間需要加一個鎖存器嗎?按鍵是不是也得并上分壓電阻?
謝謝啦
回復

使用道具 舉報

13#
ID:213173 發表于 2017-9-20 08:45 | 只看該作者
一束光的旅程 發表于 2017-9-19 21:35
這次將所有程序的功能全部寫出來了。程序如下。
#include
#include

你用撥碼開關才能模擬P1端口狀態


回復

使用道具 舉報

14#
ID:234353 發表于 2017-9-20 13:52 | 只看該作者
好文章,可是看不懂,與我現在從事的工作很有關聯
回復

使用道具 舉報

15#
ID:230847 發表于 2017-9-23 11:38 | 只看該作者
wulin 發表于 2017-9-20 08:45
你用撥碼開關才能模擬P1端口狀態

謝謝。一時沒有想到撥碼開關。SW1實際上是輔助開關信號點。已經制作了一部分。

1.PNG (254.48 KB, 下載次數: 110)

1.PNG
回復

使用道具 舉報

16#
ID:230847 發表于 2017-10-3 18:11 | 只看該作者
之前測試時出現信號勿動的問題,并且燈太多,不容易判斷。又重新改了一下板子和程序。程序如下:
#include <reg51.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
sbit s1=P1^0;         //合閘信號(常開)
sbit s2=P1^1;    //分閘信號(常閉)
sbit s3=P1^2;    //合閘信號(常開)
sbit s4=P1^3;    //分閘信號(常閉)
sbit s5=P1^4;    //合閘信號(常開)
sbit s6=P1^5;    //分閘信號(常閉)
sbit s7=P1^6;    //儲能信號(常開)
sbit s8=P1^7;    //儲能信號(常開)
sbit k1=P2^0;    //分閘測試按鈕
sbit k2=P2^1;    //合閘測試按鈕
sbit k3=P2^2;    //儲能測試按鈕
sbit led1=P0^0;         //分閘測試合格,燈亮;綠色,不合格閃爍,且紅燈亮
sbit led2=P0^1;  //合閘測試合格,燈亮;黃色,不合格閃爍,且紅燈亮
sbit led3=P0^2;  //儲能測試合格,燈亮;藍色,不合格閃爍,且紅燈亮
sbit led4=P0^3;  //信號錯誤指示燈
void delayms(uint);//延時定義
void f1();//定義F-D分閘信號
void h1();//定義F-D合閘信號
void c1();//定義F-D儲能信號
void bj1();//定義警示燈閃爍
void bj2();//定義警示燈閃爍
void bj3();//定義警示燈閃爍
/**************************************
*延時程序
**************************************/
void delayms(uint xms)  //延時函數
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}
/**************************************
*分閘信號異常報警
**************************************/
void bj1()//分閘信號異常報警
{
  while(1)
  {
        led4=0;
        led1=0;
        delayms(200);
        led4=1;
        led1=1;
        delayms(200);
  }
}
/**************************************
*合閘信號異常報警
**************************************/
void bj2()//合閘信號異常報警
{
        while(1)
        {
                led4=0;
                led2=0;
                delayms(200);
                led4=1;
                led2=1;
                delayms(200);
        }
}
/**************************************
*儲能信號異常報警
**************************************/
void bj3()//儲能信號異常報警
{
        while(1)
        {
                led4=0;
                led3=0;
                delayms(200);
                led4=1;
                led3=1;
                delayms(200);
        }
}
/**************************************
*SOG分閘信號判斷
**************************************/
void f1()
{
        if(k1==0)
        {
                if(s1==1&&s2==0&&s3==1&&s4==0&&s5==1&&s6==0&&s7==1&&s8==1)
                {
                        led1=0;
                }
                else
                {
                        bj1();
                }
        }
        while(!k1);
}
/**************************************
*SOG合閘信號判斷
**************************************/
void h1()
{
        if(k2==0)
        {
                if(s1==0&&s2==1&&s3==0&&s4==1&&s5==0&&s6==1&&s7==0&&s8==0)
                {
                        led2=0;
                }
                else
                {
                        bj2();
                }
        }
        while(!k2);
}
/**************************************
*SOG儲能信號判斷
**************************************/
void c1()
{
        if(k3==0)
        {
                if(s1==0&&s2==1&&s3==0&&s4==1&&s5==0&&s6==1&&s7==1&&s8==1)
                {
                        led3=0;
                }
                else
                {
                        bj3();
                }
        }
        while(!k3);
}
/**************************************
*主程序
**************************************/
void main()
{
        while(1)
        {
                       
                f1();
                h1();
                c1();
        }
}

捕獲.PNG (66.92 KB, 下載次數: 97)

捕獲.PNG
回復

使用道具 舉報

17#
ID:237156 發表于 2017-10-3 19:35 來自手機 | 只看該作者
你是在做畢業設計嗎
回復

使用道具 舉報

18#
ID:230847 發表于 2017-10-3 20:10 來自手機 | 只看該作者
8956797481 發表于 2017-10-3 19:35
你是在做畢業設計嗎

不是,已經工作了,在做工裝。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二区三区在线观看 | 国产激情视频在线观看 | 欧美激情精品久久久久久免费 | 日韩中文字幕视频 | av在线播放网址 | 亚洲伊人久久综合 | 欧美精品1区2区3区 免费黄篇 | 亚洲欧美综合精品久久成人 | 日韩中文字幕在线观看 | 国产午夜精品理论片a大结局 | 日韩在线播放第一页 | 色婷综合网| 久久久99国产精品免费 | 日韩欧美在线视频 | 中文字幕一区在线观看视频 | 国产精品1区 | 日韩欧美在线不卡 | 欧美videosex性极品hd | 中文一区二区 | 婷婷毛片| 色香婷婷| 夜夜草 | 在线观看成年视频 | 中文在线亚洲 | 色一情一乱一伦一区二区三区 | 国产精品18久久久久久久 | av三级| 亚洲一区在线日韩在线深爱 | 综合网在线 | 欧美影院久久 | 国产福利在线视频 | 亚洲精品在线观 | 91麻豆精品国产91久久久久久久久 | 九九色九九 | 日本不卡一区二区三区在线观看 | 中文字幕一区二区三区在线乱码 | 国产最新网址 | 在线观看日韩精品视频 | 国产 欧美 日韩 一区 | 欧美国产大片 | 国产中文字幕在线观看 |