標(biāo)題:
C51單片機+ADC0832聲光控制電路原理圖+源碼
[打印本頁]
作者:
kevena
時間:
2018-12-3 18:06
標(biāo)題:
C51單片機+ADC0832聲光控制電路原理圖+源碼
使用Proteus 8 Professional/Keil uVision5。
單片機源程序如下:
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//ADC0832引腳定義
sbit CS = P1^4;
sbit CLK = P1^5;
sbit DIO = P1^6;
sbit External_Opto = P1^3;//外部光控制
sbit Lamp = P2^0;//燈光控制
sbit K1 = P3^7;//外部聲音模擬控制
//延時
void DelayMS(uint x)
{
uchar t;
while(x--) for(t = 0;t<120;t++);
}
//獲取A/D轉(zhuǎn)換結(jié)果(0通道)
uchar Get_AD_Result()
{
uchar i,dat1 = 0,dat2 = 0;
//起始控制位
CS = 0;
CLK = 0;
DIO = 1; _nop_(); _nop_();
CLK = 1; _nop_(); _nop_();
//第一個下降沿之前,設(shè)DI=1/0
//選擇單端/差分(SGL/DIF)模式中的單端輸入模式
CLK = 0; DIO = 1; _nop_(); _nop_();
CLK = 1; _nop_(); _nop_();
//第二個下降沿之前,設(shè)DI=1/0,選擇CH0/CH1
CLK = 0; DIO = 0; _nop_(); _nop_();
CLK = 1; DIO = 1; _nop_(); _nop_();
//第三個下降沿之前,設(shè)DI=1
CLK = 0; DIO = 1; _nop_(); _nop_();
//第4~11,共八個下降沿讀數(shù)據(jù)(MSB->LSB)
for(i = 0;i < 8; i++)
{
CLK = 1; _nop_(); _nop_();
CLK =0; _nop_(); _nop_();
dat1 = dat1 << 1 |DIO;
}
//第11~18,共八個下降沿讀數(shù)據(jù)(LSB->MSB)
for(i = 0;i < 8; i++)
{
dat2 = dat2 | ( (uchar) (DIO) << i );
CLK = 1; _nop_(); _nop_();
CLK = 0; _nop_(); _nop_();
}
CS = 1;
//如果MSB->LSB和LSB->MSB讀取的結(jié)果相同,則返回讀取的結(jié)果,否則返回0
return (dat1 == dat2) ? dat1 : 0;
}
//主程序
void main()
{
Lamp = 0;
while(1)
{
//出現(xiàn)聲音但沒有光照時照明設(shè)備點亮后延時關(guān)閉
if ( K1 == 0 && External_Opto!= 0)
{
while (K1 == 0);
Lamp = 1;
DelayMS(100);
//延時時間由模數(shù)轉(zhuǎn)換結(jié)果決定
DelayMS(30 * Get_AD_Result());
DelayMS(100);
Lamp = 0;
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
照明控制.rar
(14.29 KB, 下載次數(shù): 55)
2018-12-3 18:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2018-12-3 18:10
補全仿真工程詳細(xì)說明一下電路連接即可獲得100+黑幣
作者:
尼克尼克
時間:
2020-7-4 10:15
不給電路圖算是個什么行為????????
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1