欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

光控燈(強中弱)

[復制鏈接]
跳轉到指定樓層
樓主
ID:910228 發(fā)表于 2023-10-24 04:20 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
光控燈
1.光線很弱時開燈
2.光線很強時啟動蜂鳴器,通過按鈕可以關閉蜂鳴器
3.光線正常時關燈和關閉蜂鳴器

51hei截圖20210726000627.png (21.46 KB, 下載次數(shù): 53)

51hei截圖20210726000627.png

光控燈(強中弱).zip

275.15 KB, 下載次數(shù): 32, 下載積分: 黑幣 -5

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

使用道具 舉報

沙發(fā)
ID:1102225 發(fā)表于 2023-12-9 09:01 | 只看該作者
你好,就是您的那篇光控燈的代碼我燒在普中開發(fā)板上沒有反應,是代碼哪里需要修改嗎,而且仿真圖里用示波器測蜂鳴器也是沒有波形
回復

使用道具 舉報

板凳
ID:1121148 發(fā)表于 2025-11-12 14:22 | 只看該作者
我把這個程序改了移到STC8單片機上了
//#include "reg51.h"
//#include "intrins.h"
//sbit smg1=P2^0;//數(shù)碼管
//sbit smg2=P2^1;
//sbit led1=P1^1;//LED強
//sbit led2=P1^2;//中
//sbit led3=P1^3;//弱
//sbit lamp=P3^5;//燈
//sbit beep=P3^6;//蜂鳴器
//sbit k1=P3^0;//按鈕
//sbit CLK=        P1^5;//時鐘,初始狀態(tài)為0
//sbit DIO=        P1^6;//數(shù)據(jù)輸入
////sbit DO=        P1^7; // 數(shù)據(jù)輸出
//sbit CS=        P1^4;

#include<stc8.h>
#include "intrins.h"
sbit smg1=P5^4;  //數(shù)碼管10位
sbit smg2=P5^5;  //數(shù)碼管個位
sbit led1=P3^4;  //強
sbit led2=P3^5;  //中
sbit led3=P3^6;  //弱
sbit lamp=P3^7;  //燈
sbit CLK=        P3^0;//時鐘,初始狀態(tài)為0
sbit DIO=        P3^1;//數(shù)據(jù)輸入
sbit CS=        P3^3;
//unsigned char code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰0-9
unsigned char code smgduan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共陽0-9
unsigned char light=0;//光照
unsigned char time=0,flag=0;

void Delay_2us(void)
{
        _nop_();
        _nop_();
}
/*********************************************
讀取ADC
**********************************************/
unsigned char ADC_read_data(bit channel)//通道ch0
{
        unsigned char i,dat0=0,dat1=0;  
        //-----第一次下降沿之前DI置高,啟動信號-----
       
        CS=0;             //片選信號置低,啟動AD轉換芯片
        CLK=0;            //時鐘置低電平
       
        DIO=1;            //開始信號為高電平
        Delay_2us();
        CLK=1;            //產生一個正脈沖,在時鐘上升沿,輸入開始信號(DI=1)
        Delay_2us();
        CLK=0;            //第1個時鐘下降沿
        DIO=1;
        Delay_2us();
       
        CLK=1;            //第2個下降沿輸入DI=1,表示雙通道單級性輸入
        Delay_2us();
       
        //-----在第2個下降沿,模擬信號輸入模式選擇(1:單模信號,0:雙模差分信號)-----
        CLK=0; DIO=channel;     //第3個下降沿,設置DI,選擇通道
        Delay_2us();
        CLK=1;
        Delay_2us();
       
        //-----在第3個下降沿,模擬信號輸入通道選擇(1:通道CH1,0:通道CH0)-----
        CLK=0;
        DIO=1;             //第4個下降沿之前,DI置高,準備接收數(shù)據(jù)
        Delay_2us();
        for(i=0;i<8;i++)          //第4~11共8個下降沿讀數(shù)鋸(MSB->LSB)
        {
                CLK=1;
                Delay_2us();
                CLK=0;
                Delay_2us();
                dat0=dat0<<1|DIO;
        }
        for(i=0;i<8;i++)          //第11~18共8個下降沿讀數(shù)據(jù)(LSB->MSB)
        {
                dat1=dat1|((unsigned char)(DIO)<<i);
                CLK=1;
                Delay_2us();
                CLK=0;
                Delay_2us();
        }
        CS=1;
        return(dat0==dat1)?dat0:0;   //判斷dat0與dat1是否相等
}
       
