標(biāo)題: 基于STC89C52的無字庫LCD12864不顯示,大神幫忙看看什么問題 [打印本頁]

作者: yekai_yh    時間: 2018-8-25 10:38
標(biāo)題: 基于STC89C52的無字庫LCD12864不顯示,大神幫忙看看什么問題
網(wǎng)上下了好多測試程序,都顯示不了,無字庫的12864,分屏的,大神給幫忙看看,程序如下:#include <reg52.h>
#include"intrins.h"
#define  uchar unsigned char
#define  uint  unsigned  int
#define databus P0 //數(shù)據(jù)口
sbit RS=P2^6;  //寫指令/數(shù)據(jù)
sbit RW=P2^5; //讀/寫
sbit EN=P2^7;  //使能
sbit CS1=P3^2;//片選1,控制左半屏,高電平有效
sbit CS2=P3^3;//片選1,控制右半屏,高電平有效
void delay(uchar  ms)  //延遲
{
   uchar   i;
   uchar   j;
   for(i=0;i<100;i++)
   for(j=0;j<ms;j++);
}

void busy()        //忙檢查
{
   P0=0x00;
   RS=0;
   RW=1;
   EN=1;
   while(P0&0x80);
   EN=0;
}
void write_cmd(uchar value)//寫指令
{
   busy();
   RS=0;
   RW=0;
   EN=1;
   databus=value;
   EN=1;
   delay(5);
   EN=0;

}
void write_data(uchar value)//寫數(shù)據(jù)
{
   busy();
   RS=1;
   RW=0;
   EN=1;
   databus=value;
   EN=1;
   delay(5);
   EN=0;

}
void set_page(uchar page)//設(shè)置頁
{
   page=0xb8||page;
   write_cmd(page);

}
void set_line(uchar startline)//設(shè)置行
{
   startline=0xc0|startline;
   write_cmd(startline);

}
void set_column(uchar column)//設(shè)置列
{
   column=column&0x3f;
   column=0x40|column;
   write_cmd(column);

}

void set_onoff(uchar onoff)//開關(guān)顯示
{
   onoff=0x3e|onoff;
   write_cmd(onoff);

}

void slectscreen(uchar screen)//選擇屏幕
{
   switch(screen)
   {
    case 0:CS1=0;CS2=0;break;
    case 1:CS1=0;CS2=1;break;
    case 2:CS1=1;CS2=0;break;
    default:break;
   }

}

void clearscreen(uchar screen) //清屏
{
   uchar i,j;
   slectscreen(screen);
   for(i=0;i<8;i++)
   {
    set_page(i);
    set_column(0);
    for(j=0;j<64;j++)
    {
     write_cmd(0x00);
    }
   }

}

void init()        //初始化
{
   busy();
   slectscreen(0);
   set_onoff(0);
   slectscreen(0);
   set_onoff(1);
   clearscreen(0);
   set_line(0);

}

void display(uchar ss,uchar page,uchar column,uchar *p)        //顯示函數(shù)
{
   uchar i;
   slectscreen(ss);
   set_page(page);
   set_column(column);
   for(i=0;i<16;i++)
   {
    write_data(p[i]);
   }
   set_page(page+1);
   set_column(column);
   for(i=0;i<16;i++)
   {
    write_data(p[i+16]);
   }
}
uchar code  huan[]=
{0x00,0x08,0x18,0x28,0x08,0x08,0xE8,0x0F,0x18,0x20,0x1C,0x64,0x84,0x44,0x24,0x14,
0x00,0x20,0x60,0x30,0x18,0x06,0x03,0x0C,0x10,0x20,0x2C,0x43,0x43,0x4C,0x10,0x20,
};
uchar code  ying[]=
{0x00,0x00,0xFC,0x04,0x04,0x04,0xFC,0x02,0x02,0x04,0xFC,0x00,0x04,0xCE,0x41,0x40,
0x00,0x40,0x43,0x44,0x42,0x40,0x5F,0x40,0x41,0x42,0x47,0x40,0x20,0x1F,0x20,0x40,
};
void main()        //主函數(shù)
{
init();
clearscreen(0);
while(1)
{
set_line(1);
display(1,0,2*16,huan);
display(1,0,3*16,ying);
}
}



