找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 8087|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

求助 關(guān)于光敏電阻模塊的單片機(jī)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:137704 發(fā)表于 2017-12-26 16:48 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
大神幫我看看 一下這個(gè)程序?qū)懙膶?duì)不對(duì)?





#include<reg51.h>                 //庫(kù)文件
#define uchar unsigned char//宏定義無(wú)符號(hào)字符型
#define uint unsigned int  //宏定義無(wú)符號(hào)整型

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

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

使用道具 舉報(bào)

8#
ID:344924 發(fā)表于 2018-6-4 20:01 | 只看該作者
HC6800-ES-V2.0 發(fā)表于 2017-12-28 08:38
你的程序,流程上有點(diǎn)錯(cuò)誤。
以下是我在你的程序基礎(chǔ)上,按照我的板子電路修改過(guò)的程序,是無(wú)光照時(shí)LED不 ...

你好,我想請(qǐng)教一個(gè)問(wèn)題。不知道你現(xiàn)在會(huì)不會(huì)看到這條消息。最近在弄個(gè)電子設(shè)計(jì),c 程序遇到麻煩想問(wèn)你個(gè)問(wèn)題,希望你看到能回復(fù)下,謝謝~
回復(fù)

使用道具 舉報(bào)

7#
ID:164602 發(fā)表于 2017-12-29 08:11 | 只看該作者
溧陽(yáng)科燕 發(fā)表于 2017-12-28 14:38
恩 這個(gè)問(wèn)題剛摸索著解決了  點(diǎn)亮后如何能讓LED定時(shí)關(guān)閉呢?比如 兩個(gè)條件同時(shí)成立了 我想LED燈在點(diǎn)亮1個(gè) ...

兩種方法:
第一:用定時(shí)器。優(yōu)點(diǎn)是單片機(jī)自身的資源,不用接線等,操作方便。缺點(diǎn)是定時(shí)時(shí)間很短,要多次反復(fù)定時(shí),且不一定很準(zhǔn),因?yàn)槟愣ǖ臅r(shí)間太長(zhǎng)了。
第二:用時(shí)間芯片,如DS1302等,優(yōu)點(diǎn)是計(jì)時(shí)很方便、準(zhǔn)確,還可以有很多的附加功能,如鬧鐘等,缺點(diǎn)是要設(shè)計(jì)電路,程序也比較復(fù)雜,不過(guò)網(wǎng)上到處都是例子,很容易移植。
回復(fù)

使用道具 舉報(bào)

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

恩 這個(gè)問(wèn)題剛摸索著解決了  點(diǎn)亮后如何能讓LED定時(shí)關(guān)閉呢?比如 兩個(gè)條件同時(shí)成立了 我想LED燈在點(diǎn)亮1個(gè)小時(shí)后關(guān)閉,,,望指教
回復(fù)

使用道具 舉報(bào)

5#
ID:164602 發(fā)表于 2017-12-28 14:01 | 只看該作者
溧陽(yáng)科燕 發(fā)表于 2017-12-28 10:20
謝謝了   照你的方法解決了

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

使用道具 舉報(bào)

地板
ID:137704 發(fā)表于 2017-12-28 10:20 | 只看該作者
HC6800-ES-V2.0 發(fā)表于 2017-12-28 08:38
你的程序,流程上有點(diǎn)錯(cuò)誤。
以下是我在你的程序基礎(chǔ)上,按照我的板子電路修改過(guò)的程序,是無(wú)光照時(shí)LED不 ...

謝謝了   照你的方法解決了
回復(fù)

使用道具 舉報(bào)

板凳
ID:164602 發(fā)表于 2017-12-28 08:38 | 只看該作者
你的程序,流程上有點(diǎn)錯(cuò)誤。
以下是我在你的程序基礎(chǔ)上,按照我的板子電路修改過(guò)的程序,是無(wú)光照時(shí)LED不亮,有光照時(shí)LED亮。
#include<reg51.h>                 //庫(kù)文件
#define uchar unsigned char//宏定義無(wú)符號(hào)字符型
#define uint unsigned int  //宏定義無(wú)符號(hào)整型

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

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


你看看,你的程序是什么地方不對(duì)。
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:137704 發(fā)表于 2017-12-28 07:44 | 只看該作者
HC6800-ES-V2.0 發(fā)表于 2017-12-27 08:26
思路沒(méi)什么問(wèn)題:光敏輸出低電平,說(shuō)明光線很亮,就關(guān)LED燈。是不是這意思?
具體有沒(méi)有語(yǔ)法錯(cuò)誤,我沒(méi)驗(yàn) ...

謝謝指點(diǎn) 現(xiàn)在這個(gè)程序燒錄后光敏這一塊似乎沒(méi)什么反應(yīng) 不管有光沒(méi)光 LED燈都會(huì)亮  現(xiàn)在用的是STC12C5206AD的芯片
回復(fù)

使用道具 舉報(bào)

樓主
ID:164602 發(fā)表于 2017-12-27 08:26 | 只看該作者
思路沒(méi)什么問(wèn)題:光敏輸出低電平,說(shuō)明光線很亮,就關(guān)LED燈。是不是這意思?
具體有沒(méi)有語(yǔ)法錯(cuò)誤,我沒(méi)驗(yàn)證。
有一點(diǎn)要說(shuō)明,你的程序中,點(diǎn)亮LED用的高電平,這不好。因?yàn)閱纹瑱C(jī)的高電平輸出電流很小,而低電平輸入電流可以較大(準(zhǔn)雙向口的特點(diǎn)),所以一般我們都是低電平開(kāi)LED燈的。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表