光控灯(强中弱)
1.光线很弱时开灯
2.光线很强时启动蜂鸣器,通过按钮可以关闭蜂鸣器
3.光线正常时关灯和关闭蜂鸣器
仿真原理图:
原理图:
#include "reg51.h"
#include "intrins.h"
sbit smg1=P2^0; //数码管 位选
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; //时钟,初始状态为0
sbit DI= P1^6; //数据输入
sbit DO= P1^7; //数据输出
sbit CS= P1^4; //片选使能,低电平芯片使能
unsigned char code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//共阴极0-9,code 代表的是 把定义的数据表存储到 flash存储器中//
unsigned char light=0; //光照
unsigned char time=0,flag=0;
/*********************************************
读取ADC,将模拟信号转化成数字信号
**********************************************/
unsigned char ADC() //通道ch0
{
unsigned char temp0,temp1,i;
CS=1; //一个转换周期开始
CLK=0; //为第一个脉冲做准备
_nop_();
_nop_(); //空操作两个机械周期
CS=0; //片选使能,低电平芯片使能,芯片开始工作
temp0=0;
temp1=0;
_nop_();
_nop_();
DI=1; //开始位,开始转换
_nop_();
_nop_();
CLK=1; //第一个脉冲
_nop_();