ADXL345与89C51和LCD1602显示亲测绝对可用.docx
- 文档编号:2578669
- 上传时间:2022-11-02
- 格式:DOCX
- 页数:9
- 大小:20.43KB
ADXL345与89C51和LCD1602显示亲测绝对可用.docx
《ADXL345与89C51和LCD1602显示亲测绝对可用.docx》由会员分享,可在线阅读,更多相关《ADXL345与89C51和LCD1602显示亲测绝对可用.docx(9页珍藏版)》请在冰豆网上搜索。
#include
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineDataPortP0//LCD1602数据端口
sbit SCL=P1^0;//IIC时钟引脚定义
sbit SDA=P1^1;//IIC数据引脚定义
sbitLCM_RS=P2^0;//LCD1602命令端口
sbitLCM_RW=P2^1;//LCD1602命令端口
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 { for(j=0;j<121;j++) {;}} } /*******************************/ voidWaitForEnable(void) { DataPort=0xff; LCM_RS=0;LCM_RW=1;_nop_(); LCM_EN=1;_nop_();_nop_();_nop_();_nop_(); while(DataPort&0x80); LCM_EN=0;_nop_();_nop_(); } /*******************************/ voidWriteCommandLCM(ucharCMD,ucharAttribc) { if(Attribc)WaitForEnable(); LCM_RS=0;LCM_RW=0;_nop_(); DataPort=CMD;_nop_();_nop_();_nop_();_nop_(); LCM_EN=1;_nop_();_nop_();_nop_();_nop_();LCM_EN=0; } /*******************************/ voidWriteDataLCM(uchardataW) { WaitForEnable(); LCM_RS=1;LCM_RW=0;_nop_(); DataPort=dataW;_nop_(); LCM_EN=1;_nop_();_nop_();LCM_EN=0; Delay5us();Delay5us(); } /***********************************/ voidInitLcd() { WriteCommandLCM(0x01,1); WriteCommandLCM(0x38,1); WriteCommandLCM(0x08,1); WriteCommandLCM(0x06,1); WriteCommandLCM(0x0c,1); WriteCommandLCM(0x01,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_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); } /************************************** 延时5毫秒(STC90C52RC@12M) 不同的工作环境,需要调整此函数 当改用1T的MCU时,请调整此延时函数 **************************************/ voidDelay5ms() { WORDn=560; while(n--); } /************************************** 起始信号 **************************************/ voidADXL345_Start() { SDA=1;//拉高数据线 SCL=1;//拉高时钟线 Delay5us();//延时 SDA=0;//产生下降沿 Delay5us();//延时 SCL=0;//拉低时钟线 } /************************************** 停止信号 **************************************/ voidADXL345_Stop() { SDA=0;//拉低数据线 SCL=1;//拉高时钟线 Delay5us();//延时 SDA=1;//产生上升沿 Delay5us();//延时 } /************************************** 发送应答信号 入口参数: ack(0: ACK1: NAK) **************************************/ voidADXL345_SendACK(bitack) { SDA=ack;//写应答信号 SCL=1;//拉高时钟线 Delay5us();//延时 SCL=0;//拉低时钟线 Delay5us();//延时 } /************************************** 接收应答信号 **************************************/ bitADXL345_RecvACK() {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ADXL345 89 C51 LCD1602 显示 绝对 可用
![提示](https://static.bdocx.com/images/bang_tan.gif)