資源簡介
基于51單片機的光控模塊
有原理圖、PCB文件、仿真文件,下載即用
自用已驗證

代碼片段和文件信息
#include?
#include?
#define?uchar?unsigned?char //?以后unsigned?char就可以用uchar代替
#define?uint??unsigned?int //?以后unsigned?int?就可以用uint?代替
sbit?LED?????=?P1^0; //?模式指示燈,亮是自動模式,滅是手動模式
sbit?Lamp????=?P1^4;? //?臺燈控制引腳
sbit?Key1????=?P1^1; //?按鍵1,模式切換按鍵
sbit?Key2????=?P1^2;? //?按鍵2,亮度減少按鍵??????
sbit?Key3????=?P1^3; //?按鍵3,亮度增加按鍵
sbit?ADC_CS??=?P2^3;? //?ADC0832的CS引腳
sbit?ADC_CLK?=?P2^0;? //?ADC0832的CLK引腳
sbit?ADC_DAT?=?P2^1;? //?ADC0832的DI/DO引腳
uchar?gCount=0; //?全局計數變量
uchar?gIndex; //?亮度變量,0是最暗,9是最亮,一共10檔
/*********************************************************/
//?毫秒級的延時函數,time是要延時的毫秒數
/*********************************************************/
void?DelayMs(uint?time)
{
uint?ij;
for(i=0;i for(j=0;j<112;j++);
}
/*********************************************************/
//?ADC0832的時鐘脈沖
/*********************************************************/
void?WavePlus()
{
_nop_();
ADC_CLK?=?1;
_nop_();
ADC_CLK?=?0;
}
/*********************************************************/
//?獲取指定通道的A/D轉換結果
/*********************************************************/
uchar?Get_ADC0832()
{?
uchar?i;
uchar?dat1=0;
uchar?dat2=0;
ADC_CLK?=?0; //?電平初始化
ADC_DAT?=?1;
_nop_();
ADC_CS?=?0;
WavePlus(); //?起始信號?
ADC_DAT?=?1;
WavePlus(); //?通道選擇的第一位
ADC_DAT?=?0;??????
WavePlus(); //?通道選擇的第二位
ADC_DAT?=?1;
for(i=0;i<8;i++) //?第一次讀取
{
dat1<<=1;
WavePlus();
if(ADC_DAT)
dat1=dat1|0x01;
else
dat1=dat1|0x00;
}
for(i=0;i<8;i++) //?第二次讀取
{
dat2>>=?1;
if(ADC_DAT)
dat2=dat2|0x80;
else
dat2=dat2|0x00;
WavePlus();
}
_nop_(); //?結束此次傳輸
ADC_DAT?=?1;
ADC_CLK?=?1;
ADC_CS??=?1;???
if(dat1==dat2) //?返回采集結果
return?dat1;
else
return?0;
}?
/*********************************************************/
//?定時器初始化
/*********************************************************/
void?TimerInit()
{
TMOD?=?0x01; //?使用定時器0,工作方式1 ?
TH0??=?252; //?給定時器0的TH0裝初值
TL0??=?24; //?給定時器0的TL0裝初值
ET0??=?1; //?定時器0中斷使能
EA???=?1; //?打開總中斷
TR0 ?=?1; //?啟動定時器0
}
/*********************************************************/
//?手動控制
/*********************************************************/
void?ManualControl()
{
//?亮度減少
if(Key2==0) //?如果按鍵2被按下去
{
if(gIndex>0) //?只要當前亮度不為最低才能減少亮度
{
gIndex--; //?亮度降低一檔
DelayMs(300); //?延時0.3秒
}
}
//?亮度增加
if(Key3==0) //?如果按鍵3被按下去
{
if(gIndex<9) //?只要當前亮度不為最高才能增加亮度
{
gIndex++; //?亮度增加一檔
DelayMs(300); //?延時0.3秒
}
}
}
/*********************************************************/
//?自動控制,根據不同的環境亮度,確定不同的臺燈亮度
/*********************************************************/
void?AutoControl(uchar?num)
{
if(num<59) //?最亮
gIndex=9;
else?if((num>65)&&(num<81)) //?第二亮
gIndex=
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-06-15?17:00??光控\
?????目錄???????????0??2018-06-15?17:01??光控\仿真圖\
?????目錄???????????0??2018-06-15?16:59??光控\仿真圖\仿真\
?????文件??????118722??2016-09-11?12:03??光控\仿真圖\仿真\Last?Loaded?simulation.DBK
?????文件??????118854??2016-09-11?12:05??光控\仿真圖\仿真\simulation.DSN
?????文件?????????873??2018-06-15?16:59??光控\仿真圖\仿真\simulation.pdsprj.紫龍.ACER.workspace
?????文件????????1078??2016-09-11?12:09??光控\仿真圖\仿真\simulation.PWI
?????目錄???????????0??2018-06-15?16:59??光控\仿真圖\截圖\
?????文件??????191856??2016-09-11?12:06??光控\仿真圖\截圖\01、未上電.jpg
?????文件??????192781??2016-09-11?12:05??光控\仿真圖\截圖\02、自動控制.jpg
?????文件??????191687??2016-09-11?12:06??光控\仿真圖\截圖\03、手動控制.jpg
?????目錄???????????0??2018-06-15?17:02??光控\元件清單\
?????文件???????25088??2016-09-10?10:31??光控\元件清單\元件清單.doc
?????目錄???????????0??2018-06-15?17:00??光控\單片機程序\
?????目錄???????????0??2018-06-15?16:59??光控\單片機程序\程序(Keil版)\
?????文件????????5309??2017-01-13?13:34??光控\單片機程序\程序(Keil版)\main.c
?????文件???????10372??2017-01-13?13:34??光控\單片機程序\程序(Keil版)\main.LST
?????文件????????8165??2017-01-13?13:34??光控\單片機程序\程序(Keil版)\main.OBJ
?????文件????????7327??2017-01-13?13:34??光控\單片機程序\程序(Keil版)\project
?????文件????????1733??2017-01-13?13:34??光控\單片機程序\程序(Keil版)\project.hex
?????文件??????????28??2017-01-13?13:34??光控\單片機程序\程序(Keil版)\project.lnp
?????文件???????11002??2017-01-13?13:34??光控\單片機程序\程序(Keil版)\project.M51
?????文件?????????381??2017-01-13?13:34??光控\單片機程序\程序(Keil版)\project.plg
?????文件???????72270??2017-01-13?13:34??光控\單片機程序\程序(Keil版)\project.uvgui.Administrator
?????文件???????72271??2017-01-13?12:38??光控\單片機程序\程序(Keil版)\project.uvgui_Administrator.bak
?????文件????????5375??2017-01-13?13:34??光控\單片機程序\程序(Keil版)\project.uvopt
?????文件???????13413??2016-08-05?16:47??光控\單片機程序\程序(Keil版)\project.uvproj
?????目錄???????????0??2018-06-15?17:01??光控\電路圖(原理圖和PCB圖)\
?????目錄???????????0??2018-06-15?17:00??光控\電路圖(原理圖和PCB圖)\Altium?Designer格式\
?????文件??????577024??2016-09-11?10:18??光控\電路圖(原理圖和PCB圖)\Altium?Designer格式\PCB.PcbDoc
?????文件????????5505??2018-05-27?08:44??光控\電路圖(原理圖和PCB圖)\Altium?Designer格式\PCB.PcbDoc.htm
............此處省略20個文件信息
評論
共有 條評論