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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復制鏈接]
跳轉到指定樓層
樓主
大神幫我看看 一下這個程序寫的對不對?





#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燈
                }
         }
        }
}        

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

使用道具 舉報

沙發
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;
                                }
         }
        }
}        

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


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

使用道具 舉報

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

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

使用道具 舉報

6#
ID:164602 發表于 2017-12-28 14:01 | 只看該作者
溧陽科燕 發表于 2017-12-28 10:20
謝謝了   照你的方法解決了

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

使用道具 舉報

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

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

使用道具 舉報

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

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

使用道具 舉報

9#
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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天久久| 逼逼视频| 国产精品久久久久久久久久免费看 | 国产精品99久久久久久久vr | 午夜免费av | 成人免费一区二区三区牛牛 | 伊色综合久久之综合久久 | 日本精品一区二区三区视频 | 国产目拍亚洲精品99久久精品 | 国产一区二区a | 成人免费网站在线 | 亚洲精品视频一区 | 日韩国产欧美视频 | 天天躁日日躁狠狠躁白人 | 国产精品久久久久国产a级 欧美日韩国产免费 | 成人免费视频久久 | 伊人精品一区二区三区 | 蜜臀av日日欢夜夜爽一区 | 国产草草视频 | 日韩a| 综合久| 精品9999| 国产精品久久久免费 | 欧美小视频在线观看 | 成人在线免费观看视频 | 国产精品久久国产精品 | 精品久久久久久久 | 久久久av | 91久久精品一区二区三区 | 三级av在线 | 在线不卡av | 国产在线区| 欧美综合在线观看 | 水蜜桃亚洲一二三四在线 | 日韩国产欧美一区 | 91一区二区三区 | 欧美九九| 国产电影精品久久 | 欧洲亚洲精品久久久久 | 亚洲免费在线观看 | av在线影院 |