微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 请帮忙注解LCD_DATA=0xff;为什么需要对其赋值?

请帮忙注解LCD_DATA=0xff;为什么需要对其赋值?

时间:10-02 整理:3721RD 点击:
void LCD_check_busy(void)   //检测LCD1602状态,看它是不是还在忙呢
{
while(1)
  {
   LCD_EN=0;
   LCD_RS=0;
   LCD_RW=1;
   LCD_DATA=0xff;         //这里为什么需要赋值?
   LCD_EN=1;
   if(!LCD_BUSY)break;
  }
求高人指点

你如果对51系统的IO结构了解到话,这个问题就不会问了;
51的P1,P2,P3都是准双向口,通过端口引脚的上拉电阻实现,因此不会出现电平竞争;
在数据口输出0xFF,是为了将IO口释放,确保能够接收到由外设驱动的电平信号,最后才能对数据口的位7检测LCD_BUSY;
当然,从代码效率来说,这一句可以放在循环外面。

补充说明:
#ifndef __HARDWAR_H__
#define __HARDWAR_H__
#include <reg51.H>       
/*---------------------------------------------------------
                   LCD数据、控制口定义
---------------------------------------------------------*/
#define LCD_DATA P1        //LCD的数据口
sbit LCD_BUSY=LCD_DATA^7;  //LCD忙信号位
sbit LCD_RW=P2^0;          //LCD读写控制
sbit LCD_RS=P2^1;          //LCD寄存器选择
sbit LCD_EN=P2^2;          //LCD使能信号
#endif

因为电路中只有高低两种电压,你那个位赋值是一个总线控制,不然编译会出错

还是先好好学学51方面的知识吧,上来就想编程序是不行的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top