历史上的今天

今天是:2024年09月11日(星期三)

正在发生

2020年09月11日 | stc89C51单片机将mpu6050一些参数用1602显示

发布者:自在逍遥 来源: 51hei关键字:stc89C51  单片机  mpu6050  1602显示 手机看文章 扫描二维码
随时随地手机看文章

单片机源程序如下:


#include         

#include     //Keil library  

#include    //Keil library        

#include

#include "lcd1602.h"


typedef unsigned short ushort;

typedef unsigned int   uint;


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

#define DataPort P0        //LCD1602数据端口

sbit    SCL=P2^1;                        //IIC时钟引脚定义

sbit    SDA=P2^0;                        //IIC数据引脚定义

sbit    LCM_RS=P3^5;                //LCD1602命令端口               

               

sbit    LCM_EN=P3^4;                //LCD1602命令端口

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

// 定义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)          0x09 0x11 0x19 4G 8G 16G

#define        ACCEL_XOUT_H        0x3B

#define        ACCEL_XOUT_L        0x3C//加速度X轴输出

#define        ACCEL_YOUT_H        0x3D

#define        ACCEL_YOUT_L        0x3E//加速度Y轴输出

#define        ACCEL_ZOUT_H        0x3F

#define        ACCEL_ZOUT_L        0x40//加速度Z轴输出

#define        TEMP_OUT_H                0x41

#define        TEMP_OUT_L                0x42

#define        GYRO_XOUT_H                0x43

#define        GYRO_XOUT_L                0x44//角速度X轴输出        

#define        GYRO_YOUT_H                0x45

#define        GYRO_YOUT_L                0x46//角速度Y轴输出

#define        GYRO_ZOUT_H                0x47

#define        GYRO_ZOUT_L                0x48//角速度Z轴输出

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

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

#define        SlaveAddress        0xD0        //IIC写入时的地址字节数据,+1为读取  MPU I2C设备地址,从机地址

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

//定义类型及变量

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

uchar dis[6];                                                        //显示数字(-511至512)的字符数组

int        dis_data;                                                //变量

//int        Temperature,Temp_h,Temp_l;        //温度及高低位数据

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

//函数声明

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

void  delay(unsigned int k);                                                                                //延时                                                

//void  lcd_printf(uchar *s,int temp_data);


//MPU6050操作函数

void  InitMPU6050();                                                                                                        //初始化MPU6050

void  Delay5us();

void  I2C_Start();

void  I2C_Stop();

void  I2C_SendACK(bit ack);

bit   I2C_RecvACK();

void  I2C_SendByte(uchar dat);

uchar I2C_RecvByte();

void  I2C_ReadPage();

void  I2C_WritePage();

void  display_ACCEL_x();

void  display_ACCEL_y();

void  display_ACCEL_z();

uchar Single_ReadI2C(uchar REG_Address);                                                //读取I2C数据

void  Single_WriteI2C(uchar REG_Address,uchar REG_data);        //向I2C写入数据

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

//整数转字符串 整数分割 并于液晶屏上显示

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

void lcd_printf(uchar *s,int temp_data)

