光控?zé)簦◤?qiáng)中弱)
1.光線很弱時開燈
2.光線很強(qiáng)時啟動蜂鳴器,通過按鈕可以關(guān)閉蜂鳴器
3.光線正常時關(guān)燈和關(guān)閉蜂鳴器
仿真原理圖:
原理圖:
#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 DI=?? ?P1^6; ? ?//數(shù)據(jù)輸入
sbit DO=?? ?P1^7; ? ?//數(shù)據(jù)輸出
sbit CS=?? ?P1^4; ?? ? //片選使能,低電平芯片使能
unsigned char code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//共陰極0-9,code 代表的是 把定義的數(shù)據(jù)表存儲到 flash存儲器中//
unsigned char light=0; ? ?//光照
unsigned char time=0,flag=0;
/*********************************************
讀取ADC,將模擬信號轉(zhuǎn)化成數(shù)字信號
**********************************************/
unsigned char ADC() ?//通道ch0
{
unsigned char temp0,temp1,i;
CS=1;?? ? ?//一個轉(zhuǎn)換周期開始
CLK=0;?? ? ?//為第一個脈沖做準(zhǔn)備
_nop_();
_nop_(); ?//空操作兩個機(jī)械周期
CS=0;?? ? ?//片選使能,低電平芯片使能,芯片開始工作
temp0=0;
temp1=0;
_nop_();
_nop_();
DI=1; ? ? //開始位,開始轉(zhuǎn)換
_nop_();
_nop_();
CLK=1;?? ? ?//第一個脈沖
_nop_();