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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8194|回復: 8
收起左側

求助 關于光敏電阻模塊的單片機程序

[復制鏈接]
ID:137704 發表于 2017-12-26 16:48 | 顯示全部樓層 |閱讀模式
大神幫我看看 一下這個程序寫的對不對?





#include<reg51.h>                 //庫文件
#define uchar unsigned char//宏定義無符號字符型
#define uint unsigned int  //宏定義無符號整型

/********************************************************************
                            I/O定義
*********************************************************************/
sbit LED1=P1^3;
sbit LED2=P1^4;
sbit LED3=P1^5;
sbit LED4=P1^6;        //定義單片機P1.3 4 5 6 為LED燈
sbit DOUT=P1^0;         //定義單片機P1.0為光敏DO輸出
/********************************************************************
                            延時函數
*********************************************************************/
void delay()//延時程序
{
uchar m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
/********************************************************************
                            主函數
*********************************************************************/
void main()
{
        while(1)   //無限循環
        {
          LED1=0;
          LED2=0;
          LED3=0;
          LED4=0;           //熄滅P1.0口燈
         if(DOUT==0)//當DO輸出低電平時
         {
            delay();//延時抗干擾
                if(DOUT==0)//確定 DO口輸出低電平
            {
                 LED1=1;
                            LED2=1;
                         LED3=1;
                         LED4=1;               
           //點亮LED燈
                }
         }
        }
}        

回復

使用道具 舉報

ID:164602 發表于 2017-12-27 08:26 | 顯示全部樓層
思路沒什么問題:光敏輸出低電平,說明光線很亮,就關LED燈。是不是這意思?
具體有沒有語法錯誤,我沒驗證。
有一點要說明,你的程序中,點亮LED用的高電平,這不好。因為單片機的高電平輸出電流很小,而低電平輸入電流可以較大(準雙向口的特點),所以一般我們都是低電平開LED燈的。
回復

使用道具 舉報

ID:137704 發表于 2017-12-28 07:44 | 顯示全部樓層
HC6800-ES-V2.0 發表于 2017-12-27 08:26
思路沒什么問題:光敏輸出低電平,說明光線很亮,就關LED燈。是不是這意思?
具體有沒有語法錯誤,我沒驗 ...

謝謝指點 現在這個程序燒錄后光敏這一塊似乎沒什么反應 不管有光沒光 LED燈都會亮  現在用的是STC12C5206AD的芯片
回復

使用道具 舉報

ID:164602 發表于 2017-12-28 08:38 | 顯示全部樓層
你的程序,流程上有點錯誤。
以下是我在你的程序基礎上,按照我的板子電路修改過的程序,是無光照時LED不亮,有光照時LED亮。
#include<reg51.h>                 //庫文件
#define uchar unsigned char//宏定義無符號字符型
#define uint unsigned int  //宏定義無符號整型

/********************************************************************
                            I/O定義
*********************************************************************/
//sbit LED1=P1^3;
//sbit LED2=P1^4;
//sbit LED3=P1^5;
//sbit LED4=P1^6;        //定義單片機P1.3 4 5 6 為LED燈
#define LED P2
sbit DOUT=P1^0;         //定義單片機P1.0為光敏DO輸出
/********************************************************************
                            延時函數
*********************************************************************/
void delay()//延時程序
{
uchar m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
/********************************************************************
                            主函數
*********************************************************************/
void main()
{
                DOUT=1;
                LED=0xff;
        while(1)   //無限循環
        {
//          LED1=0;
//          LED2=0;
//          LED3=0;
//          LED4=0;           //熄滅P1.0口燈
         if(DOUT==0)//當DO輸出低電平時
         {
            delay();//延時抗干擾
                if(DOUT==0)//確定 DO口輸出低電平
            {
//                 LED1=1;
//                            LED2=1;
//                         LED3=1;
//                         LED4=1;               
                        LED=0x00;
           //點亮LED燈
                }
                                else
                                {
                                        LED=0xff;
                                }
         }
        }
}        

我的程序適用我的板子電路如圖:
1.jpg

你看看,你的程序是什么地方不對。
回復

使用道具 舉報

ID:137704 發表于 2017-12-28 10:20 | 顯示全部樓層
HC6800-ES-V2.0 發表于 2017-12-28 08:38
你的程序,流程上有點錯誤。
以下是我在你的程序基礎上,按照我的板子電路修改過的程序,是無光照時LED不 ...

謝謝了   照你的方法解決了
回復

使用道具 舉報

ID:164602 發表于 2017-12-28 14:01 | 顯示全部樓層
溧陽科燕 發表于 2017-12-28 10:20
謝謝了   照你的方法解決了

你的問題,其實就是邏輯運算。
邏輯與:&&,它左右兩個條件同時成立,才為真——(有零得零)
邏輯或:||,它左右兩個條件任有一個成立,就為真——(有一得一)
所以,不需要兩個if的,一條if語句,可以同時判斷(理論上)無窮多個條件。
回復

使用道具 舉報

ID:137704 發表于 2017-12-28 14:38 | 顯示全部樓層
HC6800-ES-V2.0 發表于 2017-12-28 14:01
你的問題,其實就是邏輯運算。
邏輯與:&&,它左右兩個條件同時成立,才為真——(有零得零)
邏輯或: ...

恩 這個問題剛摸索著解決了  點亮后如何能讓LED定時關閉呢?比如 兩個條件同時成立了 我想LED燈在點亮1個小時后關閉,,,望指教
回復

使用道具 舉報

ID:164602 發表于 2017-12-29 08:11 | 顯示全部樓層
溧陽科燕 發表于 2017-12-28 14:38
恩 這個問題剛摸索著解決了  點亮后如何能讓LED定時關閉呢?比如 兩個條件同時成立了 我想LED燈在點亮1個 ...

兩種方法:
第一:用定時器。優點是單片機自身的資源,不用接線等,操作方便。缺點是定時時間很短,要多次反復定時,且不一定很準,因為你定的時間太長了。
第二:用時間芯片,如DS1302等,優點是計時很方便、準確,還可以有很多的附加功能,如鬧鐘等,缺點是要設計電路,程序也比較復雜,不過網上到處都是例子,很容易移植。
回復

使用道具 舉報

ID:344924 發表于 2018-6-4 20:01 | 顯示全部樓層
HC6800-ES-V2.0 發表于 2017-12-28 08:38
你的程序,流程上有點錯誤。
以下是我在你的程序基礎上,按照我的板子電路修改過的程序,是無光照時LED不 ...

你好,我想請教一個問題。不知道你現在會不會看到這條消息。最近在弄個電子設計,c 程序遇到麻煩想問你個問題,希望你看到能回復下,謝謝~
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一级毛片 | 精品一区二区三区在线观看 | 亚洲成人自拍 | 一级a爱片性色毛片免费 | 在线免费观看a级片 | av天空| 国内精品久久影院 | 国产精品久久久久久影院8一贰佰 | 亚洲精选一区二区 | 五十女人一级毛片 | 99国产精品久久久久久久 | 九九热免费视频在线观看 | 992tv人人草 久久精品超碰 | 日本成人中文字幕 | 2022精品国偷自产免费观看 | 天天射美女 | 国内自拍第一页 | 国产一区二区观看 | 天堂av资源| 免费在线成人网 | 在线看中文字幕 | 国产精品国产三级国产aⅴ中文 | 91在线观看视频 | 98久久 | 国产99视频精品免费视频7 | 欧美日韩精品一区二区三区四区 | 久久视频一区 | 影音先锋中文字幕在线观看 | 在线播放国产一区二区三区 | 久草在线在线精品观看 | 国产精品成人在线 | 久久日韩粉嫩一区二区三区 | 91精品一区二区三区久久久久 | 亚洲三级av | 中文字幕免费视频 | 久久精品欧美一区二区三区不卡 | 狠狠色综合久久婷婷 | 日韩成人一区 | 国产乱性 | 久久久久久亚洲 | 国产成人精品免费视频大全最热 |