protues的一个简单仿真,出不了结果,大神进来看看!!!
protues吧
全部回复
仅看楼主
level 2
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit LCD_RS=P1^0;
sbit LCD_RW=P1^1;
sbit LCD_EN=P1^2;
uchar code DispStr1[]={" WELCOME TO"};
uchar code DispStr2[]={" HUST ZHD"};
uchar code DispStr3[]={" WISH YOU"};
uchar code DispStr4[]={" STUDY MCU WELL"};
void DelayMs(uchar n)
{
uchar j;
while(n--)
{
for(j=0;j<113;j++);
}
}
void DelaySec(uchar n)
{
uchar j;
while(n--)
{
for(j=0;j<5;j++)
DelayMs(200);
}
}
void Delay4Us(void)
{
//11.0592MHZ
}
void LCD_Busy()
{
bit busy=1;
while(busy)
{
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
busy=(bit)(P0&0x80);
Delay4Us();
}
LCD_EN=0;
}
void LCD_Wcmd(uchar cmd)
{
LCD_Busy();
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
P0=cmd;
Delay4Us();
LCD_EN=0;
}
void LCD_Wdat(uchar dat)
{
LCD_Busy();
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
P0=dat;
Delay4Us();
LCD_EN=0;
}
void LCD_Init()
{
DelayMs(10);
LCD_Wcmd(0x38);
DelayMs(10);
LCD_Wcmd(0x0c);
DelayMs(10);
LCD_Wcmd(0x06);
DelayMs(10);
LCD_Wcmd(0x01);
DelayMs(10);
}
void LCD_Goxy(uchar x,uchar y)
{
if(y==0x01)
LCD_Wcmd(x|0x80);
if(y==0x02)
LCD_Wcmd(x|0xc0);
}
void LCD_Wstr(uchar str[])
{
uchar num=0;
while(str[num])
{
LCD_Wdat(str[num++]);
DelayMs(200);
}
}
void main()
{
P0=0xff;
P2=0xff;
DelayMs(100);
LCD_Init();
while(1)
{
LCD_Goxy(0,1);
LCD_Wstr(DispStr1);
LCD_Goxy(0,2);
LCD_Wstr(DispStr2);
DelaySec(2);
LCD_Wcmd(0x01);
DelayMs(10);
LCD_Goxy(0,1);
LCD_Wstr(DispStr3);
LCD_Goxy(0,2);
LCD_Wstr(DispStr4);
DelaySec(2);
LCD_Wcmd(0x01);
DelayMs(10);
}
}
为什么这个仿真没有任何反应,完全是按照书本的样子做的,大神求解啊!!!
2015年04月16日 11点04分 1
level 1
LCD的第一个脚,第二个脚和第三个脚错啦
2015年04月19日 06点04分 2
怎么接错了? 不是接一个5伏的电源吗?
2015年04月22日 01点04分
回复
�Ϻ�һ�Ŷ���9
:自己查查那几个引脚的定义
2015年04月25日 07点04分
1