一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
楼主: heli989898

[其他综合] 一乐买的12864z不显示,请各位大侠看看

 火..   [复制链接]
 楼主| 发表于 2012-7-27 20:04 | 显示全部楼层

的!!!!!!!!!!!!!!!!!
回复

使用道具 举报

发表于 2012-7-27 22:49 | 显示全部楼层
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define dat P0
sbit rs=P1^0;
sbit rw=P1^1;
sbit e=P1^2;
sbit psb=P1^3;
sbit reset=P2^4;
sbit button=P2^6;
sbit finish=P2^7;
sbit buzzer=P3^7;

uchar busy;             //1602判忙標志//
void delay_1ms(void);   //延時程序
void display(uchar *t0,uchar *t1,uchar *t2,uchar *t3);     //顯示程序
void busy_1602(void);   //液晶查忙程序   
void shj_1602(uchar a);  //液晶寫數據程序
void int_1602(void);     //液晶初始化
void zhl_1602(uchar a);  //液晶寫指令程序
void delay(uint i);
void beep();
void clearscr();

uchar mode;
uchar n;
uchar comsum,comnow;
uchar usersum,usernow;
uchar rand0,rand1;
//                "                "
uchar code table0[16]={"====21翴村栏===="};  
uchar code table1[16]={"?乃筿??舦┮Τ"};
uchar code table2[16]={"膀?LCD12864    "};
uchar code table3[16]={"?S21 秨﹍祇礟  "};
uchar code table4[16]={"筿福璶礟:S19秨﹍"};
uchar code table9[16]={"?S22 ?程沧秤璽"};
uchar code table5[16]={"?產璶礟:       "};
uchar code table7[16]={"?S21 膥尿璶礟  "};
uchar code table8[16]={"?S22 挡?璶礟  "};

uchar code win[16]={"?尺眤  眤墓?  "};
uchar code draw[16]={"叫?猳  琌キЫ  "};
uchar code lose[16]={"?框狙  眤块?  "};
uchar code restart[16]={"?RESET 龄?穝?"};



uchar code table6[16]={"                "};
uchar code type[4]={0x03,0x04,0x05,0x06};
uchar code puke[13]={"1234567890JQK"};
uchar code num[10]={"0123456789"};
uchar tablecom[16]={"                "};
uchar tableuser[16]={"                "};
uchar comfen[16]={"筿福眔だ        "};
uchar userfen[16]={"?產眔だ        "};

