ADXL345与89C51和LCD1602显示亲测绝对可用Word格式.docx
- 文档编号:15494242
- 上传时间:2022-11-02
- 格式:DOCX
- 页数:9
- 大小:20.43KB
ADXL345与89C51和LCD1602显示亲测绝对可用Word格式.docx
《ADXL345与89C51和LCD1602显示亲测绝对可用Word格式.docx》由会员分享,可在线阅读,更多相关《ADXL345与89C51和LCD1602显示亲测绝对可用Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
sbitLCM_RW=P2^1;
sbitLCM_EN=P2^2;
//LCD1602命令端口
#define SlaveAddress0xA6 //定义器件在IIC总线中的从地址,根据ALTADDRESS地址引脚不同修改
//ALTADDRESS引脚接地时地址为0xA6,接电源时地址为0x3A
typedefunsignedcharBYTE;
typedefunsignedshortWORD;
BYTEBUF[8];
//接收数据缓存区
ucharge,shi,bai,qian,wan;
//显示变量
intdis_data;
//变量
voiddelay(unsignedintk);
voidInitLcd();
//初始化lcd1602
voidInit_ADXL345(void);
//初始化ADXL345
voidWriteDataLCM(uchardataW);
voidWriteCommandLCM(ucharCMD,ucharAttribc);
voidDisplayOneChar(ucharX,ucharY,ucharDData);
voidconversion(uinttemp_data);
voidSingle_Write_ADXL345(ucharREG_Address,ucharREG_data);
//单个写入数据
ucharSingle_Read_ADXL345(ucharREG_Address);
//单个读取内部寄存器数据
voidMultiple_Read_ADXL345();
//连续的读取内部寄存器数据
//------------------------------------
voidDelay5us();
voidDelay5ms();
voidADXL345_Start();
voidADXL345_Stop();
voidADXL345_SendACK(bitack);
bitADXL345_RecvACK();
voidADXL345_SendByte(BYTEdat);
BYTEADXL345_RecvByte();
voidADXL345_ReadPage();
voidADXL345_WritePage();
//-----------------------------------
//*********************************************************
voidconversion(uinttemp_data)
{
wan=temp_data/10000+0x30;
temp_data=temp_data%10000;
//取余运算
qian=temp_data/1000+0x30;
temp_data=temp_data%1000;
//取余运算
bai=temp_data/100+0x30;
temp_data=temp_data%100;
//取余运算
shi=temp_data/10+0x30;
temp_data=temp_data%10;
//取余运算
ge=temp_data+0x30;
}
/*******************************/
voiddelay(unsignedintk)
{
unsignedinti,j;
for(i=0;
i<
k;
i++)
{
for(j=0;
j<
121;
j++)
{;
}}
voidWaitForEnable(void)
{
DataPort=0xff;
LCM_RS=0;
LCM_RW=1;
_nop_();
LCM_EN=1;
while(DataPort&
0x80);
LCM_EN=0;
}
voidWriteCommandLCM(ucharCMD,ucharAttribc)
if(Attribc)WaitForEnable();
LCM_RW=0;
DataPort=CMD;
voidWriteDataLCM(uchardataW)
WaitForEnable();
LCM_RS=1;
DataPort=dataW;
Delay5us();
}
/***********************************/
voidInitLcd()
{
WriteCommandLCM(0x01,1);
WriteCommandLCM(0x38,1);
WriteCommandLCM(0x08,1);
WriteCommandLCM(0x06,1);
WriteCommandLCM(0x0c,1);
}
voidDisplayOneChar(ucharX,ucharY,ucharDData)
Y&
=1;
X&
=15;
if(Y)X|=0x40;
X|=0x80;
WriteCommandLCM(X,0);
WriteDataLCM(DData);
}
/**************************************
延时5微秒(STC90C52RC@12M)
不同的工作环境,需要调整此函数,注意时钟过快时需要修改
当改用1T的MCU时,请调整此延时函数
**************************************/
voidDelay5us()
_nop_();
延时5毫秒(STC90C52RC@12M)
不同的工作环境,需要调整此函数
voidDelay5ms()
WORDn=560;
while(n--);
起始信号
voidADXL345_Start()
SDA=1;
//拉高数据线
SCL=1;
//拉高时钟线
Delay5us();
//延时
SDA=0;
//产生下降沿
SCL=0;
//拉低时钟线
停止信号
voidADXL345_Stop()
//拉低数据线
//产生上升沿
发送应答信号
入口参数:
ack(0:
ACK1:
NAK)
voidADXL345_SendACK(bitack)
SDA=ack;
//写应答信号
接收应答信号
bitADXL345_RecvACK()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ADXL345 89 C51 LCD1602 显示 绝对 可用