大神,求助!LCD1602仿真能显示,硬件却不可以

2019-07-15 15:14发布

LCD在仿真上运行是从右到左移屏显示。没有问题。实际电路运行变成从左到右移屏,而且移了一半就没了。程序和电路都在附件里。求大神帮助。
333.png
IMG_2425.JPG
充放电电路.rar 下载积分: 积分 -1 分
133.64 KB, 下载次数: 23, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
abc2951333
2019-07-15 15:55
#include <reg52.h>
#include <intrins.h>
#include "define.h"
#include "init.h"
#include "AD.h"
#include "yj1602.h"

/*主函数/
void main()
{  
        init();  
        init1602();   
        battery_v=get_ad();  
        yj1602();  
        if(battery_v<108) {PWM=0; FuZai=1;}  //µÚÒ»´ÎÖ±½Ó³åµç
        else {PWM=1;FuZai=0;}
        while(1)  
        {
                delay(5000);   
                battery_v=get_ad();   
                yj1602();
                if(battery_v<0)//Ðîµç³Ø·´½Ó£¬¹Ø±Õ³äµç¡¢¸ºÔØÇÒ±¨¾¯
                        {    PWM=1;FuZai=1;buzzer();   }
                        if(battery_v>=108)
                        {
                                if(145<=battery_v)
                                        {
                                                guoya=0;//¿ªÆô¹ýѹָʾµÆ
                                                zhengchang=1;
                                                qianya=1;
                                                PWM=1;
                                                FuZai=0;
                                                buzzer();
                                               
                                                 
                                                }
                                                else if(120<=battery_v<145)
                                                        {
                                                                zhengchang=0;
                                                                guoya=1;
                                                                qianya=1;
                                                                TR0=1;
                                                                FuZai=0;
                                                                if(count==4)
                                                                        {      PWM=0;     }
                                                                        if(count==12)
                                                                                {      count=0;      PWM=1;     }
                                                                        }
                                                                        else if(battery_v<120)
                                                                                {zhengchang=0;guoya=1;qianya=1;FuZai=0; TR0=0;     PWM=0;    }}
                                                                                else
                                                                                        {zhengchang=1;guoya=1; qianya=0;   
                                                                                                FuZai=1;PWM=0;    buzzer();    }  } }
void timer0() interrupt 1
{
        TH0=(65536-50000)/256;  
        TL0=(65536-50000)%256;
        count++;
}
/*定义函数/
#define uchar unsigned char
#define uint unsigned int
sbit PWM= P3^2;
sbit FuZai=P3^3;
sbit zhengchang=P2^3;
sbit guoya=P2^4;
sbit qianya=P2^5;
sbit beep=P2^6;
uchar count,battery_v;
sbit csad=P2^7;
sbit adwr=P3^6;
sbit adrd=P3^7;
unsigned char V1,V2,V3,adval,ad_vo;
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;
unsigned char code table1[]=" HUANGZHIQIANG";
unsigned char code table2[]=" D:12.0  N:";
unsigned char code lcdd[]="0123456789";
uchar xs_vo,num;

void init();
void delay(unsigned int t);
void delay1();
void buzzer();
uchar get_ad();
void write_com(uchar com);
void write_data(uchar date);
void init1602();
void yj1602();

/*初始化函数/
void init()
{
        TMOD=0x01;
        TH0=(65536-50)/256;
        TL0=(65536-50)%256;
        EA=1;
        ET0=1;
        PWM=1;
        FuZai=1;
        zhengchang=0;
        guoya=1;
        qianya=1;
        beep=1;  

}
void delay(unsigned int t)
{
        unsigned int j,i;   
        for(i=0;i<t;i++)        
        for(j=0;j<110;j++);
}
void delay1()
{
        _nop_();   _nop_();   
        _nop_();   _nop_();   
        _nop_();
}
void buzzer()
{
        beep=0;  delay(10);
        beep=1;
}

/*AD转化函数/
uchar get_ad()
{
        csad=0;           
        adwr=1;  
        _nop_();  
        adwr=0;   
        _nop_();  
        adwr=1;      
        delay(2);      
        P1=0xff;      
        adrd=1;         
        _nop_();   
        adrd=0;                     
        _nop_();
        adval=P1;   
        adrd=1;      
        ad_vo=(float)adval*150.0/256.0;
        return(ad_vo);
}

/*LCD1602显示函数/
void init1602()
{
        EN=0;  
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
}
void write_com(uchar com)
{
        RW=0; delay1();  
        RS=0;   
        delay1();  
        EN=1;   
        delay1();  
        P0=com;   
        delay1();  
        EN=0; delay1();  
        delay(5);
}
void write_data(uchar date)
{
        RW=0;  delay1();
        RS=1;
        delay1();
        EN=1;
        delay1();
         P0=date;
        delay1();
        EN=0;   delay1();
        delay(5);
}
void yj1602()
{
        uchar xs_vo;  
        init1602();  
        xs_vo=battery_v;  
        V1=xs_vo/100;     
        V2=xs_vo%100/10;
        V3=xs_vo%10;   
        write_com(0x80+0x10);  
        for(num=0;num<14;num++)
        {   write_data(table1[num]);   delay(5);  }
write_com(0x80+0x50);  
write_data(' ');  delay(5);  
write_data('D');  delay(5);  
write_data(':');  write_data(' ');  delay(5);  
write_data(lcdd[1]);  delay(5);  
write_data(lcdd[2]);  delay(5);  
write_data('.');  delay(5);  
write_data(lcdd[0]);  delay(5);  
write_data(' ');  delay(5);  
write_data(' ');  delay(5);
write_data('N');  delay(5);  
write_data(':');delay(5);
write_data(lcdd[V1]);  delay(5);  
        write_data(lcdd[V2]);  delay(5);  
        write_data('.');  delay(5);  
        write_data(lcdd[V3]);  delay(5);
        for(num=0;num<16;num++)
        {   write_com(0x1c);   delay(1000);  }
}


一周热门 更多>