硬件方面选择的是51单片机,显示屏LCD1602,姿态传感器MPU6050的型号为维特智能的JY60,具体设计思路见笔者的文章基于单片机的云台姿态测量系统设计。
STM32将mpu6050的数据DAC并用LCD显示
基于单片机的云台姿态测量系统设计(一)

1.头文件和定义数据类型

/*预处理命令*/
#include <reg52.h>          //包含单片机寄存器的头文件
#include <string.h>
#include <stdio.h>/*=================================================
*自定义数据类型
=================================================*/
typedef unsigned char uchar;
typedef unsigned int uint;#define LCD1602_DB P0 //LCD1602数据总线sbit LCD1602_RS = P3^5;    //RS端
sbit LCD1602_RW = P3^6;     //RW端
sbit LCD1602_EN = P3^4;     //EN端
sbit DU = P2^6;//
sbit WE = P2^7;//数码管位选段选用于关闭数码管显示unsigned char Re_buf[11],counter;
unsigned char ucStra[6],ucStrw[6],ucStrAngle[6];

2.定义函数Read_Busy

/*=================================================
*函数名称:Read_Busy
*函数功能:判断1602液晶忙,并等待
=================================================*/
void Read_Busy()
{uchar busy;LCD1602_DB = 0xff;//复位数据总线LCD1602_RS = 0;   //拉低RSLCD1602_RW = 1;      //拉高RW读do{LCD1602_EN = 1;//使能ENbusy = LCD1602_DB;//读回数据LCD1602_EN = 0;  //拉低使能以便于下一次产生上升沿}while(busy & 0x80); //判断状态字BIT7位是否为1,为1则表示忙,程序等待
}

3.定义函数LCD1602_Write_Cmd

/*=================================================
*函数名称:LCD1602_Write_Cmd
*函数功能:写LCD1602命令
*调用:Read_Busy();
*输入:cmd:要写的命令
=================================================*/
void LCD1602_Write_Cmd(uchar cmd)
{Read_Busy();    //判断忙,忙则等待LCD1602_RS = 0;LCD1602_RW = 0;  //拉低RS、RWLCD1602_DB = cmd;//写入命令LCD1602_EN = 1;    //拉高使能端 数据被传输到LCD1602内LCD1602_EN = 0;  //拉低使能以便于下一次产生上升沿
}

4.定义函数LCD1602_Write_Dat

/*=================================================
*函数名称:LCD1602_Write_Dat
*函数功能:写LCD1602数据
*调用:Read_Busy();
*输入:dat:需要写入的数据
=================================================*/
void LCD1602_Write_Dat(uchar dat)
{Read_Busy();LCD1602_RS = 1;LCD1602_RW = 0;LCD1602_DB = dat;LCD1602_EN = 1;LCD1602_EN = 0;
}

5.定义函数LCD1602_Dis_Str

/*=================================================
*函数名称:LCD1602_Dis_Str
*函数功能:在指定位置显示字符串
*调用:LCD1602_Write_Cmd(); LCD1602_Write_Dat();
*输入:x:要显示的横坐标取值0-40,y:要显示的行坐标取值0-1(0为第一行,1为第二行)*str:需要显示的字符串
=================================================*/
void LCD1602_Dis_Str(uchar x, uchar y, uchar *str)
{if(y) x |= 0x40;x |= 0x80;LCD1602_Write_Cmd(x);while(*str != '\0'){LCD1602_Write_Dat(*str++);}
}

6.定义函数Init_LCD1602

/*=================================================
*函数名称:Init_LCD1602
*函数功能:1602初始化
*调用: LCD1602_Write_Cmd();
=================================================*/
void Init_LCD1602()
{LCD1602_Write_Cmd(0x38); //    设置16*2显示,5*7点阵,8位数据接口LCD1602_Write_Cmd(0x0c); //开显示LCD1602_Write_Cmd(0x06); //读写一字节后地址指针加1LCD1602_Write_Cmd(0x01); //清除显示
}

7.主函数

