请帮忙注解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;
}
求高人指点
{
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方面的知识吧,上来就想编程序是不行的