#include

#include      

#include    

#include


typedef unsigned char  uchar;

typedef unsigned short ushort;

typedef unsigned int   uint;


#define DataPort P0     

sbit    SCL=P2^6;           

sbit    SDA=P2^5;         


sbit LCM_RS   = P3^7;   

sbit LCM_RW   = P3^6;              

sbit LCM_EN   = P3^5;            

sbit LCD12864_PSB  = P1^5;

sbit LCD12864_RSET = P1^3;

//****************************************

// 定义MPU6050内部地址

//****************************************

#define SMPLRT_DIV      0x19    //陀螺仪采样率,典型值:0x07(125Hz)

#define CONFIG          0x1A    //低通滤波频率,典型值:0x06(5Hz)

#define GYRO_CONFIG     0x1B    //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)

#define ACCEL_CONFIG    0x1C    //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)

#define ACCEL_XOUT_H    0x3B

#define ACCEL_XOUT_L    0x3C

#define ACCEL_YOUT_H    0x3D

#define ACCEL_YOUT_L    0x3E

#define ACCEL_ZOUT_H    0x3F

#define ACCEL_ZOUT_L    0x40

#define TEMP_OUT_H      0x41

#define TEMP_OUT_L      0x42

#define GYRO_XOUT_H     0x43

#define GYRO_XOUT_L     0x44   

#define GYRO_YOUT_H     0x45

#define GYRO_YOUT_L     0x46

#define GYRO_ZOUT_H     0x47

#define GYRO_ZOUT_L     0x48

#define PWR_MGMT_1      0x6B    //电源管理,典型值:0x00(正常启用)

#define WHO_AM_I            0x75    //IIC地址寄存器(默认数值0x68,只读)

#define SlaveAddress    0xD0    //IIC写入时的地址字节数据,+1为读取

   


uchar dis[4];                          

int dis_data;                     


//****************************************

//整数转字符串

//****************************************

void lcd_printf(uchar *s,int temp_data)

{

    if(temp_data<0)

    {

        temp_data=-temp_data;

        *s='-';

    }

    else *s=' ';

    *++s =temp_data/100+0x30;

    temp_data=temp_data%100;     //取余运算

    *++s =temp_data/10+0x30;

    temp_data=temp_data%10;      //取余运算

    *++s =temp_data+0x30;   

}  


void delay(unsigned int k)  

