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,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。