近日在用
proteus仿真,依据书里的知识,对照着连接了
电路。并且自认为理解了程序,写了下来。但是,最终还是无法达到预期的目的。求各位大神帮帮忙!~
电路图:
相对应的程序:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;//LCD的三个控制端
void delay(uint n) //延时函数
{ uint i;
uchar j;
for(i=n;i>0;i--)
for(j=0;j<100;j++);
}
void write_LCD_command(uchar value)//写命令函数
{
//Read_busy();
RS=0;
RW=0;
EN=1;
P0 = value;
delay(haha);//采用了“haha”作为延时时间量,方便调整,下同
EN=0;
delay(haha);
}
void write_LCD_data(uchar value)//写命令函数
{
RS=1;
RW=0;
EN=1;
P0 = value;
delay(haha);
EN=0;
delay(haha);
}
void init_LCD() //初始化
{
write_LCD_command(0x38); //8位,2行,5x7
write_LCD_command(0x0c);//开显示,不显示光标,且不闪烁
write_LCD_command(0x06);//每次写入数据后地址指针加1
write_LCD_command(0x01);//清屏
}
//*******显示字符函数*********
void LCD_disp_char(uchar x,uchar y,uchar dat)
{
uchar address;
if(y==1)
address=0x80+x;
else
address=0xc0+x;
LCD_write_command(address);
LCD_write_data(dat);
}
void main()//主函数
{
int haha;
haha=10;
P0 = 0x00;//意图是清零
P2 = 0x00;//
init_LCD();
while(1)
{
LCD_disp_char(0,1,'A');//在第一行显示字符“A”
}
}
以上就是我的设计以及遇到的问题。望各位大神们解答一下~~
file:///C:/Users/admin/AppData/Local/Temp/Wiz/6034a803-63c4-4ad8-a83a-90b9135194eb_0_files/8933756.png
一周热门 更多>