找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2533|回復: 0
打印 上一主題 下一主題
收起左側

求助:LCD12864測試字符表時顯示問題,加while(1);不顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:115705 發(fā)表于 2016-4-24 14:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
問題描述:我用12864液晶顯示字符表的時候,液晶顯示字符不停地從第一行到最后一行快速刷新;后來我打算在主函數(shù)中加入“while(1);”希望可以停止刷新,字符穩(wěn)定顯示在液晶屏幕上。但是下載程序到單片機中,結果什么都不顯示了。嘗試了很多方法:驗證串行時序,查詢手冊規(guī)范初始化,調(diào)整延長時間,但并沒解決,望大家?guī)兔φ艺覇栴}。
基本信息:lcd:jm12864g  驅動器是st7920                                 單片機:stc89c52 編譯環(huán)境: keil軟件
程序內(nèi)容:
#include <reg52.h>
#include <intrins.h>

#define uchar unsigned char
#define uint  unsigned int
//*******JM12864端口定義***********//     
sbit cs=P3^5;            //數(shù)據(jù)命令輸入選擇
sbit sid=P3^6;            //讀寫操作選擇
sbit sclk=P3^4;         //液晶使能控制
sbit psb=P3^7;           //串并數(shù)據(jù)傳輸方式選擇
sbit dula=P2^6;
sbit wela=P2^7;          //位鎖端鎖


//***********************************************************//
//*          延遲函數(shù)                                                                                          *//
//***********************************************************//
void delay_Nms(int ms)
{
    while(ms--)
        {
      uchar i;
          for(i=0;i<250;i++)  
           {
        delayNOP();
           }
        }
}


//***********************************************************//
//*        發(fā)送一個字節(jié)數(shù)據(jù)                                                                              *//
//***********************************************************//

void sendbyte(uchar byte)
{
        uchar i;
        for(i=0;i<8;i++)
        {
                if((byte<<i)&0x80)  
        {  
            sid= 1;  
        }  
        else  
        {  
            sid= 0;  
        }  
        sclk= 0;  
        sclk= 1;   
    }

}

void send(bit start, uchar ddata) //寫指令或數(shù)據(jù)
{
  uchar start_data,Hdata,Ldata;
  if(start==0)
    start_data=0xf8;  //寫指令
  else      
    start_data=0xfa;  //寫數(shù)據(jù)
  cs=1;
  Hdata=ddata&0xf0;    //取高四位
  Ldata=(ddata<<4)&0xf0;  //取低四位
  sendbyte(start_data);   //發(fā)送起始信號
  delay_Nus(600);
  sendbyte(Hdata);       //發(fā)送高四位
  delay_Nus(600);
  sendbyte(Ldata);    //發(fā)送低四位
  delay_Nus(600);
  cs=0;
}


//***********************************************************//
//*          LCD初始化設定                                                                                *//
//***********************************************************//
void lcd_init()
{
        psb=0;
        
        send(0,0x30);    //基本指令集
        delay_Nms(1);
        send(0,0x30);    //基本指令集
        delay_Nms(1);
        send(0,0x0c);    //顯示開,關光標
        delay_Nms(1);
        send(0,0x01);    //清屏
        delay_Nms(20);
        send(0,0x06);    //游標右移
        delay_Nms(10);
        send(0,0x80);    //設定起始位置
}

//***********************************************************//
//*                主程序                                                                                       *//
//***********************************************************//
  void main()
{
   uchar i;
    delay_Nms(1);                 //延時

    lcd_init();                //初始化lcd  

     send(0,0x80);             //設置顯示位置為第一行第一個字符
                 for(i=1;i<16;i++)
                 {send(1,0x00+i);}
     send(0,0x90);             //設置顯示位置為第二行第一個字符
                 for(i=1;i<16;i++)         
                 {send(1,0x10+i);}
     send(0,0x88);
                 for(i=1;i<16;i++)
                 {send(1,0x20+i);}
     send(0,0x98);             //設置顯示位置為第四行第一個字符
                 for(i=1;i<16;i++)
                 {send(1,0x30+i);}

      while(1);
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

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