找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3354|回复: 3
收起左侧

求助:单片机1602/LM016L显示屏只显示一半内容

[复制链接]
ID:740738 发表于 2020-4-29 11:34 | 显示全部楼层 |阅读模式
和师兄一起做了一个控制充放电的一个小电路,程序编译成hex文件显示屏只能显示预计一半内容,琢磨了一天没找到原因,求大神指点
实物预计用1602,proteus里面选用的是LM016L。D0到D7是接到了P0口上。全部程序太长所以只发了与显示屏相关的程序

sbit RS=P2^0;   
sbit RW=P2^1;   
sbit EN=P2^2;   
uchar     code table1[]=" TYNCFDKZQXTS";
unsigned char code table2[]=" S:12.0 N:";
unsigned char code lcdd[]="0123456789";
uchar xs_vo,num;


#ifndef _YJ1602_H
#define _YJ1602_H

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('S');
        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);
        }
}



98YREU4DNH{{P31R2[((M$D.png
回复

使用道具 举报

ID:584814 发表于 2020-4-29 13:28 | 显示全部楼层
你写的就是你想的,显示的就是你写的。
回复

使用道具 举报

ID:213173 发表于 2020-4-29 17:52 | 显示全部楼层
起始显示位置与整体左移位置不当,超出范围。

        write_com(0x80+0x10);
        for(num=0;num<14;num++)
        {
                write_data(table1[num]);
                delay(5);
        }
       
        for(num=0;num<16;num++)
        {
                write_com(0x1c);
                delay(1000);
        }
回复

使用道具 举报

ID:740738 发表于 2020-4-29 21:33 来自触屏版 | 显示全部楼层
wulin 发表于 2020-4-29 17:52
起始显示位置与整体左移位置不当,超出范围。

        write_com(0x80+0x10);

问题解决了,谢谢大佬
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表