{

        if(temp_data<0)

        {

                temp_data=-temp_data;

                *s='-';

        }

        else *s=' ';


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

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


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

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


        *++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  SeriPushSend(uchar send_data)

{

    SBUF=send_data; // 发送数据

        while(!TI);TI=0;        //等待数据发送完成

}

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

//延时

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

void delay(unsigned int k)        

{                                                

        unsigned int i,j;                                

        for(i=0;i        {                        

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

        }                                                

}


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

//延时5微秒(STC90C52RC@12M) //TX-1C Tcy=1us

//不同的工作环境,需要调整此函数

//当改用1T的MCU时,请调整此延时函数

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

void Delay5us()

{

        _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;                    //拉高时钟线

[1] [2]
关键字:stc89C51  单片机  mpu6050  1602显示 引用地址:stc89C51单片机将mpu6050一些参数用1602显示

上一篇:51单片机MPU6050数字陀螺仪与LCD12864显示
下一篇:基于51单片机PWM调速数码管显示测速

推荐阅读

  受到全球市场竞争的紧迫压力,汽车OEM们处于一个对可靠性、成本效益、以及安全性需求越来越高的环境中,而且这种需求正持续不断地挑战着整个汽车电子领域。消费者对能够增强舒适度和安全性的功能需求日益增长,这进一步牵引着汽车中电子部分的增长。    考虑到汽车市场固有的成本压力,未来势必将引入更多的中国本土汽车制造商。而随着中国汽车电...
9月17日,万众期待的2019第21届中国国际工业博览会将在国家会展中心(上海)拉开帷幕。仙知机器人作为其中的展商之一,将携“一站式移动机器人解决方案”重磅参加,为大家现场呈现仙知机器人的技术魅力;同时还有丰富的抽奖互动与精彩的现场发布,期待大家莅临参观。(仙知机器人展台:7.1H-C092)近年来,伴随着新一轮技术革命的展开,我国移动机器人市...
前端射频主要技术集中在功率放大器(Power Amplifier;PA)、低噪音放大器(Low Noise Amplifier;LNA)与滤波器(Filter),目前全球市场由Skyworks、Qorvo、Broadcom与Murata四家公司寡占。在PA与LNA等功率放大器相关元件,Skyworks市占率最高,但目前逐渐被Qorvo赶上,两家公司大约皆有三分之一市占,而Broadcom大约为20%,Murata则为5~6 %,合计四...
智东西(公众号:zhidxcom)作者 | 健恩编辑 | 云鹏智东西9月11日报道,昨天,世界机器人大会再次在北京亦庄拉开帷幕,智东西记者一大早便跨越整个北京城来到这里打探这场大会的最新消息。世界机器人大会自2015年开始举办,迄今为止已成功举办过5次。它不仅是国内一年一度规模最大的机器人产业顶级展会,也是国内机器人产业风向的集中展示。智东西了解...

史海拾趣

问答坊 | AI 解惑

从零开始学模电系列讲座(力荐)

为了方便大家学习,特添加目录:后续不断更新中,敬请期待..... 第一讲: 电荷........................................1楼 第二讲:电流、电压、电阻和欧姆定律...................2楼 第三讲:电阻器的认识................................. ...…

查看全部问答∨

Altera FPGACPLD设计 基础篇

Altera FPGACPLD设计 基础篇…

查看全部问答∨

工作11年后,第二次跳槽,希望是最后一次跳槽

从99年入职通信行业,到2004入职电力电子行业,即将入职测控行业。每次行业跨度都还是比较大,大家有什么建议。…

查看全部问答∨

光电耦合器的应用

光电耦合器具有体积小、使用寿命长、工作温度范围宽、抗干扰性能强.无触点且输入与输出在电气上完全隔离等特点,因而在各种电子设备上得到广泛的应用.光电耦合器可用于隔离电路、负载接口及各种家用电器等电路中.下面介绍最常见的应用电路. &n ...…

查看全部问答∨

嵌入式

请问哪位知道在哪可以免费下载到《windows CE高级编程及其实例详解》一书啊?急需有关嵌入式方面的书籍,哪位高手可提供点意见!谢谢。。。…

查看全部问答∨

关于VxWorks 2410BSP中rominit.s文件的问题,大家帮我看看吧!

最近从网上下载一个2410的BSP,我想分析并做修改,以便移植到新的平台。但是遇到一大堆问题,请高手帮忙看看!这是在roninit.s中的一些代码。 start:         LDR    r2, L$_S3C2410XWtcon      &n ...…

查看全部问答∨

atdt*99***1#返回1是什么意思?

Sending cmd: ATDT*99***1#<cr> CComHandle::Read : Read bytes(1): 1<cr> Accumulated response: 1<cr> …

查看全部问答∨

有个问题请教大家

本帖最后由 dontium 于 2015-1-23 13:35 编辑 我现在要用2812作产品,这就意味着要烧写flash,除了编写相应的cmd文件以外,在主程序里还需要加些什么吗? …

查看全部问答∨

超声波+1602显示

 /*============================================================//HC-SRO4 超声波测距模块 程序使用12M或11.0592M晶振,实测使用11.0592M TX信号触发 RX信号回响=============================================================*/#incl ...…

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

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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