先上仿真图,图比较简单,一个51单片机最小系统,加上一个LM016L液晶显示器,需要注意的是,实际的LM016L芯片内部有上拉电阻,但是仿真中是没有的,如果用P0口传输数据的话,需要给P0口接上拉电阻。
然后上代码,有详细的注释,就不多解释了。
#include<reg51.h>
#include<intrins.h>
//引脚定义
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit BF=P0^7;
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
/*****************************************************
函数功能:延时若干毫秒
入口参数: n
***************************************************/
void delaynms(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
delay1ms();
}
/********************
函数功能:判断液晶模块是否忙碌
入口参数:无
返回值:result 1忙碌 0空闲
**********************/
bit BusyTest(void)
{
bit result;
RS=0;
RW=1;//此时才可以读状态
E=