找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1410|回复: 1
收起左侧

想要实现随外界环境改变台灯亮度,单片机代码该如何改?

[复制链接]
ID:407566 发表于 2019-1-4 23:24 | 显示全部楼层 |阅读模式
主控芯片STC89C51,然后用ADC0832进行信息采集,但后面不知道该怎么做?想要根据外界光的强度把灯分成亮 一般亮 灭,这是代码,不知道该怎么弄
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define delay4us() {_nop_();_nop_();_nop_();_nop_();}
sbit CS  = P1^0;
sbit CLK = P1^1;
sbit DIO = P1^2;

sbit PWM = P1^4;
void DelayMS(uint ms)
{
         uchar i;
        while(ms--)
        {
                 for(i=0;i<120;i++);
        }
}
uchar Get_AD_Result()
{
         uchar i,dat1=0,dat2=0;
        CS  = 0;
        CLK = 0;
        DIO = 1; _nop_(); _nop_();
        CLK = 1; _nop_(); _nop_();
        CLK = 0;DIO = 1; _nop_(); _nop_();
        CLK = 1; _nop_(); _nop_();
        CLK = 0;DIO = 1; _nop_(); _nop_();
        CLK = 1;DIO = 1; _nop_(); _nop_();
        CLK = 0;DIO = 1; _nop_(); _nop_();
        for(i=0;i<8;i++)
        {
                 CLK = 1; _nop_(); _nop_();
                CLK = 0; _nop_(); _nop_();
                dat1 = dat1 << 1 | DIO;        
        }
        for(i=0;i<8;i++)
        {
                 dat2 = dat2 << ((uchar)(DIO)<<i);
                CLK = 1; _nop_(); _nop_();
                CLK = 0; _nop_(); _nop_();
        }
        CS = 1;
        return (dat1 == dat2) ? dat1:0;
}
void main()
{
         
        while(1)
        {        
                 PWM = Get_AD_Result()*/255;
        

                }
}


回复

使用道具 举报

ID:308437 发表于 2019-1-5 20:44 | 显示全部楼层
给你思路:
当检测到环境变暗,就增到输出的占空比。从而实现亮度的增加
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表