void main()
{//中断初始化
float Value[3];unsigned char i=0;char buffer[10];TMOD=0x20;          //用定时器工作在方式2设置串口波特率     9600 TH1=0xfd;TL1=0xfd;TR1=1;TI=1;REN=1;          //串口初始化SM0=0;            //串口工作在方式2,使用默认的定时器来提供波特率SM1=1;EA=1;           //开启总中断ES=1;Init_LCD1602();//1602初始化while(1){// 角度的显示Value[0] = ((short)(ucStrAngle[1]<<8| ucStrAngle[0]))/32768.0*180;Value[1] = ((short)(ucStrAngle[3]<<8| ucStrAngle[2]))/32768.0*180;Value[2] = ((short)(ucStrAngle[5]<<8| ucStrAngle[4]))/32768.0*180;sprintf(buffer,"AX:%5.1f",Value[0]);LCD1602_Dis_Str(0, 0, &buffer);  //显示字符串sprintf(buffer,"AY:%5.1f",Value[1]);LCD1602_Dis_Str(8, 0, &buffer);    //显示字符串 sprintf(buffer,"AZ:%5.1f",Value[2]);LCD1602_Dis_Str(0, 1, &buffer);   //显示字符串}
}void ser() interrupt 4
{if (RI){RI=0;Re_buf[counter]=SBUF;   if(counter==0&&Re_buf[0]!=0x55) return;      //第0号数据不是帧头,跳过counter++; if(counter==11)             //接收到11个数据{    counter=0;               //重新赋值,准备下一帧数据的接收        switch(Re_buf [1]){case 0x51:ucStra[0]=Re_buf[2];ucStra[1]=Re_buf[3];ucStra[2]=Re_buf[4];ucStra[3]=Re_buf[5];ucStra[4]=Re_buf[6];ucStra[5]=Re_buf[7];break;case 0x52:     ucStrw[0]=Re_buf[2];ucStrw[1]=Re_buf[3];ucStrw[2]=Re_buf[4];ucStrw[3]=Re_buf[5];ucStrw[4]=Re_buf[6];ucStrw[5]=Re_buf[7];break;case 0x53: ucStrAngle[0]=Re_buf[2];ucStrAngle[1]=Re_buf[3];ucStrAngle[2]=Re_buf[4];ucStrAngle[3]=Re_buf[5];ucStrAngle[4]=Re_buf[6];ucStrAngle[5]=Re_buf[7];  break;} }}
}

需要注意的是笔者的波特率选择的是9600,若出现不能显示的情况有可能是波特率设置的问题。

程序源码分享-51单片机用LCD1602显示MPU6050角度数据相关推荐

  1. 实时获取股票数据的android app应用程序源码分享

    From:http://www.jb51.net/article/72449.htm 本文我们分享一个实时获取股票数据的android app应用程序源码分享,可以作为学习使用,本文贴出部分重要代码, ...

  2. C# 自动投票和手机号码归属地查询 - 简单程序源码分享(高手飘过)

    C# 自动投票和手机号码归属地查询 - 简单程序源码分享(高手飘过) C# 自动投票和手机号码归属地查询 - 简单程序源码分享(高手飘过) 如有转载,请注明出处: http://www.cnblogs ...

  3. 【源码分享】一键打开禅意生活——电子木鱼微信小程序源码分享

    为大家推荐一个在线的AI聊天:魔术AI-8080n点cn界面简洁精美,免费点开即用 在快节奏的现代生活中,我们需要一种方式来减轻压力和焦虑,让我们的身心得到放松和平静.电子木鱼微信小程序是一款专门为人 ...

  4. 免费小程序源码分享 博客

    小程序二维码: 源码地址: https://gitee.com/tonygeli/mini-blog.git 其他小程序源码分享:

  5. 130个免费 微信小程序源码分享

    130个免费 微信小程序源码分享 - AppleMusic - B站首页界面设计:附详细教程 - FlexLayout布局 - HIapp - IT-EBOOK - LOL战绩查询 - Railay: ...

  6. 【小程序源码】王者战力查询改名工具箱微信小程序源码分享下载,战力查询小程序

    介绍 今天分享一款战力查询小程序源码, 微端Q苹卓四端战力查询 带改名工具,空白名.重复名.符号名改名小程序源码 界面精美,无需服务器后台. 至于更多,就大家自行研究咯! 小编测试演示图 小程序源码下 ...

  7. 全新校园跑腿小程序源码分享

    类别 微信小程序 校园综合服务平台,小程序内含快递代取.打印服务.校园跑腿.代替服务.上门维修.其他帮助. 自备:备案域名:服务器,小程序开通微信支付 步骤:文件内有操作教程 相比于前面那款 这款界面 ...

  8. (已更新)全新校园跑腿小程序源码分享

    类别 微信小程序 校园综合服务平台,小程序内含快递代取.打印服务.校园跑腿.代替服务.上门维修.其他帮助. 自备:备案域名:服务器,小程序 步骤:文件内有操作教程 相比于前面那款 这款界面更加简洁 搭 ...

  9. 基于51单片机的LCD1602显示温湿度

    51单片机基础难点知识理解后,直接通过下面3个小项目可以更好理解51单片机.中断 定时器 串口甚至是基础的IO输入输出都有结合,再加上一些外设模块的学习(如1602显示屏,L298N电机驱动等) 项目 ...

最新文章

  1. web.py 0.3 新手指南 - 安装
  2. sql查询复习笔记-小技巧,大智慧(续一)
  3. Python进阶(2)
  4. 【STM32】ESP8266 AT指令
  5. 【多媒体内容与体验创新】
  6. Google浏览器截长图 不需要借助任何插件!!!
  7. 精通java ee项目案例_精通JavaEE项目案例
  8. java调用android_Java及Android中常用链式调用写法简单示例
  9. Java查找一个字符串中所有匹配某正则的子串
  10. mpandroidchart组合图_使用MpAndroidChart组合图,如何将图表分成上下两部分?
  11. C#笔记05 方法和参数
  12. 高通:蓝牙5.0将可同时连接两个设备
  13. 【系统分析师之路】第九章 软件工程(上)
  14. rdkit Recap、BRICS分子片段拆分与合成
  15. Nginx代理百度地图离线瓦片
  16. Visual Studio 2015官方汇总包括下载和视频
  17. Python和线性代数平衡化学等式
  18. Deep Learning(深度学习)
  19. 智能振弦传感器的读取工具振弦采集仪
  20. B-样条基函数:重要性质

热门文章

  1. ios玩全民奇迹不显示服务器,全民奇迹IOS充值不到账解决方法
  2. C++应程序实现修改设备IP地址、MAC、设备ID功能
  3. 2016年腾讯web前端实习生面试记录
  4. 智能机井控制器的优点以及应用领域
  5. java中log日志的使用(完全版)
  6. 《物联网医用内窥镜监控平台》IOS前端
  7. 【微信小程序---checkbox复选框讲解】
  8. 如何看待矿池抽税激励社区开发者?如何看待EOS?——BCH极客大赛江卓尔专访...
  9. 视频技术发展历史:MPEG-4技术简介
  10. 人脸反欺诈数据集的预处理过程(含代码)