头像-185735

8769cc5bd61fb0d7

个人成就

获得 0 次赞

帮助过0人

在LCD1602显示从MPU6050中读取的数据的问题

下列程序中,请问为什么要将从MPU6050中读取的16位数据变成10位?这样不是将后6位数据都丢失了吗?//在1602上显示10位数据//**************************************void Display10BitData(int value,uchar x,uchar y){ value/=64; //转换为10位数据 lcd_printf(dis, value); //转换数据显示 DisplayListChar(x,y,dis,4); //启始列,行,显示数组,显示长度  (实参为数组,形参为指针)}​

LCD1602显示问题

请问如何理解下列程序?我的疑问是当DataPort==0x80时,程序不就是会一直卡在while(DataPort&0x80)语句中吗?(其中DataPort为P0的宏定义)//****************************************//LCD1602写允许//****************************************void WaitForEnable(void) { DataPort=0xff; LCM_RS=0;LCM_RW=1;_nop_(); LCM_EN=1;_nop_();_nop_(); while(DataPort&0x80);//判断高位是0还是1,1的话返回值为1; LCM_EN=0; } //****************************************//LCD1602写入命令//****************************************void WriteCommandLCM(uchar CMD,uchar Attribc){ if(Attribc)WaitForEnable(); LCM_RS=0;LCM_RW=0;_nop_(); DataPort=CMD;_nop_(); LCM_EN=1;_nop_();_nop_();LCM_EN=0;}

怎么改51单片机中的‘I get x’程序能传输任意2个字符

下载以下这段程序到单片机后,在串口通信助手任意输入一个字符(比如k),结果就会显示“I get k”;现在是想如何通过修改以下程序可以使得任意输入两个字符(比如cy),结果就会显示“I get cy”,求助各路大神解惑。程序代码如下:#include <reg52.h>#define uchar unsigned char#define uint unsigned intuchar flag,i,a;uchar code table[]="I get ";void init(){ TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1;}void main(){ init(); while(1) { if(flag==1) { ES=0; for(i=0;i<6;i++) { SBUF=table[i]; while(!TI); TI=0; } SBUF=a; while(!TI); TI=0; ES=1; flag=0; } }}void ser() interrupt 4{ RI=0; a=SBUF; flag=1;}