//主程序//
void main(void)
{
        int i=0;
        mode=0;
        psb=1;
        reset=1;
        n=0;
                //m=1;                                                        //顯示順序輔助
        TMOD=0x10;                                                 //設置為T1定時器
        TH1=0xdd;                                                 //裝定時器初值
        TL1=0xff;
        TR1=1;                                                         //開中斷
        ET1=1;
        EA=1;
        display(table0,table1,table2,table3);
        for(;;)
        {
                if(!button && mode==0)
                {
                        delay(4000);
                        if(!button)
                        {
                                //table0[15]=puke[n%13];
                                beep();
                                display(table5,table6,table7,table8);
                                mode=10;
                        }
                }
                if(!button && mode==10)//玩家要牌
                {
                        delay(4000);
                        i=0;
                        usernow=0;usersum=0;
                        while(finish && mode==10)
                        {
                                if(!button)
                                {
                               
                                delay(6000);
                                beep();
                                rand0=usernow;
                                usernow=n;
                                usernow=usernow%13;
                                usersum+=(usernow+1);
                                if(usersum>=21)
                                {
                                        mode=11;
                                }
                                rand1=rand0+usernow;
                                rand1%=4;
                                tableuser[i]=type[rand1];
                                tableuser[i+1]=puke[usernow];
                                tableuser[14]=num[usersum/10];
                                tableuser[15]=num[usersum%10];
                                i+=2;
                                display(table5,tableuser,table7,table8);
                                }
                        }
                        mode=11;
                        display(table5,tableuser,table4,tablecom);
                }

                if(!button && mode==11)
                {
                        delay(4000);
                        if(!button)
                        {
                                i=0;
                                comnow=0;comsum=0;
                                beep();
                                while(comsum>=0 && comsum<15)
                                {
                                        rand0=comnow;
                                        comnow=n;
                                        comnow=comnow%13;
                                        comsum+=(comnow+1);
                                        rand1=rand0+comnow;
                                        rand1%=4;
                                        tablecom[i]=type[rand1];
                                        tablecom[i+1]=puke[comnow];
                                        tablecom[14]=num[comsum/10];
                                        tablecom[15]=num[comsum%10];
                                        display(table5,tableuser,table4,tablecom);
                                        i+=2;

                                        mode=21;
                                        //table6[14]=puke[
                                }
                                display(table9,tableuser,table4,tablecom);
                        }
                }
                if(!finish && mode==21)
                {
                        delay(4000);
                        if(!finish)
                        {
                                beep();
                        comfen[10]=num[comsum/10];
                                comfen[11]=num[comsum%10];
                                userfen[10]=num[usersum/10];
                                userfen[11]=num[usersum%10];
                                if(usersum>21 && comsum>21)
                                {
                                        display(userfen,comfen,draw,restart);
                                        }
                                if((usersum>0 && usersum<=21) && (comsum>0)&&(comsum<=21))
                                {
                                        if(usersum>comsum)
                                                display(userfen,comfen,win,restart);
                                        if(usersum<comsum)
                                                display(userfen,comfen,lose,restart);
                                        if(usersum==comsum)
                                                display(userfen,comfen,draw,restart);
                                }
                                if((usersum>0 && usersum<=21) && comsum>21)
                                        display(userfen,comfen,win,restart);
                                if((comsum>0)&&(comsum<=21) && usersum>21)
                                        display(userfen,comfen,lose,restart);
                       
                        }
                }

        }
}
void clearscr()
{
display(table6,table6,table6,table6);

}
void beep()
{
        unsigned int i;
        //i=200;
        //while(i--);
        buzzer=0;
        i=2000;
        while(i--);
        buzzer=1;
}

void delay(uint i)
{
        while(i--);
}
//延時程序//
void delay_1ms(void)
{
  uchar i,j;
  for(i=0;i<10;i++)
  for(j=0;j<20;j++);
}

//液晶顯示程序//
void display(uchar *t0,uchar *t1,uchar *t2,uchar *t3)
{
       uchar i;

       int_1602();
       zhl_1602(0x80);
       for(i=0;i<16;i++)
       {
            shj_1602(*(t0+i));
       }
       zhl_1602(0x90);
                 for(i=0;i<16;i++)
                 {
            shj_1602(*(t1+i));
                 }
                 zhl_1602(0x88);
                 for(i=0;i<16;i++)
                 {
            shj_1602(*(t2+i));
                 }
                 zhl_1602(0x98);
                 for(i=0;i<16;i++)
                 {
            shj_1602(*(t3+i));
                 }
}
//查詢忙碌標志信號程序//
void busy_1602(void)
{
        do
        {
            e=0;
            rw=1;
            rs=0;
            e=1;
            busy=dat;

            e=0;   
            delay_1ms();
        } while(busy&&0x80==1);
}

//寫指令到LCM程序//
void zhl_1602(uchar a)
{
       busy_1602();
       e=0;
       rw=0;
       rs=0;
       e=1;
       dat=a;
       e=0;
}

//寫數據到LCM程序//
void shj_1602(uchar a)
{
       busy_1602();
       e=0;
       rw=0;
       rs=1;
       e=1;
       dat=a;
       e=0;
}

//啓動LCM程序//

