历史上的今天
返回首页

历史上的今天

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

正在发生

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

2020-09-11 来源:51hei

单片机源程序如下:


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

推荐阅读

史海拾趣

Corsair Electrical Connectors Inc公司的发展小趣事

随着市场的不断发展,Corsair意识到只有不断创新才能在竞争中立于不败之地。因此,公司加大了对研发的投入,积极引进先进技术和设备,不断提升产品的性能和质量。在一次次的尝试和失败后,Corsair的研发团队终于突破了行业技术瓶颈,成功开发出了一款具有高性能、高稳定性的连接器产品。这一创新成果不仅赢得了客户的青睐,也为公司在行业中树立了良好的口碑。

启臣微(Chip)公司的发展小趣事

在产品质量方面,启臣微始终坚持严格的标准和精细的工艺流程。公司建立了一套完善的质量管理体系,从原材料采购到产品出厂,每一个环节都经过严格把关。这种对品质的执着追求,让启臣微的产品在市场上赢得了良好的口碑,也为公司赢得了众多客户的信赖。

Harvatek Corporation公司的发展小趣事

背景:作为电子显示领域的佼佼者,Hantronix不仅关注自身的发展,还积极履行社会责任,为行业的进步和发展做出贡献。

发展:Hantronix通过技术创新和产品升级,推动了电子显示技术的进步和应用范围的扩大。同时,公司还积极参与行业标准的制定和推广工作,为行业的规范化、标准化发展贡献了自己的力量。此外,Hantronix还注重人才培养和团队建设,为行业培养了一大批高素质的专业人才。

以上五个故事虽然基于概括性描述,但均反映了Hantronix公司在电子行业中的发展历程、技术创新、市场拓展、品质保证以及行业影响等方面的实际情况。

E. Dold & Söhne KG公司的发展小趣事

随着公司实力的不断增强,E. Dold & Söhne KG公司开始积极拓展海外市场。公司先后在多个国家和地区设立了分支机构或办事处,与当地企业开展合作,共同开发市场。此外,公司还积极参与国际展会和交流活动,与国际同行交流技术和管理经验,不断提升自身的竞争力。

Hongfa公司的发展小趣事

宏发公司的发展离不开自主研发和技术创新。1998年,宏发成立了精合公司,开启了自主研发自动化设备设计及制造的征程。此后,公司不断加大在技术研发上的投入,建立了博士后科研工作站和院士专家工作站,形成了从产品研发、模具制造、零件制造到自动化成品装配及在线检测的一体化全产业链。通过技术创新,宏发不仅提升了产品性能和质量,还成功打破了国外技术垄断,实现了高端继电器的自主研发和生产。

Astro Tool Corp公司的发展小趣事

随着企业规模的不断扩大和影响力的提升,Astro Tool Corp公司逐渐认识到企业社会责任的重要性。公司积极参与社会公益事业,为当地社区和弱势群体提供帮助和支持。同时,公司还注重环境保护和可持续发展,通过引进环保技术和设备,降低生产过程中的能耗和排放,实现绿色生产。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实基础。


请注意,这些故事是虚构的,旨在展示一个电子行业企业可能经历的一些典型发展阶段和策略,并不代表任何真实公司的具体情况。如果需要更贴近真实情况的故事,建议进一步调研和了解Astro Tool Corp公司的实际发展历程。

问答坊 | AI 解惑

四位超前进位加法器完整版图

四位超前进位加法器完整版图…

查看全部问答>

关于自偏置电流源的电路结构

与电源电压无关的自偏置电流源的经典结构如下图1(Razavi.  pic 11.3)所示。请教高手:如果把下面的NMOS对管与电阻左右互换(图2)可以吗?会有什么问题呢?电路稳定性会受影响吗? 下载次数:131 2009-8-6 21:02 …

查看全部问答>

未来视频监控如何做 谈网络时代监控技术

目前,在视频图像监控领域,数字化、网络化、智能化已成为一种发展趋势,IP网络视频监控系统也逐步进入大规模商业应用阶段。熟悉远程监控的人都知道,将图像摄取后进行远程传输的主要方式除了互联网,还有光纤。有人认为,通过光端机和光纤进行远程 ...…

查看全部问答>

为什么没有支持MSTP的AP

寻遍各种设备,都没有支持MSTP的AP(桥接模式下要解决环路)。请问这是什么原因呢? H3C也只支持RSTP,其他的更不用说了 MSTP是和802.11有什么冲突吗? …

查看全部问答>

udp通信接收问题(附源码)

using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; namespace cejie {     class Program     {         static void Main ...…

查看全部问答>

请问:在ARM9环境中,EBOOT的中断如何挂接或开启?

我的开发环境:CPU是三星的ARM9(2410),RAM是64M,FLASH是64M EBOOT是通过NBOOT引导启动的,在NBOOT是可以接到中断的,可是为什么到EBOOT中就怎么也接不到了呢??? 小弟不明白,请各位大侠多多指点呀 …

查看全部问答>

vxworks组播数据无法接收

我按网络开发的例子编写程序,在同一子网内加入到组播地址,去无法接收组播信息,但可以接收广播信息和发送组播 不知有谁遇到过该问题,可否指点一二,不胜感激!!!!!!!!!!!!!(发送端是Win2000,接收端是VxWorks) …

查看全部问答>

请问一下:STM32F10x的SPI怎样接收LTC2440的32位的AD转换结果

                                 STM32F10x的SPI一帧数据为8位或16位,而LTC2440的A/D转换器在一次片选后连续输出32位结果,可以用硬件以DMA方式接 ...…

查看全部问答>

收一个可以5轴的开发板

如题收一个5轴开发板好像淘宝上有卖的型号是HC6800-EM3,最好带轴流电机…

查看全部问答>

共用体变量名运用?

typedef union { 成员表列; }UnionKey; UnionKey idata Keyboard; 共用体变量名能不能这么用?…

查看全部问答>