導航:首頁 > 操作系統 > 光敏電阻51單片機

光敏電阻51單片機

發布時間:2022-08-06 12:36:06

❶ 基於51單片機,ADC0804,光敏電阻,濕度感測器,求程序!!!!

#include<reg51.h>

#define uchar unsigned char
#define uint unsigned int

sbit DQ=P3^7;//ds18b20與單片機連介面
sbit RS=P3^0;
sbit RW=P3^1;
sbit EN=P3^2;

unsigned char code str1[]={"temperature: "};
unsigned char code str2[]={" "};

uchar data disdata[5];
uint tvalue;//溫度值
uchar tflag;//溫度正負標志

/*************************lcd1602程序**************************/
void delay1ms(unsigned int ms)//延時1毫秒(不夠精確的)
{unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<100;j++);
}

void wr_com(unsigned char com)//寫指令//
{ delay1ms(1);
RS=0;
RW=0;
EN=0;
P2=com;
delay1ms(1);
EN=1;
delay1ms(1);
EN=0;
}

void wr_dat(unsigned char dat)//寫數據//
{ delay1ms(1);;
RS=1;
RW=0;
EN=0;
P2=dat;
delay1ms(1);
EN=1;
delay1ms(1);
EN=0;
}

void lcd_init()//初始化設置//
{delay1ms(15);
wr_com(0x38);delay1ms(5);
wr_com(0x08);delay1ms(5);
wr_com(0x01);delay1ms(5);
wr_com(0x06);delay1ms(5);
wr_com(0x0c);delay1ms(5);
}

void display(unsigned char *p)//顯示//
{
while(*p!='\0')
{
wr_dat(*p);
p++;
delay1ms(1);
}
}

init_play()//初始化顯示
{ lcd_init();
wr_com(0x80);
display(str1);
wr_com(0xc0);
display(str2);
}

/******************************ds1820程序***************************************/
void delay_18B20(unsigned int i)//延時1微秒
{
while(i--);
}

void ds1820rst()/*ds1820復位*/
{ unsigned char x=0;
DQ = 1; //DQ復位
delay_18B20(4); //延時
DQ = 0; //DQ拉低
delay_18B20(100); //精確延時大於480us
DQ = 1; //拉高
delay_18B20(40);
}

uchar ds1820rd()/*讀數據*/
{ unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{ DQ = 0; //給脈沖信號
dat>>=1;
DQ = 1; //給脈沖信號
if(DQ)
dat|=0x80;
delay_18B20(10);
}
return(dat);
}

void ds1820wr(uchar wdata)/*寫數據*/
{unsigned char i=0;
for (i=8; i>0; i--)
{ DQ = 0;
DQ = wdata&0x01;
delay_18B20(10);
DQ = 1;
wdata>>=1;
}
}

read_temp()/*讀取溫度值並轉換*/
{uchar a,b;
ds1820rst();
ds1820wr(0xcc);//*跳過讀序列號*/
ds1820wr(0x44);//*啟動溫度轉換*/
ds1820rst();
ds1820wr(0xcc);//*跳過讀序列號*/
ds1820wr(0xbe);//*讀取溫度*/
a=ds1820rd();
b=ds1820rd();
tvalue=b;
tvalue<<=8;
tvalue=tvalue|a;
if(tvalue<0x0fff)
tflag=0;
else
{tvalue=~tvalue+1;
tflag=1;
}
tvalue=tvalue*(0.625);//溫度值擴大10倍,精確到1位小數
return(tvalue);
}

/*******************************************************************/
void ds1820disp()//溫度值顯示
{ uchar flagdat;
disdata[0]=tvalue/1000+0x30;//百位數
disdata[1]=tvalue%1000/100+0x30;//十位數
disdata[2]=tvalue%100/10+0x30;//個位數
disdata[3]=tvalue%10+0x30;//小數位

if(tflag==0)
flagdat=0x20;//正溫度不顯示符號
else
flagdat=0x2d;//負溫度顯示負號:-

if(disdata[0]==0x30)
{disdata[0]=0x20;//如果百位為0,不顯示
if(disdata[1]==0x30)
{disdata[1]=0x20;//如果百位為0,十位為0也不顯示
}
}

wr_com(0xc0);
wr_dat(flagdat);//顯示符號位
wr_com(0xc1);
wr_dat(disdata[0]);//顯示百位
wr_com(0xc2);
wr_dat(disdata[1]);//顯示十位
wr_com(0xc3);
wr_dat(disdata[2]);//顯示個位
wr_com(0xc4);
wr_dat(0x2e);//顯示小數點
wr_com(0xc5);
wr_dat(disdata[3]);//顯示小數位
}
/********************主程序***********************************/
void main()
{ init_play();//初始化顯示
while(1)
{read_temp();//讀取溫度
ds1820disp();//顯示
}
}

這個是測溫度的(18b20),你可以參考一下啊!!!!

