资源简介
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图
- 下一篇:.光波分复用技术的原理
评论
共有 条评论