⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.c

📁 LPC213X有关128*64液晶屏的驱动程序,驱动芯片型号是S6B0724
💻 C
字号:
/****************************************Copyright (c)**************************************************

**--------------File Info-------------------------------------------------------------------------------
** File name:			lcd.c
** Last modified Date:  2006-03-20
** Last Version:		1.0
** Descriptions:		
**
**------------------------------------------------------------------------------------------------------
** Created by:			
** Created date:		2006-03-20
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:			
** Modified date:		2006-03-20
** Version:
** Descriptions:		
**
********************************************************************************************************/
#include  "lcd.h"


#define x1    0x80
#define x2    0x88
#define y     0x80
#define comm  0
#define dat   1





/*************************************************************/
/*                         检查液晶忙标志                         */
/*************************************************************/
void CheckLCMBusy(void)
{
    uint8 BusyFlag;
    do    {
            IO1CLR = LCDRS;
            IO0CLR = LCDRD;
            Delay(2);
            BusyFlag =ReadKD(void)
;
            Delay(2);
            IO0SET = LCDRD;
            BusyFlag = BusyFlag & 0x80;
        }
    while(BusyFlag==0x80);
}
/*************************************************************/
/*                           写液晶指令                         */
/*************************************************************/
void WriteCommandLCM(uchar CommandCode)
{
    IO1CLR = LCDRS;
    IO0CLR = LCDRD;
    Delay(2);
    WriteKD(CommandCode);
    Delay(2);
    IO0SET = LCDRD;
    Delay(2);
}
/*************************************************************/
/*                           写液晶数据                         */
/*************************************************************/
void WriteDataLCM(uchar Data)
{
    SETBIT(PORTC,LCM_DnI);//LCM_DnI = 1;
    CLRBIT(PORTC,LCM_nWR);//LCM_nWR = 0;
    nop();
    PORTA = Data;
    nop();
    SETBIT(PORTC,LCM_nWR);//LCM_nWR = 1;
    nop();
}     
/*************************************************************/
/*                           读液晶数据                         */
/*************************************************************/
/*uchar ReadDataLCM(void)
{
    uchar data RData;
    LCM_DnI = 1;
    LCM_nRD = 0;
    _nop_();
    RData = P0;
    _nop_();
    LCM_nRD = 1;
    _nop_();
    return(RData);
}*/     
/*************************************************************/
/*                           清液晶显示                         */
/*************************************************************/
void ClearLCM(uchar ddd)
{
    uchar  ii,jj;

    WriteCommandLCM(0x40);                //START LINE ADDRESS SET
    WriteCommandLCM(0xAF);                //SET PAGE0 ADDRESS
    for(ii=0;ii<8;ii++)
        {
            WriteCommandLCM(0xB0+ii);    //SET PAGE0 ADDRESS ++
            WriteCommandLCM(0x10);        //SET THE COLUMN ADDRESS MSB
            WriteCommandLCM(0x02);        //SET THE COLUMN ADDRESS LSB
            for(jj=128;jj!=0;jj--)
                WriteDataLCM(ddd);
        }            
}     
/*************************************************************/
/*                           液晶初始化                         */
/*************************************************************/
void LCMInit(void)
{
    SETBIT(DDRB,4);
    SETBIT(PORTB,4);
     SETBIT(DDRB,6);
    SETBIT(PORTB,6);
    DDRC=0XFF;
    DDRA=0XFF;
    CLRBIT(PORTC,LCM_nCS);//LCM_nCS = 0;
    SETBIT(PORTC,LCM_nWR);//LCM_nWR = 1;
    SETBIT(PORTC,LCM_nRD);//LCM_nRD = 1;

    CLRBIT(PORTC,LCM_nRST);//LCM_nRST = 0;
    nop();
    nop();
    nop();
    nop();
    nop();

    SETBIT(PORTC,LCM_nRST);//LCM_nRST = 1;            //至少1us复位液晶

       WriteCommandLCM(0xA1);
    WriteCommandLCM(0xC8);
    WriteCommandLCM(0xA2);
    WriteCommandLCM(0x2F);
    WriteCommandLCM(0x21);    
                            //REGULATOR RESISTOR SELECT:(1+(Rb/Ra)=5.29)X1.76=V0=11.07V
    WriteCommandLCM(0x81);    
    WriteCommandLCM(0x03);    
                            //REFERENCE VOLTAGE REGISTER SET:Vref=2V  Vev=1.76=(1-(63-27)/300)*Vref
}
/*************************************************************/
/*                显示128*64的图形函数:纵向倒序                 */
/*************************************************************/
#define Normal                    0            //左右反转显示
#define Reverse                    1            //对于该液晶的显示为正常从左到右显示    
void Display128x64(uchar ADCSelectBit, uchar *TableArray)
{
    uchar  ii,jj;

    if(ADCSelectBit == Reverse) WriteCommandLCM(0xA0);
    else WriteCommandLCM(0xA1);
    WriteCommandLCM(0x40);                //START LINE ADDRESS SET
    WriteCommandLCM(0xAF);                //SET DISPLAY ON
    for(ii=0;ii<8;ii++)
        {
            WriteCommandLCM(0xB0+ii);    //SET PAGE0 ADDRESS ++
            WriteCommandLCM(0x10);        //SET THE COLUMN ADDRESS MSB
            WriteCommandLCM(0x02);        //SET THE COLUMN ADDRESS LSB
            for(jj=128;jj!=0;jj--)
                {
                    WriteDataLCM(*TableArray);
                    TableArray++;
                }
        }            
       WriteCommandLCM(0xA1);
}
/*************************************************************/
/*                               主函数                             */
/*************************************************************/
void main(void)
{
    LCMInit();

    for(;;)
        {
            ClearLCM(0xf0);
            DelayMS(200);
            ClearLCM(0x0f);
            DelayMS(200);
            ClearLCM(0xff);
            DelayMS(200);
            ClearLCM(0x00);
            DelayMS(200);

            Display128x64(Normal,zimo);
            DelayMS(1000);
            Display128x64(Reverse,zimo);
            DelayMS(300);
        }
}
/*************************************************************/
/*                                结束                             */
/*************************************************************/


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -