找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2870|回复: 9
打印 上一主题 下一主题
收起左侧

12864乱码,重启后显示不一样

[复制链接]
跳转到指定楼层
楼主
本帖最后由 paomo113355 于 2016-4-1 10:55 编辑

#include<reg51.h>
#define uint  unsigned int
#define uchar unsigned char

sbit RW=P2^6;        
sbit RS=P2^5;
sbit EN=P2^7;
sbit PSB=P3^2;
sbit RST=P3^4;
sbit date=P0;
uchar code shu[]="0123456789";
uchar code name[]="1234";
uchar code qq[]="1257570344";
uchar code tel[]="18483662440";
//********************************************
void busy()//12864测忙函数
{
        while(1)
        {
                RS=0;
                RW=1;
                EN=1;
                if((date&0x80)==0)
                {
                        EN=0;
                        break;
                }               
        }                        
}

//******************************************
void delayms(uint time)//毫秒延时
{
        uint x,y;
        for(x=time;x;x--)
                for(y=110;y;y--);
}
//*********************************************
void write_com(uchar com) //写指令
{
        busy();
        RS=0;
        RW=0;
        EN=1;
        delayms(2);
        P0=com;        
        delayms(2);
        EN=0;
}
//**********************************************
void write_date(uchar date)//写数据
{
        busy();
        RS=1;
        RW=0;
        EN=1;
        delayms(2);
        P0=date;
        delayms(2);        
        EN=0;
}
//********************************************
void lcdpos(uchar x,uchar y)//显示地址
{
        if(x==0)
                x=0x80;        
        else
        if(x==1)
                x=0x90;
        else
        if(x==2)
                x=0x88;
        else
                if(x==3)
        x=0x98;
        write_com(x+y);
}        
//***********************************************
void init()//初始化
{        
        delayms(50);
        PSB=1;
        RST=0;
        RST=1;
        write_com(0x30);//基本指令操作
        delayms(5);
        write_com(0x30);
        delayms(5);               
        write_com(0x06);
        delayms(5);
        write_com(0x01);//清除内容
        delayms(5);
        write_com(0x0c);//开显示 关光标               
}
//************************************************
void display()
{        uchar i;
        lcdpos(0,0);//第一行
        for(i=0;name!=0;i++)
        {
                write_date(name);
                delayms(5);        
        }

        lcdpos(1,0);
        for(i=0;qq!=0;i++)
        {
                write_date(qq);
                delayms(5);        
        }

        lcdpos(2,0);        
        write_com(0x88);//第三行
        for(i=0;tel!=0;i++)
        {
                write_date(tel);
                delayms(5);        
        }        
}
//**************************************************
void main(void)
{
        init();
        init();
        display();
        while(1);
}





















分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:107657 发表于 2016-4-1 13:38 | 只看该作者
延时问题
回复

使用道具 举报

板凳
ID:91424 发表于 2016-4-1 13:57 | 只看该作者

能具体一点吗,什么地方的延时
回复

使用道具 举报

地板
ID:96682 发表于 2016-4-1 15:38 | 只看该作者
不明白 LZ 粘贴的源代码如何能显示汉字。
回复

使用道具 举报

5#
ID:79544 发表于 2016-4-2 20:12 | 只看该作者
你把显示地址那个函数不用直接用写地址和写数据函数试试。
回复

使用道具 举报

6#
ID:109833 发表于 2016-4-4 10:28 | 只看该作者
重新编写程序
回复

使用道具 举报

7#
ID:104472 发表于 2016-4-4 15:57 | 只看该作者
可以修改时钟
回复

使用道具 举报

8#
ID:110895 发表于 2016-4-5 15:34 | 只看该作者
延时时间不够长,再适当加长点。
回复

使用道具 举报

9#
ID:111947 发表于 2016-4-5 23:51 | 只看该作者
单片机需要细心
回复

使用道具 举报

10#
ID:112485 发表于 2016-4-6 13:36 | 只看该作者
不错,学习到很多东西
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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