{                       

    unsigned int i,j;               

    for(i=0;i    {           

        for(j=0;j<121;j++);

    }                       

}


void WaitForEnable(void)   

{                  

    DataPort=0xff;      

    LCM_RS=0;LCM_RW=1;_nop_();

    LCM_EN=1;_nop_();_nop_();

    while(DataPort&0x80);   

    LCM_EN=0;               

}                  


void WriteCommandLCM(uchar CMD)

{                  

    WaitForEnable();

    LCM_RS=0;LCM_RW=0;_nop_();

    DataPort=CMD;_nop_();   

    LCM_EN=1;_nop_();_nop_();LCM_EN=0;

}                  


void WriteDataLCM(uchar dataW)

{                  

    WaitForEnable();        

    LCM_EN=0;LCM_RS=1;LCM_RW=0;_nop_();

    DataPort=dataW;_nop_();

    LCM_EN=1;_nop_();LCM_EN=0;_nop_();

}      


void LcdPos_xy(unsigned char x,unsigned char y)

{

    unsigned char pos;

    switch(x)

    {

        case 1:pos=0x80+y-1;break;

        case 2:pos=0x90+y-1;break;

        case 3:pos=0x88+y-1;break;

        case 4:pos=0x98+y-1;break;

        default:pos=0x80+y-1;break;

    }

    WriteCommandLCM(pos|0x80);

}


void DisplayListChar(uchar X,uchar Y,uchar *DData)

{

    LcdPos_xy(X,Y);

    while(*DData)

    {

        WriteDataLCM(*DData++);

    }

}


void InitLcd()              

{           

        LCD12864_PSB = 1;//并行通信

        LCD12864_RSET = 0;

        delay(10);

        LCD12864_RSET = 1;


        WriteCommandLCM(0x30);

        delay(5);

        WriteCommandLCM(0x30);

        delay(5);

        WriteCommandLCM(0x18);

        delay(5);

        WriteCommandLCM(0x10);

        delay(5);

        WriteCommandLCM(0x01);

        delay(5);

        WriteCommandLCM(0x06);

        delay(5);

        WriteCommandLCM(0x0c);

        delay(5);


        DisplayListChar(1,2,"加速度");

        DisplayListChar(1,6,"角速度");

        DisplayListChar(2,1,"X:");

        DisplayListChar(3,1,"Y:");

        DisplayListChar(4,1,"Z:");

}           


void Delay5us()

{

    _nop_();_nop_();_nop_();_nop_();

    _nop_();_nop_();_nop_();_nop_();

    _nop_();_nop_();_nop_();_nop_();

    _nop_();_nop_();_nop_();_nop_();

    _nop_();_nop_();_nop_();_nop_();

    _nop_();_nop_();_nop_();_nop_();

}

//**************************************

//I2C起始信号

//**************************************

void I2C_Start()

{

    SDA = 1;                    //拉高数据线

    SCL = 1;                    //拉高时钟线

    Delay5us();                 //延时

    SDA = 0;                    //产生下降沿

    Delay5us();                 //延时

    SCL = 0;                    //拉低时钟线

}

//**************************************

//I2C停止信号

//**************************************

void I2C_Stop()

{

    SDA = 0;                    //拉低数据线

    SCL = 1;                    //拉高时钟线

    Delay5us();                 //延时

    SDA = 1;                    //产生上升沿

    Delay5us();                 //延时

}

//**************************************

//I2C发送应答信号

//入口参数:ack (0:ACK 1:NAK)

//**************************************

void I2C_SendACK(bit ack)

{

    SDA = ack;                  //写应答信号

    SCL = 1;                    //拉高时钟线

    Delay5us();                 //延时

    SCL = 0;                    //拉低时钟线

    Delay5us();                 //延时

}

//**************************************

//I2C接收应答信号

//**************************************

bit I2C_RecvACK()

{

    SCL = 1;                    //拉高时钟线

    Delay5us();                 //延时

    CY = SDA;                   //读应答信号

    SCL = 0;                    //拉低时钟线

    Delay5us();                 //延时

    return CY;

}

//**************************************

//向I2C总线发送一个字节数据

//**************************************

void I2C_SendByte(uchar dat)

{

    uchar i;

    for (i=0; i<8; i++)         //8位计数器

    {

        dat <<= 1;              //移出数据的最高位

        SDA = CY;               //送数据口

        SCL = 1;                //拉高时钟线

        Delay5us();             //延时

        SCL = 0;                //拉低时钟线

        Delay5us();             //延时

    }

    I2C_RecvACK();

}

//**************************************

//从I2C总线接收一个字节数据

//**************************************

uchar I2C_RecvByte()

{

    uchar i;

    uchar dat = 0;

[1] [2]
关键字:51单片机  MPU6050  数字陀螺仪  LCD12864显示 引用地址:51单片机MPU6050数字陀螺仪与LCD12864显示

上一篇:51单片机8路抢答器
下一篇:stc89C51单片机将mpu6050一些参数用1602显示

推荐阅读

在USART章节讲解了串口的轮询和中断模式,这一章介绍一下通过DMA模式控制串口传输。直接存储器访问 (DMA) 用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。可以在无需任何 CPU 操作的情况下通过 DMA 快速移动数据。这样节省的 CPU 资源可供其它操作使用。说白了DMA就是一个搬运工,将数据从一个地方搬到另一个地方而不需要CPU处理...
#include"reg52.h"//单片机头文件#define uchar unsigned char//宏定义,用uchar表示unsigned char,叫无符号字符型数据类型,取值范围为:0到255。#define uint unsigned int//宏定义,用uint表示unsigned int,叫无符号整数型数据类型,取值范围为:0到65535。sbit qitingjian=P1^0;//位定义启停键sbit zhengzhuan=P1^1;//位定义正转键sbit fan...
智东西(公众号:zhidxcom)作者 | 健恩编辑 | 云鹏智东西9月11日报道,昨天,世界机器人大会再次在北京亦庄拉开帷幕,智东西记者一大早便跨越整个北京城来到这里打探这场大会的最新消息。世界机器人大会自2015年开始举办,迄今为止已成功举办过5次。它不仅是国内一年一度规模最大的机器人产业顶级展会,也是国内机器人产业风向的集中展示。智东西了解...

史海拾趣

问答坊 | AI 解惑

招聘高级硬件开发工程师

本公司提供良好发展机会和平台 我公司是一家主营一卡通智能管理系统、智能卡机具、热工仪表三大类产品,集研发、生产、销售、工程安装维护等全套工程实施,具有雄厚技术、销售实力的民营企业。 公司于2003年11月取得ISO9001认证;2005年8月,被杭 ...…

查看全部问答∨

电子竞赛—具有语音功能的RCL测试仪

本帖最后由 paulhyde 于 2014-9-15 04:23 编辑 电子竞赛—具有语音功能的RCL测试仪  …

查看全部问答∨

请教关于HID设备的读写问题~

关于访问HID设备的问题,在网上看到一篇介绍“Windows主机端与自定义USB HID设备通信详解”(http://blog.eeworld.net/kevinyujm/archive/2009/06/12/4264506.aspx)的文章,现在有几个疑问,还请各位指点: 1.相同类型的Report,其Report ID是不 ...…

查看全部问答∨

wince下如何实现cpu的休眠?就100分了,都给了

现在本人在做wince的电源管理,芯片是三星2450的,wince5.0,想问问要实现cpu的休眠,不是系统休眠,要怎么做?是不在在D:\\WINCE500\\PUBLIC\\COMMON\\OAK\\DRIVERS\\PM\\PDD下的里面的DEFAULT或是PDA模式下改里面的platform.cpp文件。 其实2450 ...…

查看全部问答∨

请问再wince上如何检验usb口是否已经接续?

请问再wince上如何检验usb口是否已经接续? 另外,pc方面在接续后需要做什么动作通知wince已经接续了usb?谢谢 …

查看全部问答∨

急求助:有没有TTL电平直接转232和485两种电平的器件?有成品最好.

有没有TTL电平直接转232和485两种电平的器件?有成品最好. 也就是说用这个产品有三个接口.可以直接把TTL电平转成232和485信号输出.…

查看全部问答∨

a/d原理?

A/D转换器是本质是什么?是将十进制的数转换成二进制么?如8位的转换器,模拟量是3V,转换D0~D7孔输出什么?…

查看全部问答∨

keil中的lib文件是怎么生成的?如何使用呢?

用过的给分享下经验刚才看到了STM32F10xR.LIB这个文件前面有文章提到不过似乎没有说怎么生成…

查看全部问答∨

关于A题DC的疑惑

本帖最后由 paulhyde 于 2014-9-15 08:55 编辑 那个DC模块 用…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved