標題: 89C52單片機LCD液晶顯示 [打印本頁]

作者: mingjian    時間: 2017-7-18 11:21
標題: 89C52單片機LCD液晶顯示

#include "lcd_show.h"

#define uint unsigned int
#define uchar unsigned char

#define CSA P2_1
#define CSB P2_0
#define E P2_3
#define RW P2_5
#define DI P2_6

sbit busy_bit=ACC^7;                //lcd state byte bit 7

/*下面是對液晶屏gxm12864d操作的函數(shù), 128x64點陣,漢字顯示,CSA,CSB用來進行左右顯示區(qū)的選擇。*/

/*  發(fā)命令i到主窗口*/
void lcd_mwc(uchar i)
{         
     CSA=1;
     CSB=0;
     RW=1;
     DI=0;
     do {ACC=LCD;}
         while (busy_bit) ;//wait for lcd not busy
     RW=0;
     LCD=i;
}

/*  寫數(shù)據(jù)i到主窗口*/
void lcd_mwd(uchar i)
{         
     CSA=1;
     CSB=0;
     RW=1;
     DI=0;
     do {ACC=LCD;} while (busy_bit);//wait for lcd not busy
     RW=0;
     DI=1;
     LCD=i;
}

/*   清屏   */
void lcd_clear(void)
{
     uchar i;
     uchar page;
     for (page=0xb8;page<0xc0;page++)
         {
             lcd_mwc(page);       /*設(shè)置顯示頁面*/

             lcd_mwc(0x40);       /*設(shè)置列地址*/

             for (i=0;i<64;i++)
             {
   
                 lcd_mwd(0);
             }
         }
}

//初始化lcd
void lcd_init(void)
{
        lcd_mwc(0xc0);

        lcd_mwc(0x3f);

}

//dispm_hz_up() display up half of a hanzi in left area
void dispm_hz_up(uchar code * hz)
{
        uchar i;
        for (i=0;i<16;i++) lcd_mwd(*(hz+i));
}

//dispm_hz_down() display down half of a hanzi in left area
void dispm_hz_down(uchar code * hz)
{
        uchar i;
        for (i=16;i<32;i++) lcd_mwd(*(hz+i));
}


void main(void)
{
        E=1;
        lcd_clear();
        lcd_init();

        lcd_mwc(0xb8);
        lcd_mwc(0x40);
       
        dispm_hz_up(&QING);
        dispm_hz_up(&CHA);
        dispm_hz_up(&KA);
       
        lcd_mwc(0xb9);
        lcd_mwc(0x40);
       
        dispm_hz_down(&QING);
        dispm_hz_down(&CHA);
        dispm_hz_down(&KA);//display

}

89C52單片機LCD液晶顯示.png (60.22 KB, 下載次數(shù): 89)

89C52單片機LCD液晶顯示.png





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