QQ圖片20180825100659.jpg (41.29 KB, 下載次數(shù): 106)

接線圖

接線圖

webwxgetmsgimg (5).jpg (302.64 KB, 下載次數(shù): 103)

12864

12864

webwxgetmsgimg (6).jpg (214.57 KB, 下載次數(shù): 132)

實際顯示

實際顯示

作者: yekai_yh    時間: 2018-8-25 15:50
第一次發(fā)帖,沒人回復(fù)啊,是需要懸賞?
作者: 楊雪飛    時間: 2018-8-25 16:20
3腳V0對地接個電阻調(diào)下對比度。另外LCD不同廠家生產(chǎn)的時序不一定一樣。
作者: 楊雪飛    時間: 2018-8-25 16:35

這個是官網(wǎng)找的PDF,上邊有例程,供參考

DS12864-10說明書V11.pdf

1.03 MB, 下載次數(shù): 56


作者: 人中狼    時間: 2018-8-25 17:42
需要調(diào)節(jié)對比度的,要看你的學(xué)習(xí)板的電路該如何和12864連接,學(xué)習(xí)板的電路要和12864對應(yīng)上
作者: wc86110    時間: 2018-8-26 00:35
明顯是開發(fā)板端口設(shè)置問題,這時液晶屏并未與單片機(jī)有關(guān)聯(lián),只是背光得電發(fā)光而已
作者: yekai_yh    時間: 2018-8-29 21:34
多謝大家了,端口也檢查了,電位器也加了,還是不行,直接換了帶字庫的屏,沒有片選的,新手入門,帶片選的太難了
作者: 好奇心強(qiáng)    時間: 2019-5-5 10:07
這個問題我剛剛好知道,在接口正確的情況下,在LCD屏的接口第1、3、18腳接一顆5.1K電位器。就是說電位器1腳接GND,2腳接V0,3腳接VOUT;原理就是LCD需要一個負(fù)電壓才能點亮,而屏不需要直接給負(fù)壓,給個電位器就行了。
作者: 冷月楓    時間: 2019-8-6 14:17
yekai_yh 發(fā)表于 2018-8-29 21:34
多謝大家了,端口也檢查了,電位器也加了,還是不行,直接換了帶字庫的屏,沒有片選的,新手入門,帶片選的 ...

帶字庫的怎么弄啊。求解

作者: 冷月楓    時間: 2019-8-6 14:55
yekai_yh 發(fā)表于 2018-8-25 15:50
第一次發(fā)帖,沒人回復(fù)啊,是需要懸賞?

咱倆情況一樣哎
作者: elic885    時間: 2021-9-4 08:40
今天遇到了同樣的問題,在stc90c51上能跑通的程序,換上stc89c51就跑不通,通過排除法發(fā)現(xiàn)卡在12864初始化清屏這一塊,直接卡死了?反正后續(xù)程序不跑了,把這一段屏蔽掉后續(xù)就能跑.....
作者: DddAa    時間: 2021-9-4 09:26
不關(guān)你片不片選的事,你要寫好字庫取模,沒字庫的他不會內(nèi)置取模好的字庫給你,要自己做模,然后跟程序一并燒錄進(jìn)單片機(jī)的flash里面才行的。
作者: elic885    時間: 2021-9-4 09:33
elic885 發(fā)表于 2021-9-4 08:40
今天遇到了同樣的問題,在stc90c51上能跑通的程序,換上stc89c51就跑不通,通過排除法發(fā)現(xiàn)卡在12864初始化 ...

更新進(jìn)展:應(yīng)該是程序存儲器空間不足了,刪減一些不必要的函數(shù)定義就好了。挺奇怪的,存儲空間不足也能寫進(jìn)去?
作者: nbkls    時間: 2023-3-23 22:29
好奇心強(qiáng) 發(fā)表于 2019-5-5 10:07
這個問題我剛剛好知道,在接口正確的情況下,在LCD屏的接口第1、3、18腳接一顆5.1K電位器。就是說電位器1腳 ...

謝謝,解決了我的問題





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1