单片机proteus中LED显示

#include<reg51.h>
#include<intrins.h>
sbit DS18B20_DQ=P3^3;
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;
typedef unsigned int u8;
typedef unsigned char u16;
typedef float u4;
void LCD_busyCheck()
{
    u8 sta;
    P0=0xff;
    LCD_RS=0;
    LCD_RW=1;
    do{
        LCD_EN=1;
        sta=P0;
        LCD_EN=0;
    }while((sta&0x80)!=0x80);//10000000
}
void LCD_write_x(u8 x)//写单个数据
{
    LCD_busyCheck();
    LCD_RS=1;
    LCD_RW=0;
    P0=x;
    LCD_EN=1;
    LCD_EN=0;
}
void LCD_write_xx(u8 *x)//写单个数据
{
    while(*x)
    {
        LCD_write_x(*x++);//自加
    }
}
void LCD_write_cmd(u8 cmd)//写命令
{
    LCD_busyCheck();
    LCD_RS=0;
    LCD_RW=0;
    P0=cmd;
    LCD_EN=1;
    LCD_EN=0;
}
void LCD_position(bit x,u8 y)
{
    u8 position;
    if(x==0)
        position=0x80+y;
    else
        position=0xc0+y;
}
void main()
{
    u8 i;
    LCD_write_cmd(0x01);
    LCD_write_cmd(0x38);//八位接口,两行显示
    LCD_write_x(0x80);//从第一位开始显示,写地址
    LCD_write_xx("Temperature : ");
    LCD_write_x(0x0c);//从第二行开始显示,写地址
    LCD_write_xx("TEMP: ");
    for(i=0;i<2000;i++);
    while(1)
    {
    }
}

img


代码运行出来没有错误,但proteus中的显示屏(LCD)没有办法显示,运行的话就是下面的图,什么都没有

img


这个要怎么改呀

LCD的VSS VDD VEE都悬空怎么显示。

  • 文章:单片机实验:P0端口驱动LED闪烁(Proteus仿真+C语言程序) 中也许有你想要的答案,请看下吧
  • 除此之外, 这篇博客: 基于proteus的点亮一个LED灯实验中的 基于proteus的点亮一个LED灯实验 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1.实验原理:
    由于LED灯是电流驱动型元器件,它的正极连的是电源的正极,它的负极连的是单片机,如果单片机输出一个低电平,就是跟GND一样的0V电压,当从正极到负极有电压差,并且电路是导通时,就会有电流通过,LED小灯因为有了电流通过,所以就可以让其发光了。

    2.proteus仿真电路图:
    在这里插入图片描述
    (图中红点表示高电平+5v,蓝点表示低电平0v)
    其电路图分为两个部分组成,
    分别是单片机最小系统和功能电路部分
    如下:
    ①单片机最小系统
    在这里插入图片描述
    (能使单片机正常工作的最小硬件单元电路,也称为单片机最小系统,
    由三部分组成,分别是1.电源电路,2.时钟电路,3.复位电路)

    ②功能电路部分:在这里插入图片描述
    添加电阻的原因:LED灯是电流驱动型元器件,本身不符合欧姆定律,电阻值大小几乎可忽略不计,但在所在电路上又要分担一部分电压,图中的LED灯可分担其自身的额定电压+3v。剩下的2v电压就需要一个限流电阻来分担,通过计算此电阻的阻值设为100Ω较合适。

    附件:LED使用手册
    在这里插入图片描述
    3## C51代码

    #include<reg51.h>	//定义头文件
    
    sbit LED=P0^0; 	   //定义引脚
    
    void delay(unsigned char i)	  //延时函数   i=1时 延时10us
    {
        while(i--);
    }
    
    void main()		 //main代表主函数,程序执行的部分
    {
    	while(1)
    	{
    	LED=0;
    	}
    	
    		delay(100);	 //延时
    }
    
    

    4编程容易出错的地方:
    <1>必须英文输入法
    <2>标点符号不能漏(如;,等)
    <3>大括号要成对写
    <4>区分字母大小写
    <5>0和o要分清