首页 L3G4200D__51单片机IIC_测试程序

L3G4200D__51单片机IIC_测试程序

举报
开通vip

L3G4200D__51单片机IIC_测试程序L3G4200D__51单片机IIC_测试程序 //这是L3G4200D 51单片机IIC 测试程序 //这是1602 头文件 保存为 1602.h #define DataPort P0 //LCD1602数据端口 sbit LCD_RS=P2^4; //LCD1602命令端口 sbit LCD_RW=P2^5; //LCD1602命令端口 sbit LCD_EN=P2^6; //LCD1602命令端口 #include #define uchar unsigned char void WaitForEna...

L3G4200D__51单片机IIC_测试程序
L3G4200D__51单片机IIC_测试程序 //这是L3G4200D 51单片机IIC 测试程序 //这是1602 头文件 保存为 1602.h #define DataPort P0 //LCD1602数据端口 sbit LCD_RS=P2^4; //LCD1602命令端口 sbit LCD_RW=P2^5; //LCD1602命令端口 sbit LCD_EN=P2^6; //LCD1602命令端口 #include #define uchar unsigned char void WaitForEnable(void) { DataPort=0xff; LCD_RS=0; LCD_RW=1; _nop_(); LCD_EN=1; _nop_(); _nop_(); while(DataPort&0x80); LCD_EN=0; } void WriteCommandLCD(uchar CMD,uchar Attribc) { if(Attribc) WaitForEnable(); LCD_RS=0; LCD_RW=0; _nop_(); DataPort=CMD; _nop_(); LCD_EN=1; _nop_(); _nop_(); LCD_EN=0; } void WriteDataLCD(uchar dataW) { WaitForEnable(); LCD_RS=1; LCD_RW=0; _nop_(); DataPort=dataW; _nop_(); LCD_EN=1; _nop_(); _nop_(); LCD_EN=0; } void InitLcd() { WriteCommandLCD(0x38,1); WriteCommandLCD(0x08,1); WriteCommandLCD(0x01,1); WriteCommandLCD(0x06,1); WriteCommandLCD(0x0c,1); } void DisplayOneChar(uchar X,uchar Y,uchar DData) { Y&=1; X&=15; if(Y) X|=0x40; X|=0x80; WriteCommandLCD(X,0); WriteDataLCD(DData); } //下面是主程序部分 //*************************************** // L3G4200D三轴陀螺仪 IIC测试程序 // 使用单片机STC89C51 // 晶振:11.0592M // 显示:LCD1602 // 编译环境 Keil uVision2 // 参考宏晶网站24c04通信程序 // 时间:2011年3月1日 //**************************************** #include #include "1602.h" #include #include #include #define uchar unsigned char #define uint unsigned int sbit SCL=P1^0 ; //IIC时钟引脚定义 sbit SDA=P1^1 ; //IIC数据引脚定义 //******************** #define WHO_AM_I 0x0F #define CTRL_REG1 0x20 // 0010 0000 #define CTRL_REG2 0x21 #define CTRL_REG3 0x22 #define CTRL_REG4 0x23 #define CTRL_REG5 0x24 #define OUT_X_L 0x28 #define OUT_X_H 0x29 #define OUT_Y_L 0x2A #define OUT_Y_H 0x2B #define OUT_Z_L 0x2C #define OUT_Z_H 0x2D #define SlaveAddress 0xD2 //定义器件在IIC总线中的从地址,根据ALT ADDRESS地址引脚不同 修改 typedef unsigned char BYTE; typedef unsigned short WORD; BYTE BUF[8]; //接收数据缓存区 long temp; uchar ge,shi,bai,qian,wan; //显示变量 int dis_data;//变量 //int temp; void delay(unsigned int k); void InitL3G4200D(uchar ); //初始化L3G4200D void conversion(uint temp_data); void Single_WriteL3G4200D(uchar REG_Address,uchar REG_data); //单个写入数据 uchar Single_ReadL3G4200D(uchar REG_Address); //单个读取内部寄存器数据 void Delay5ms(); //void Multiple_readL3G4200D(void); //------------------------------------ void Delay5us(); void L3G4200D_Start(); void L3G4200D_Stop(); void L3G4200D_SendACK(bit ack); void L3G4200D_RecvACK(); void L3G4200D_SendByte(BYTE dat); BYTE L3G4200D_RecvByte(); void display_x(); void display_y(); void display_z(); //----------------------------------- //********************************************************* void conversion(uint temp_data) { temp_data*=0.875; 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; } /*******************************/ void delay(unsigned int k) { unsigned int i,j; for(i=0;i
本文档为【L3G4200D__51单片机IIC_测试程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_279425
暂无简介~
格式:doc
大小:40KB
软件:Word
页数:17
分类:生活休闲
上传时间:2017-09-27
浏览量:32