发 帖  
原厂入驻New
[经验]

12864程序问题求助贴

2014-6-17 18:40:34  1438
分享
0
搞了好久的12864,编出来的程序还是显示不了,弄的都快疯了。
求解释,到底哪里出现了问题。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned char

sbit rs=P2^3;
sbit rw=P2^2;
sbit en=P2^1;
sbit cs2=P2^4;
sbit cs1=P2^5;
sbit rst=P2^0;

void delay(uint z)
{               
        uint x,y;
        for(x=z;x>0;x++)
        for(y=10;y>0;y++);
                         
}

void check_busy()
{
        rs=0;
        rw=1;
        en=1;
        P1=0xff;
        while(P0&0xff==0x80);
        en=0;       
}

void sel_screen(uchar i)
{
        switch(i)
        {
                case 0:cs1=0;cs2=1;break;
                case 1:cs1=1;cs2=0;break;
                case 2:cs1=0;cs2=0;break;
                default:break;
                                                                  
        }
}

void write_com(uchar com)
{
        check_busy();
        rs=0;
        rw=0;
        en=1;
        P1=com;
        en=0;
}

void write_dat(uchar dat)
{
        check_busy();
        rs=1;
        rw=0;
        en=1;
        P1=dat;
        delay(5);
        en=0;
        delay(5);

}

/*void clear_screen()
{
        uchar page ,row;
        for(page=0xb8;page<0xc0;page++)
        {
                write_cmd(page);
                write_cmd(0x40);
                for(row+0;row<64;row++)
                {
                        write_dat(0x00);
                }
        }
} */

void stringinit()
{
        sel_screen(2);
        write_com(0x30);
        delay(100);
        write_com(0x80);
        delay(100);
        write_com(0x10);
        delay(100);
        write_com(0x0c);
        delay(100);
        write_com(0x01);
        delay(100);
        write_com(0x06);
        delay(100);
}

void display(uchar x,uchar y,uchar *str)
{
        uchar pos;
        if(x==0)
        x=0x80;
        else if(x==1)
        x=0x90;
        else if(x==2)
        x=0x88;
        else if(x==3)
        x=0x98;
        pos=x+y;
        write_com(pos);
        while(*str)
        {
                write_dat(*str++);
        }
}

void main()
{
        stringinit();
        display(0,1,"祖国江山好");
        delay(1000);


}

哪里有问题啊!

快乐小小易 2014-6-17 18:50:01

还想问一个问题,有的程序这样初始化引脚


sbit RS = P3^5; //并行的指令/数据选择信号, H数据, L命令
sbit RW = P3^6; //并行读写选择信号, H读, L写
sbit E = P3^4; //并行使能端, H有效, L无效
sbit PSB = P3^7; //并/串接口选择, H并,L串
sbit RET = P3^3; //复位, L有效


但还有一种这样初始化引脚


sbit E=P1^1; //使能端
sbit RW=P2^2; //读写端
sbit RS=P2^3; //数据命令端口
sbit CS1=P2^5;
sbit CS2=P2^4;


到底是怎么回事啊!


回复

举报

刘佳文 2014-6-22 13:30:07
http://yunpan.cn/QhyDEzsGI4Sft  访问密码 2dec    给你分享一个可以用的12864万年历程序        可以参考下
回复

举报

荒漠小草 2014-6-22 14:04:59
不懂,希望大神讲解一下。
回复

举报

姜小文 2014-6-22 21:29:00
http://shop111131329.taobao.com  小店有12864电子钟
回复

举报

快乐小小易 2014-6-24 15:38:44
164908060 发表于 2014-6-22 13:30
http://yunpan.cn/QhyDEzsGI4Sft  访问密码 2dec    给你分享一个可以用的12864万年历程序        可以参考 ...

谢谢!程序注释的很详细。

回复

举报

刘佳文 2014-6-24 20:52:12
快乐小小易 发表于 2014-6-24 15:38
谢谢!程序注释的很详细。

是的啊     就是有注释才发你呢       适合新手
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /7 下一条

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