資源簡(jiǎn)介
51單片機(jī)光敏電阻尋光程序,測(cè)試可用,可用數(shù)碼管顯示電阻值大小

代碼片段和文件信息
/*************************此部分為I2C總線的驅(qū)動(dòng)程序*************************************/
#include
#include?
#include?
#define??NOP()???_nop_()???/*?定義空指令?*/
#define??_Nop()??_nop_()???/*定義空指令*/
?
sbit?????SCL=P2^1;???????//I2C??時(shí)鐘?
sbit?????SDA=P2^0;???????//I2C??數(shù)據(jù)?
bit?ack;?????????????????/*應(yīng)答標(biāo)志位*/
???
/*******************************************************************
?????????????????????起動(dòng)總線函數(shù)???????????????
函數(shù)原型:?void??Start_I2c();??
功能:?????啟動(dòng)I2C總線即發(fā)送I2C起始條件.??
********************************************************************/
void?Start_I2c()
{
??SDA=1;?????????/*發(fā)送起始條件的數(shù)據(jù)信號(hào)*/
??_Nop();
??SCL=1;
??_Nop();????????/*起始條件建立時(shí)間大于4.7us延時(shí)*/
??_Nop();
??_Nop();
??_Nop();
??_Nop();????
??SDA=0;?????????/*發(fā)送起始信號(hào)*/
??_Nop();????????/*?起始條件鎖定時(shí)間大于4μs*/
??_Nop();
??_Nop();
??_Nop();
??_Nop();???????
??SCL=0;???????/*鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù)?*/
??_Nop();
??_Nop();
}
/*******************************************************************
??????????????????????結(jié)束總線函數(shù)???????????????
函數(shù)原型:?void??Stop_I2c();??
功能:?????結(jié)束I2C總線即發(fā)送I2C結(jié)束條件.??
********************************************************************/
void?Stop_I2c()
{
??SDA=0;??????/*發(fā)送結(jié)束條件的數(shù)據(jù)信號(hào)*/
??_Nop();???????/*發(fā)送結(jié)束條件的時(shí)鐘信號(hào)*/
??SCL=1;??????/*結(jié)束條件建立時(shí)間大于4μs*/
??_Nop();
??_Nop();
??_Nop();
??_Nop();
??_Nop();
??SDA=1;??????/*發(fā)送I2C總線結(jié)束信號(hào)*/
??_Nop();
??_Nop();
??_Nop();
??_Nop();
}
/*******************************************************************
?????????????????字節(jié)數(shù)據(jù)發(fā)送函數(shù)???????????????
函數(shù)原型:?void??SendByte(UCHAR?c);
功能:?????將數(shù)據(jù)c發(fā)送出去可以是地址也可以是數(shù)據(jù)發(fā)完后等待應(yīng)答并對(duì)
??????????此狀態(tài)位進(jìn)行操作.(不應(yīng)答或非應(yīng)答都使ack=0)?????
???????????發(fā)送數(shù)據(jù)正常,ack=1;?ack=0表示被控器無應(yīng)答或損壞。
********************************************************************/
void??SendByte(unsigned?char??c)
{
?unsigned?char??BitCnt;
?
?for(BitCnt=0;BitCnt<8;BitCnt++)??/*要傳送的數(shù)據(jù)長(zhǎng)度為8位*/
????{
?????if((c< ???????else??SDA=0;????????????????
?????_Nop();
?????SCL=1;???????????????/*置時(shí)鐘線為高,通知被控器開始接收數(shù)據(jù)位*/
??????_Nop();?
??????_Nop();?????????????/*保證時(shí)鐘高電平周期大于4μs*/
??????_Nop();
??????_Nop();
??????_Nop();?????????
?????SCL=0;?
????}
????
????_Nop();
????_Nop();
????SDA=1;????????????????/*8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位*/
????_Nop();
????_Nop();???
????SCL=1;
????_Nop();
????_Nop();
????_Nop();
????if(SDA==1)ack=0;?????
???????else?ack=1;????????/*判斷是否接收到應(yīng)答信號(hào)*/
????SCL=0;
????_Nop();
????_Nop();
}
/*******************************************************************
?????????????????字節(jié)數(shù)據(jù)接收函數(shù)???????????????
函數(shù)原型:?UCHAR??RcvByte();
功能:????????用來接收從器件傳來的數(shù)據(jù)并判斷總線錯(cuò)誤(不發(fā)應(yīng)答信號(hào)),
??????????發(fā)完后請(qǐng)用應(yīng)答函數(shù)應(yīng)答從機(jī)。??
********************************************************************/????
unsigned?char???RcvByte()
{
??unsigned?char??retc;
??unsigned?char??BitCnt;
??
??retc=0;?
??SDA=1;?????????????????????/*置數(shù)據(jù)線為輸入方式*/
??for(BitCnt=0;BitCnt<8;BitCnt++)
??????{
????????_Nop();???????????
????????SCL=0;??????????????????/*置時(shí)鐘線為低,準(zhǔn)備接收數(shù)據(jù)
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????14702??2012-12-05?12:15??光敏(最終)\AD轉(zhuǎn)換
?????文件???????3052??2012-12-05?12:15??光敏(最終)\AD轉(zhuǎn)換.hex
?????文件?????????71??2012-12-05?12:15??光敏(最終)\AD轉(zhuǎn)換.lnp
?????文件??????16307??2012-12-05?12:15??光敏(最終)\AD轉(zhuǎn)換.M51
?????文件???????1106??2012-12-05?13:21??光敏(最終)\AD轉(zhuǎn)換.Opt
?????文件????????205??2012-12-06?12:54??光敏(最終)\AD轉(zhuǎn)換.plg
?????文件???????2198??2012-10-31?23:53??光敏(最終)\AD轉(zhuǎn)換.Uv2
?????文件???????1369??2012-12-05?12:55??光敏(最終)\AD轉(zhuǎn)換_Opt.Bak
?????文件???????2092??2009-06-05?00:01??光敏(最終)\AD轉(zhuǎn)換_Uv2.Bak
?????文件???????3878??2012-11-03?07:36??光敏(最終)\DA-AD.C
?????文件???????7240??2012-11-03?07:36??光敏(最終)\DA-AD.LST
?????文件???????8227??2012-11-03?07:36??光敏(最終)\DA-AD.OBJ
?????文件?????????35??2012-11-03?07:36??光敏(最終)\DA-AD.__i
?????文件???????4471??2011-03-28?15:40??光敏(最終)\I2C.c
?????文件????????548??2010-06-15?16:10??光敏(最終)\I2C.H
?????文件???????7920??2012-11-01?20:37??光敏(最終)\I2C.LST
?????文件???????7982??2012-11-01?20:37??光敏(最終)\I2C.OBJ
?????文件?????????33??2012-11-01?20:37??光敏(最終)\I2C.__i
?????文件????????907??2008-09-14?21:22??光敏(最終)\main.LST
?????文件????????563??2008-09-14?21:22??光敏(最終)\main.OBJ
?????文件???????5115??2002-04-16?14:32??光敏(最終)\STARTUP.A51
?????文件??????11665??2011-09-29?11:14??光敏(最終)\STARTUP.LST
?????文件????????749??2011-09-29?11:14??光敏(最終)\STARTUP.OBJ
?????文件??????15985??2012-12-07?16:21??尋光\AD轉(zhuǎn)換
?????文件???????2115??2012-12-07?16:21??尋光\AD轉(zhuǎn)換.hex
?????文件?????????71??2012-12-07?16:21??尋光\AD轉(zhuǎn)換.lnp
?????文件??????20130??2012-12-07?16:21??尋光\AD轉(zhuǎn)換.M51
?????文件???????1238??2012-12-07?17:18??尋光\AD轉(zhuǎn)換.Opt
?????文件????????199??2012-12-07?17:18??尋光\AD轉(zhuǎn)換.plg
?????文件???????2198??2012-10-31?23:53??尋光\AD轉(zhuǎn)換.Uv2
............此處省略21個(gè)文件信息
評(píng)論
共有 條評(píng)論