資源簡介
LOW-VOLTAGE 8-BIT I2C AND SMBus I/O EXPANDER
4X4鍵盤I2C擴展芯片的底層驅動
代碼片段和文件信息
//面是基于STC系列單片機的TCA6408驅動程序,該程序的硬件是基于電壓Vcc1為5.0V,Vccp為5V;編譯環境為KEIL?C,已調試成功。
//=====================================================================
//????????????????????AD7841?AD轉換驅動程序
//硬件連接:?SDA?——P3^2;???
//??????????SCL?——P3^3;????
//??????????ADDR?——?+5V;
//??????????RESET?——?+5V;???????
//??????????Vcc1?--邏輯電源(+5V)
// Vccp?--為P0-P7端口供電
//??????????GND?--GND(0V)?
// ?2014.2.19完成于合肥工業大學逸夫樓1020;適用于weight?scale(防爆板)?V5.0
//???????通過掃描P0-P7的值來判斷那個鍵被按下
//注意:相對v4.1電路,4個通道加入了SMBJ16CA瞬態抑制二極管能防止AD被瞬態高壓損壞。
//軟件版本號:V1.0
//=====================================================================
#include?
unsigned?char?data?dataz[2];
void?Start(void)
{
??? Sda=1;
??? _nop_();_nop_();
??? Scl=1;
??? _nop_();_nop_();_nop_();_nop_();_nop_();
??? Sda=0;
??? _nop_();_nop_();_nop_();_nop_();_nop_();
??? Scl=0;
}
void?Stop(void)
{
??? Sda=0;
??? _nop_();_nop_();
??? Scl=1;
??? _nop_();_nop_();_nop_();_nop_();_nop_();
??? Sda=1;
??? _nop_();_nop_();_nop_();_nop_();_nop_();
??? Scl=0;
}
void?WaitAck(void)
{
unsigned?char?flag=0;
????Sda=1;
_nop_();_nop_();_nop_();
Scl=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
if(Sda==0)?flag=1;
Scl=0;
_nop_();_nop_();
}
void?Ack(void)
{
????Sda=0;
_nop_();_nop_();_nop_();
Scl=1; ??????????????//在scl為高時,sda為0
_nop_();_nop_();_nop_();_nop_();_nop_();
Scl=0;
_nop_();_nop_();
Sda=1;
}
void?NoAck(void)
{
Sda=1;
_nop_();_nop_();_nop_();
Scl=1; ????????????//在scl為高時?sda為1
_nop_();_nop_();_nop_();_nop_();_nop_();
Scl=0;
_nop_();_nop_();_nop_();
Sda=0;
}?
void?Send(unsigned?char?Data)
{?
unsigned?char?BitCounter=8;
unsigned?char?temp;
do
{
temp=Data;
Scl=0;
_nop_();_nop_();_nop_();_nop_();_nop_();
if((temp&0x80)==0x80)
????Sda=1;
else
??? Sda=0;
Scl=1;
temp=Data<<1;
Data=temp;
BitCounter--;
}
while(BitCounter);
Scl=0;
}
unsigned?char?Read(void)
{
unsigned?char?temp=0;
unsigned?char?temp1=0;
unsigned?char?BitCounter=8;
Sda=1;
do
{
Scl=0;
???????? _nop_();_nop_();_nop_();_nop_();_nop_();
Scl=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
if(Sda)
?????temp=temp|0x01;
else
?????tem
- 上一篇:列車售票系統E-R圖
- 下一篇:.光波分復用技術的原理
評論
共有 條評論