找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3534|回復: 13
收起左側

【lcd12864】我想問一下我的顯示程序有沒有問題?

  [復制鏈接]
ID:171172 發(fā)表于 2017-4-29 10:52 | 顯示全部樓層 |閱讀模式
屏亮無顯示,只能看見淡淡的像素點,會不會跟我之前把屏接反有關?但是屏的正負極是軸對稱的,難道信號線接反也能爆機?
#include<reg52.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcdRS=P2^4;
sbit lcdRW=P2^5;
sbit lcdE=P2^6;
sbit PSB=P2^

void delay_ms(uint xms)      //延時
{
  uint i,j;
  for(i=xms;i>0;i--)
    for(j=114;j>0;j--);
}

void writecom(uchar com)       //LCD寫入指令
{
  lcdRS=0;
  lcdRW=0;
  lcdE=0;
  P0=com;
  delay_ms(1000);
  lcdE=1;
  delay_ms(5);
  lcdE=0;
  delay_ms(5);
}

void writedata(uchar dat)      //LCD寫入數據
{
  lcdRS=1;
  lcdRW=0;
  lcdE=0;
  P0=dat;
  delay_ms(1000);
  lcdE=1;
  delay_ms(5);
  lcdE=0;
  delay_ms(5);
}

void main()
{
  lcdRS=0;
  lcdRW=0;
  lcdE=0;
  writecom(0x06);
  writecom(0x0c);
  writecom(0x30);
  writecom(0x01);
  writedata('1');
  while(1);
}


回復

使用道具 舉報

ID:123289 發(fā)表于 2017-4-29 22:43 | 顯示全部樓層
顯示是否清晰與液晶分子上所加的電壓有關。查查你的LCD手冊會有發(fā)現的。
回復

使用道具 舉報

ID:148552 發(fā)表于 2017-4-30 09:10 | 顯示全部樓層
12864寫入數據或者命令之前要判斷液晶數據口是否繁忙,你這個都沒有判斷繁忙的函數
void check_busy()//判忙
{         

     uchar busy;
     P0=0xff;
         RS=0;
         RW=1;
         do
         {
          EN=1;
          busy=P0;
          EN=0;
           }while(busy&0x80);
           EN=0;
}

這里給個判忙函數作為參考
回復

使用道具 舉報

ID:162136 發(fā)表于 2017-4-30 10:18 | 顯示全部樓層
看這延時用的夠夸張了。
回復

使用道具 舉報

ID:194955 發(fā)表于 2017-4-30 11:22 | 顯示全部樓層
現在應該檢查的是硬件問題吧,程序看不出什么
回復

使用道具 舉報

ID:195184 發(fā)表于 2017-5-1 10:42 | 顯示全部樓層
延時程序不太合理吧
回復

使用道具 舉報

ID:111634 發(fā)表于 2017-5-1 17:54 | 顯示全部樓層
本帖最后由 zl2168 于 2017-5-1 17:55 編輯

12864.jpg
LCD12864顯示屏顯示漢字


Proteus仿真一下,確認有效。
實驗25 LCD12864顯示屏顯示.rar (60.48 KB, 下載次數: 5)

以上摘自張志良編著《80C51單片機實用教程——基于Keil CProteus》高等教育出版社ISBN 978-7-04-044532-9


仿真電路和Hex文件能在清華出版社網站免費下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網上書店打折購買。


回復

使用道具 舉報

ID:149451 發(fā)表于 2017-5-1 18:52 | 顯示全部樓層
LZ,別照搬版主給的實例,你的是帶字庫的LCD,驅動命令、端子應用都不同的。注意喲
回復

使用道具 舉報

ID:171172 發(fā)表于 2017-5-4 09:40 | 顯示全部樓層
w1179benp 發(fā)表于 2017-5-1 18:52
LZ,別照搬版主給的實例,你的是帶字庫的LCD,驅動命令、端子應用都不同的。注意喲

謝謝,找到原因了,我這恰恰是不帶字庫的lcd(換了新的還是不帶字庫,直到別人了我一個用過沒問題的lcd才解決)所以怎么都顯示不出來因為字沒定義
回復

使用道具 舉報

ID:171172 發(fā)表于 2017-5-4 09:58 | 顯示全部樓層
你像風兒來了 發(fā)表于 2017-4-30 09:10
12864寫入數據或者命令之前要判斷液晶數據口是否繁忙,你這個都沒有判斷繁忙的函數
void check_busy()//判 ...

延時5ms還能碰上忙的?
回復

使用道具 舉報

ID:193608 發(fā)表于 2017-5-4 17:43 | 顯示全部樓層
你這個延時是不是有點太長了,太長太短都不可以的  有時序圖,你可以看看
回復

使用道具 舉報

ID:313218 發(fā)表于 2018-6-17 11:10 | 顯示全部樓層
zl2168 發(fā)表于 2017-5-1 17:54
LCD12864顯示屏顯示漢字

有C程序嗎
回復

使用道具 舉報

ID:353369 發(fā)表于 2018-6-17 17:44 | 顯示全部樓層
沒錯,你輸入的很對
回復

使用道具 舉報

ID:111634 發(fā)表于 2018-6-18 11:15 | 顯示全部樓層

仿真電路和Hex文件能在清華出版社網站免費下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網上書店打折購買。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表