void int_1602(void)
{
       zhl_1602(0x38); //8線控制模式
       zhl_1602(0x0e);
       zhl_1602(0x06);
}
void int1() interrupt 3                         //T1中斷,時間是5ms
{
        TR1=0;                                                         //關中斷
        TH1=0xfd;                                                //裝定時器初值實現5ms定時
        TL1=0xff;
        ET1=1;                                                         //開中斷
        TR1=1;
        n++;
        //display1(1,2,3,4);
        //display2(10,11,12,13);
       
}
回复

使用道具 举报

发表于 2012-7-27 22:59 | 显示全部楼层
本帖最后由 灰太狼8888 于 2012-7-27 23:00 编辑

上面程序中乱码实际为BIG5码繁体中文,可由浏览器选项选成BIG5码查看。事实上这个显示屏是识别BIG5码的,输入国标码会乱码。

9990.jpg



999.jpg



源文件 1602.rar (1.89 KB, 下载次数: 2370)


接口定义(我用的51实验板的1602接口,完美点亮)(详见源文件)。

99900.jpg
回复

使用道具 举报

发表于 2012-7-27 23:32 | 显示全部楼层
刚运行了一下
IMG_2111.jpg
IMG_2108.jpg



开闪光灯
IMG_2109.jpg
IMG_2110.jpg
回复

使用道具 举报

 楼主| 发表于 2012-7-28 09:54 | 显示全部楼层
用灰太狼的程序试了,还是不显示,用qc12864b可以显示
回复

使用道具 举报

 楼主| 发表于 2012-7-28 10:06 | 显示全部楼层
照片上了

3个12864合影

3个12864合影

一乐买的不显示

一乐买的不显示

灰太狼给的程序

灰太狼给的程序

灰太狼给的程序

灰太狼给的程序
回复

使用道具 举报

发表于 2012-8-4 16:53 | 显示全部楼层
本帖最后由 yleee 于 2012-8-4 16:57 编辑

其实楼主就是弄不清楚各接口的定义,16个接口的直接替换20个接口的12864,能显示就太神奇了,跟楼主说如果用不了退回给我们,运费我们承担,没相当楼主给出以下的评价,呵呵!还好实话实说。
买1块,卖家给了2块,测试2块都是坏的,和卖家联系了,卖家说是我不会用,到一乐论坛发帖网友的能显示,网友把测试程序发来,还是不显示,卖家说退回,就15元,难得麻烦了。买了其他lcd都可以,给的好评,这个就给差评了。

2012-8-4 16-52-51.jpg
2012-8-4 16-57-13.jpg
回复

使用道具 举报

发表于 2012-8-4 17:46 | 显示全部楼层
本帖最后由 yleee 于 2012-8-4 17:49 编辑

怕其他网友误会,把聊天记录全搬上来
2012-8-4 17-43-06.jpg
2012-8-4 17-43-31.jpg
2012-8-4 17-44-20.jpg
2012-8-4 17-44-48.jpg
回复

使用道具 举报

发表于 2012-8-4 17:53 | 显示全部楼层
楼主用的QC12864B液晶模块是20引脚的:
QC12864B汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。
主要技术参数和显示特性:
电源:VDD 3.3V~+5V(内置升压电路,无需负压);
显示内容:128列× 64行
显示颜色:黄绿屏,蓝屏
显示角度:6:00钟直视
LCD类型:STN
与MCU接口:8位并口或串行
配置LED背光
多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等
回复

使用道具 举报

发表于 2012-8-4 18:01 | 显示全部楼层
背光亮,用我的qc12864b显示正常,一乐买的2块都不显示,和买家联系说要加负压调节对比度,加了max232的负 ...
heli989898 发表于 2012-7-26 21:39 https://www.yleee.com.cn/images/common/back.gif



    伙计,说不定这两个屏都是死在你的手里了,ST7920是不需要负压的,手册上也说了,V0脚电压输入范围是-0.3~7V,加负压可能会烧掉驱动电路的,驱动电路嗝屁了还指望它能显示?
QQ截图20120804173044.jpg
QQ截图20120804175712.jpg
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-8-20 16:50 , Processed in 0.044689 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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