❷ 光敏電阻模塊怎麼與51單片機連接

一般用兩種方法:
一:使用AD檢測,最簡單的就是光敏電阻串聯一個電阻進行分壓,中間的電壓用單片機的AD進行檢測(當然這只是最簡單的一種),這種方法主要是用來檢測光照強度的。
二:光敏電阻串聯一個電阻進行分壓,然後使用運放搭建電壓比較器,比較器的輸出接單片機(建議使用遲滯比較器),這種方法主要用來做開關。

❸ 51單片機protues 怎麼通過光敏電阻LDR和ADC0808採集光照強度 有代碼最好

模擬溫度可調控制:用熱敏電阻做成比較器輸出0
1電平給單片機io即可
數字溫度可調控制:找到熱敏電阻的
溫度—阻值
曲線圖,加入激勵電源,通過ad采樣並換算或查表得出ad值和溫度值的關系再進行處理

❹ 光敏感測器如何將信號給51單片機

光敏感測器也有很多種。最常見的是光敏電阻,光照強度不同,阻值不一樣。它和一個定值電阻接成分壓式就能指示光照強度。如果你的單片機帶AD直接采電壓值再比較一下就行,沒有的話就要外部放一個比較器連到IO上

❺ 光敏電阻與51單片機連接,測量光敏電阻的數據,用到那些元器件連接,有圖最好的

總的需要這些東西:帶有AD功能的51單片機(或普通51和AD晶元),光敏電阻,普通電阻;
光敏電阻(最大阻值20K)與普通電阻(20K精度越大,測量誤差越小)串聯:VCC接光敏電阻再接普通電阻,然後接地,單片機AD口接光敏電阻與普通電阻直接,AD測得實時AD值為V1。
演算法如下V1=(R/(R(光敏)+R))VC)
所以R(光敏)=R(VCC/V1-1);

❻ 51單片機與光敏電阻怎樣連接的

單片機是數字器件,而光敏電阻是線性被動器件,它們之間無法直接連接,必須通過AD轉換器件(如AD0809)來連接。

❼ 光敏電阻與51單片機連接的電路圖怎麼畫

首先,光敏電阻是一個阻值會變化的電阻,阻值用R表示。
其次,51單片機是一塊數/模混合的集成電路晶元,它的I/O口大部分都是只識別"0"(電壓在零點幾伏特這樣)和"1"(電壓在2.7~5.5V這樣)邏輯電平的。有一些51單片機自帶有ADC(模擬/數字轉換晶元),寫入程序後,可以將模擬的電壓U轉換成數字的值。
所以,你要搞清楚你到底想要做什麼。
如果只是簡單的讀取有光、無光。那麼可以將光敏電阻接在電壓比較器(不懂就去翻模電集成運算放大器那章)上,然後將輸出接在單片機的任意I/O,它會反映出來0/1的變化。
如果要讀出精確的阻值,那麼就需要加入ADC(單片機自帶ADC的話,就要用程序去啟動它;沒有自帶ADC,就要自己搭ADC電路)了。將一個恆流源(電流值為I)通過光敏電阻,這時候電阻兩端反映的是電壓的變化(歐姆定律:U=RI),這個電壓還要控制在0~5V(當然也要看ADC的輸入模擬電壓范圍)。然後把光敏電阻搭在惠斯通電橋里,將反映電壓變化的兩端接到差分放大器兩個輸入端,放大器輸出端給ADC的AIN(模擬輸入埠)。再用單片機控制ADC進行模擬到數字的轉換,出來的值為二進制值。還要將該值轉換為電壓,進而轉換為阻值。

❽ 老師好,我有一個四線制的光敏電阻,能教教我怎麼接線51單片機嗎

光敏的型號,光敏的圖片

閱讀全文

與光敏電阻51單片機相關的資料

熱點內容
做什麼app賺錢 瀏覽:83
博途編譯失敗聯系客戶支持部門 瀏覽:926
金蝶旗艦版編譯 瀏覽:50
萬象伺服器斷電後啟動不了怎麼辦 瀏覽:356
我的世界蘋果版的2b2t伺服器地址咋查 瀏覽:95
xlsx轉換pdf 瀏覽:98
3dmax擠出命令英語 瀏覽:903
靶心率的定義和演算法 瀏覽:514
3d模術師app哪裡下載 瀏覽:474
php中文api文檔 瀏覽:458
安卓設計怎麼加入輸入框 瀏覽:185
主根伺服器什麼時候開始 瀏覽:738
奇門遁甲完整版pdf 瀏覽:903
app軟體怎麼用的 瀏覽:802
電子書pdf購買 瀏覽:194
浪潮伺服器如何做系統 瀏覽:111
冒險島img格式加密 瀏覽:596
我的世界手游如何復制命令 瀏覽:659
天刀自動彈琴腳本源碼 瀏覽:971
打開其它app微信怎麼收不到 瀏覽:447