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

📄 ca320240.c

📁 本程序提供sunson lcd CA320240 的源码。可以显示数字、汉字、图案等。
💻 C
📖 第 1 页 / 共 4 页
字号:
/* 320240简单演示程序(8080时序)
硬件连线方式(总线式)
LCM -------------- CPU
CS  -------------- P2.7  A15
A0  -------------- P2.0  A8
WR  -------------- WR
RD  -------------- RD
DB0 ~ 7----------- P0.0 ~ P0.7
RST脚采用外部硬件RC电路复位 */
#include <reg52.h>
#include <stdlib.h>
#include <intrins.h>
#include <stdio.h>

char xdata LcmCmdPort _at_ 0x0101;
char xdata LcmWdataPort _at_ 0x0000;            
sbit Key=P3^4;

#define      Uchar unsigned char
#define Uint unsigned int
#define LcmRdataPort LcmCmdPort
#define LcmStatusPort LcmWdataPort
#define SystemSet      0x40                        
           Uchar code ParaSysTable8[]= {
                       0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00      // P1-P8参数
           };
#define Scroll            0x44                        
#define BasePart1      0x00
#define BasePart2      0x40
#define BasePart3      0x80
#define BasePart4      0x00
           Uchar code ParaScrTableA[]= {
                       0x00,BasePart1,0xF0,0x00,BasePart2,0xF0,0x00,BasePart3,0x00,BasePart4
           };
#define SleepIn            0x53
#define DispOn            0x59
#define      DispOff            0x58
#define      Ovlay            0x5b
#define HdotScr            0x5a
#define      CsrForm            0x5d
#define CgramAdr      0x5c
#define CsrDirR            0x4c
#define CsrDirL            0x4d
#define CsrDirU            0x4e
#define CsrDirD            0x4f
#define      CsrW            0x46
#define      CsrR            0x47
#define      mWrite            0x42
#define      mRead            0x43
bit            wAttrib;                              
#define Busy            0x40
#define      paraP9            0x28

Uchar code bmp1[];

void LcmInition( void );
void LocateXY(Uchar x,Uchar y);
void WriteData( Uchar dataW );
Uchar ReadData( void );
void WriteCommand( Uchar CommandByte );
void Delay( Uint );
void LcmClear( void );
void Displayonebmp(Uchar *puts);
void Reservebmp (void);
void DisplayDots(Uchar x,Uchar n);
void DelayKey(void);


void Main( void ) {
           Delay(30);
           LcmInition();
           WriteCommand(DispOff);
           LcmClear();
           WriteCommand(DispOn);
           WriteCommand( Ovlay );      
           WriteData( 0x0C );            
           while(1)
           {
                 Displayonebmp(bmp1);
                 DelayKey();
                 Reservebmp();
                 DelayKey();
           }
}

void LocateXY(Uchar x,Uchar y)
{
     Uint temp;
     temp = 40*y+x;
     WriteCommand( CsrW );
     WriteData((Uchar)temp/256);
     WriteData((Uchar)0xff & temp);
}

void Displayonebmp (Uchar *puts)
{
     Uint X;
     Uchar i,j;
     X=0;
     WriteCommand( CsrDirR );
     WriteCommand( CsrW );      
     WriteData(0);            
     WriteData(0);
     WriteCommand( mWrite );      
     for(i=0;i<240;i++)
     {
           for(j=0;j<40;j++)
           {
                 WriteData(puts[X]);
                 X++;
           }
     }      

}

void Reservebmp (void)
{
     Uchar i,j,temp;
     WriteCommand( CsrDirR );     
     for(i=0;i<240;i++)
     {
           for(j=0;j<40;j++)
           {       
                 LocateXY(j,i);
                 WriteCommand( mRead );
                 temp = ReadData();
                 temp = ~temp;
                 LocateXY(j,i);
                 WriteCommand( mWrite );
                 WriteData(temp);
           }
     }      

}

void Delay(Uint MS)
     {
           Uchar us,usn;
           while(MS!=0)
                 { usn = 4;
                       while(usn!=0)
                             {
                                   us=0xf0;
                                   while (us!=0){us--;};
                                   usn--;
                             }
                       MS--;
                 }
     }


void DelayKey(void)
{
     Uint i;
     for(i=0;i<600;i++)
     {
           if(Key==0){
                 Delay(20);
                 while(Key==0) {Delay(20);}
                 break;
           }
           else Delay(10);
     }                        
}


void WriteCommand( Uchar CommandByte ) {

     LcmCmdPort = CommandByte;
}

void WriteData( Uchar dataW ) {

     LcmWdataPort = dataW;
}

Uchar ReadData( void )
{
     Uchar temp;
     temp = LcmWdataPort;
     return temp;
}

void LcmInition( void ) {

Uchar i;

     WriteCommand( SystemSet );            
     for (i=0;i<8;i++) {
           WriteData( ParaSysTable8[i] );      
     }

     WriteCommand( Scroll );            
     for (i=0;i<10;i++) {
           WriteData( ParaScrTableA[i] );
     }

     WriteCommand( HdotScr );            
     WriteData( 0 );                        
     WriteCommand( Ovlay );                  
     WriteData( 4 );                        
     WriteCommand( DispOn );                  
     WriteData( 0x54 );                  
}

void LcmClear( void ) {

⌨️ 快捷键说明

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