//        unsigned char temp0,temp1,i;
//        CS=0;
//        temp0=0;
//        temp1=0;
//        _nop_();
//        _nop_();
//        DI=1;//開始位
//        _nop_();
//        _nop_();
//        CLK=1;
//        _nop_();
//        _nop_();
//        CLK=0;
//        _nop_();
//        _nop_();
//        DI=0;
//        _nop_();
//        _nop_();
////選擇通道0
//        DI=1;
//        _nop_();
//        CLK=1;//上升沿DI=1
//        _nop_();
//        CLK=0;//1個下降沿DI=1
//        _nop_();
//        DI=0;
//        _nop_();
//        CLK=1;
//        _nop_();
//        CLK=0;//第3個上升沿DI=0
//        _nop_();
//           DI=1;
////********通道選擇結束開始讀取轉換后的二進制數(shù)****
////下降沿讀數(shù),一下進行判斷和處理,共8次
//for(i=0;i<8;i++)
//   {
//        temp0=temp0<<1;
//        CLK=1;
//    if(DO)
//           temp0++;
//           _nop_();
//           CLK=0;
//   }
//for(i=0;i<8;i++)
//   {
//        temp1=temp1>>1;
//        CLK=1;
//    if(DO)
//           temp1=temp1 +0x80;
//           _nop_();
//           CLK=0;
//   }
//         CS=1;
//   return temp0;
//}

void delay(unsigned int i)//延時
{
        unsigned char j;
        for(j=0;j<i;j++);
}

void main()
{
        P1M0=0xFF;
        P1M1=0x00;
        P3M0=0x00;
        P3M1=0x00;
        P5M0=0x10;
        P5M1=0x00;
        led1=1;led2=1;led3=1;
        TMOD|=0X01;
        TH0=0X3C;
        TL0=0XB0;       
        ET0=1;//打開定時器0中斷允許
        EA=1;//打開總中斷
        TR0=1;//打開定時器
        while(1)
        {
                //顯示
//                P0=smgduan[light/10];//光照
//                smg1=0;
//                delay(100);
//                smg1=1;
//                P0=smgduan[light%10];
//                smg2=0;
//                delay(100);
//                smg2=1;
                P1=smgduan[light/10];//光照
                smg1=0;
                delay(100);
                smg1=1;
                P1=smgduan[light%10];
                smg2=0;
                delay(100);
                smg2=1;
                //停止報警
//                if(!k1)
//                {
//                        flag=1;
//                        beep=1;
//                }
        }
}
//定時器0中斷
void Timer0() interrupt 1
{
        unsigned int i;
        if(time<10)//0.5s
                time++;
        else
        {
                time=0;
                i=ADC_read_data(0);
                light=i*60/256;
                //判斷
                if((light>50)&&(flag==0))//強
                {
                lamp=1;
                        led1=0;led2=1;led3=1;
                }                       
                if((light<51)&&(light>20))//中
                {
                        led1=1;led2=0;led3=1;
                        //beep=1;
                        lamp=1;
                        flag=0;
                }
                if(light<21)//弱
                {
                        led1=1;led2=1;led3=0;
                        //beep=1;
                        lamp=0;
                        flag=0;
                }       
        }
        TH0=0X3C;
        TL0=0XB0;
}
回復

使用道具 舉報

地板
ID:278457 發(fā)表于 2025-11-29 03:06 | 只看該作者
謝謝分享。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表