找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2925|回复: 1
收起左侧

1602显示屏显示不完全问题

[复制链接]
ID:595036 发表于 2019-8-12 16:24 | 显示全部楼层 |阅读模式
我是看着郭天祥的书跟着学习的,但是看着书上打了一些代码之后,放到仿真图里,显示出来的字符却不完全。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="hello everyone!";
uchar code table1[]="welcome to here!";
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit dula=P2^6;
sbit wela=P2^7;
uchar num;
                void delay(uint z)
        {
                uint x,y;
                for(x=z;x>0;x--)
                        for(y=110;y>0;y--);
        }
                void write_com(uchar com)
                {
                        lcdrs=0;
                        P0=com;
                        delay(5);
                        lcden=1;
                        delay(5);
                        lcden=0;
                }
                void write_data(uchar date)
                {
                        lcdrs=1;
                        P0=date;
                        delay(5);
                        lcden=1;
                        delay(5);
                        lcden=0;
                }
                void init()
                {
                        dula=0;
                        wela=0;
                        lcden=0;
                        write_com(0x38);
                        write_com(0x0c);
                        write_com(0x06);
                        write_com(0x01);
                }
                void main()
                {
                        init();
                        write_com(0x80+0x10);
                        for(num=0;num<15;num++)
                        {
                                write_data(table[num]);
                                delay(5);
                        }
                        write_com(0x80+0x50);
                        for(num=0;num<16;num++)
                        {
                                write_data(table1[num]);
                                delay(5);
                        }
                        for(num=0;num<16;num++)
                        {
                                write_com(0x18);
                                delay(200);
                        }
                        write_com(0x01);
                        while(1);
                        }
                                       
                         

51hei截图20190812162352.png
回复

使用道具 举报

ID:213173 发表于 2019-8-13 09:50 | 显示全部楼层
郭天祥的程序在TX-1C实验板上测试没有问题,用仿真软件测试会发生左移溢出。可能是两种LCD1602的驱动码有点区别,你的显示程序是空第一格写的,再左移当然溢出了。你把最后左移语句和清0命令删除就可以正常显示了。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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