微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 12864程序问题求助贴

12864程序问题求助贴

时间:10-02 整理:3721RD 点击:
搞了好久的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);

}
哪里有问题啊!

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

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;

到底是怎么回事啊!

http://yunpan.cn/QhyDEzsGI4Sft  访问密码 2dec    给你分享一个可以用的12864万年历程序        可以参考下

不懂,希望大神讲解一下。

http://shop111131329.taobao.com  小店有12864电子钟

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

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top