資源簡介
51單片機:藍橋杯省賽自動售水機分析與完整設(shè)計,含有完整的注釋和思路,時序什么的測試都沒有問題!

代碼片段和文件信息
/*
??程序說明:?IIC總線驅(qū)動程序
??軟件環(huán)境:?Keil?uVision?4.10?
??硬件環(huán)境:?CT107單片機綜合實訓平臺?8051,12MHz
??日????期:?2011-8-9
*/
#include?“reg52.h“
#include?“iic.h“
#include?“intrins.h“
#define?DELAY_TIME?5
#define?SlaveAddrW?0xA0
#define?SlaveAddrR?0xA1
//總線引腳定義
sbit?SDA?=?P2^1;??/*?數(shù)據(jù)線?*/
sbit?SCL?=?P2^0;??/*?時鐘線?*/
void?IIC_Delay(unsigned?char?i)
{
????do{_nop_();}
????while(i--);????????
}
//總線啟動條件
void?IIC_Start(void)
{
????SDA?=?1;
????SCL?=?1;
????IIC_Delay(DELAY_TIME);
????SDA?=?0;
????IIC_Delay(DELAY_TIME);
????SCL?=?0;
}
//總線停止條件
void?IIC_Stop(void)
{
????SDA?=?0;
????SCL?=?1;
????IIC_Delay(DELAY_TIME);
????SDA?=?1;
????IIC_Delay(DELAY_TIME);
}
//發(fā)送應答
void?IIC_SendAck(bit?ackbit)
{
????SCL?=?0;
????SDA?=?ackbit;?? //?0:應答,1:非應答
????IIC_Delay(DELAY_TIME);
????SCL?=?1;
????IIC_Delay(DELAY_TIME);
????SCL?=?0;?
????SDA?=?1;
????IIC_Delay(DELAY_TIME);
}
//等待應答
bit?IIC_WaitAck(void)
{
????bit?ackbit;
????SCL??=?1;
????IIC_Delay(DELAY_TIME);
????ackbit?=?SDA;
????SCL?=?0;
????IIC_Delay(DELAY_TIME);
????return?ackbit;
}
//通過I2C總線發(fā)送數(shù)據(jù)
void?IIC_SendByte(unsigned?char?byt)
{
????unsigned?char?i;
????for(i=0;?i<8;?i++)
????{
????????SCL??=?0;
????????IIC_Delay(DELAY_TIME);
????????if(byt?&?0x80)?SDA??=?1;
????????else?SDA??=?0;
????????IIC_Delay(DELAY_TIME);
????????SCL?=?1;
????????byt?<<=?1;
????????IIC_Delay(DELAY_TIME);
????}
????SCL??=?0;??
}
//從I2C總線上接收數(shù)據(jù)
unsigned?char?IIC_RecByte(void)
{
????unsigned?char?i?da;
????for(i=0;?i<8;?i++)
????{???
???? SCL?=?1;
IIC_Delay(DELAY_TIME);
da?<<=?1;
if(SDA)?da?|=?1;
SCL?=?0;
IIC_Delay(DELAY_TIME);
????}
????return?da;????
}
uchar?read_24c02(uchar?add)
{
uchar?temp;
EA=0;
IIC_Start();
IIC_SendByte(0xa0);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_Start();
IIC_SendByte(0xa1);
IIC_WaitAck();
temp=IIC_RecByte();
IIC_WaitAck();
IIC_Stop();
EA=1;
return?temp;
}
void?write_24c02(uchar?adduchar?date)
{
EA=0;
IIC_Start();
IIC_SendByte(0xa0);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_SendByte(date);
IIC_WaitAck();
IIC_Stop();
EA=1;
}
uchar?read_adc(uchar?add)
{
uchar?temp;?
EA=0;
IIC_Start();
IIC_SendByte(0x90);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_Start();
IIC_SendByte(0x91);
IIC_WaitAck();
temp=IIC_RecByte();
IIC_WaitAck();
IIC_Stop();
EA=1;
return?temp;
}
void?write_adc(uchar?add)
{
IIC_Start();
IIC_SendByte(0x90);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_Stop();
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????547003??2019-09-08?21:14??自動售水機2012.pdf
?????文件???????2700??2019-03-22?21:50??project\iic.c
?????文件????????382??2019-03-22?22:00??project\iic.h
?????文件???????6555??2019-09-09?23:09??project\iic.LST
?????文件???????9696??2019-09-09?23:09??project\iic.OBJ
?????文件???????5002??2019-09-10?00:53??project\main.c
?????文件??????12011??2019-09-09?23:09??project\main.LST
?????文件??????14908??2019-09-09?23:09??project\main.OBJ
?????文件??????21635??2019-09-09?23:09??project\project
?????文件???????4979??2019-09-09?23:09??project\project.hex
?????文件?????????71??2019-09-09?23:09??project\project.lnp
?????文件??????24054??2019-09-09?23:09??project\project.M51
?????文件???????3339??2019-09-09?23:10??project\project.plg
????.......?????56857??2019-09-10?00:53??project\project.uvopt
????.......?????13593??2019-09-08?14:22??project\project.uvproj
????.......?????56860??2019-09-10?00:53??project\project_uvopt.bak
????.......?????13433??2019-09-08?13:23??project\project_uvproj.bak
?????文件???????6376??2009-05-07?14:37??project\STARTUP.A51
?????文件??????14048??2019-09-09?23:09??project\STARTUP.LST
?????文件????????749??2019-09-09?23:09??project\STARTUP.OBJ
?????目錄??????????0??2019-09-10?00:53??project
-----------?---------??----------?-----??----
???????????????814251????????????????????21
評論
共有 條評論