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

📄 lcddis3.c

📁 我用C编成的LCD12232+Pic16F877基于ICD1开发环境下的程序,完全通过硬件的测试
💻 C
字号:
#include<pic.h>
#include<stdio.h>
unsigned char TRANS;
unsigned char PAGEADD;
unsigned char PAGENUM;
unsigned char CLMSUM;
unsigned char CLMADD;
unsigned char WRITE;
unsigned char row;
extern void Init_Lcd(void);  
extern void Line_1(void);
extern void Line_2(void);
extern void Write_Lcd_Data(unsigned char);
extern void Write_Lcd_Cmd(unsigned char);
unsigned char i,k,POS2,adder;
unsigned int qq,gg;
const char table[192]={ 0x00,0xf8,0x48,0x48,0x48,0x48,0xff,0x48,
			0x48,0x48,0x48,0xfc,0x08,0x00,0x00,0x00,
			0x00,0x07,0x02,0x02,0x02,0x02,0x3f,0x42,
			0x42,0x42,0x42,0x47,0x40,0x70,0x00,0x01,
			0x00,0x00,0xfe,0x02,0x82,0x82,0x82,0x82,
			0xfe,0x82,0x82,0x82,0xc3,0x82,0x00,0x00,
			0x40,0x30,0x0f,0x40,0x40,0x40,0x40,0x40,
			0x7f,0x40,0x42,0x44,0x4c,0x60,0x40,0x00,
			0x04,0x04,0x04,0x84,0xe4,0x3c,0x27,0x24,
			0x24,0x24,0x24,0xf4,0x24,0x06,0x04,0x00,
			0x04,0x02,0x01,0x00,0xff,0x09,0x09,0x09,
			0x09,0x49,0x89,0x7f,0x00,0x00,0x00,0x00,
			0x88,0x48,0xb8,0x9, 0x0a,0x98,0x2c,0x48,
			0x20,0xd0,0x1f,0x10,0x10,0xf8,0x10,0x00,
			0x40,0x20,0x18,0x05,0x02,0x0d,0x30,0x80,
			0x80,0x41,0x36,0x08,0x37,0xc0,0x40,0x00,
			0x80,0x40,0x20,0xf8,0x07,0x04,0xe4,0xa4,
			0xa4,0xbf,0xa4,0xa4,0xf6,0x24,0x00,0x00,
			0x00,0x00,0x00,0xff,0x40,0x40,0x7f,0x4a,
			0x4a,0x4a,0x4a,0x4a,0x7f,0x40,0x40,0x00,
			0x10,0x22,0x64,0x0c,0x80,0x44,0x44,0x64,
			0x55,0x4e,0x44,0x54,0x66,0xc4,0x00,0x00,
			0x04,0x04,0xfe,0x01,0x00,0x80,0x40,0x3f,
			0x00,0xff,0x00,0x3f,0x40,0x40,0x70,0x0,
                       };
 void putch(unsigned char data)
{
	Write_Lcd_Data(data);	
}
void INITIAL()
{
	ADCON1=0X87;
	TRISA3=0;
	TRISB0=0;
	TRISE=0X00;
}
void LCDSTA1()
{
	while(1){
		TRISD=0XFF;
		RB0=1;
		RA3=0;
		RE0=1;
		RE1=0;
		if(RD7==0) break;
                }
}
void TRANS1()
{        
	LCDSTA1();
	TRISD=0X00;
	RB0=1;
 
	RA3=0;
	RE0=0;
	RE1=0;
	PORTD=TRANS;
	RB0=0;
 
	RE0=1;
}
void WRITE1()
{
 
	TRANS=CLMADD;
	TRANS1();
	LCDSTA1();
	TRISD=0X00;
	RB0=1;
 
	RA3=0;
	RE0=0;
	RE1=1;
	PORTD=WRITE;
	RB0=0;
 
	CLMADD++;
	RE0=1;
}
void DISP1()
{
   
	TRANS=0XAF;
	TRANS1();
	LCDSTA1();
	TRISD=0XFF;
	RB0=1;
	RA3=0;	
	RE0=1;
	RE1=0;
	 
 
         
 
}
void CLEAR1()
{
	PAGEADD=0XB8;
	for(PAGENUM=0X04;PAGENUM>0;PAGENUM--)
        {
		TRANS=PAGEADD;
		TRANS1();
		CLMADD=0X00;
		for(CLMSUM=0X50;CLMSUM>0;CLMSUM--)
			{
			LCDSTA1();
			WRITE=0X00;
			WRITE1();
			}
		PAGEADD++;
	}
}
 
void lcd1()
{
 
	TRANS=0XA4;
	TRANS1();
	TRANS=0XA9;
	TRANS1();
	TRANS=0XE2;
	TRANS1();
	TRANS=0XA0;
	TRANS1();
  	CLEAR1();  
	LCDSTA1();
	DISP1();
}
void LCDSTA2()
{       
	while(1){
		TRISD=0XFF;
		RB0=0;
		RA3=1;
		RE0=1;
		RE1=0;
		if(RD7==0) break;
		}
}
void TRANS2()
{
	LCDSTA2();
	TRISD=0X00;
	RB0=0;
	RA3=1;
	RE0=0;
	RE1=0;
	PORTD=TRANS;
	RA3=0;
	RE0=1;
}
void WRITE2()
{
	TRANS=CLMADD;
	TRANS2();
	LCDSTA2();
	TRISD=0X00;
	RB0=0;
	RA3=1;
	RE0=0;
	RE1=1;
	PORTD=WRITE;
	RA3=0;
	CLMADD++;
	RE0=1;
}
void DISP2()
{ 
	TRANS=0XAF;
	TRANS2();
	LCDSTA2();
	TRISD=0XFF;
	RB0=0;
	RA3=1;
	RE0=1;
	RE1=0;
 
}
void CLEAR2()
{
	PAGEADD=0XB8;
	for(PAGENUM=0X04;PAGENUM>0;PAGENUM--)
	{
	TRANS=PAGEADD;
	TRANS2();
	CLMADD=0X00; 
	for(CLMSUM=0X50;CLMSUM>0;CLMSUM--)
	    {
		LCDSTA2();
		WRITE=0X00;
		WRITE2();
	    }
	PAGEADD++;
	}
}
 
void lcd2()
{
 
	TRANS=0XA4;
	TRANS2();
	TRANS=0XA9;
	TRANS2();
	TRANS=0XE2;
	TRANS2();
	TRANS=0XA0;
	TRANS2();
	CLEAR2();
	LCDSTA2();
	DISP2();
}
void dis1()
{
	TRANS=row;
	TRANS1();
	TRANS=PAGEADD;
	TRANS1();
	i=i*32;
	for(k=0;k<16;k++)
	{
		WRITE=table[i+k];
		WRITE1();
	}
	CLMADD=CLMADD-16;
	PAGEADD=PAGEADD+1;
	TRANS=PAGEADD;
 
	TRANS1();
	for(;k<32;k++)
	{
		WRITE=table[i+k];
		WRITE1();
	}
}
void dis2()
{
	TRANS=row;
	TRANS2();
	TRANS=PAGEADD;
	TRANS2();
	i=i*32;
	for(k=0;k<16;k++)
	{
		WRITE=table[i+k];
		WRITE2();
	}
	CLMADD=CLMADD-16;
	PAGEADD=PAGEADD+1;
	TRANS=PAGEADD;
	TRANS2();
	for(;k<32;k++)
	{
	       WRITE=table[i+k];
		WRITE2();
	}
		CLMADD=CLMADD+61;
}
void dis()
{	unsigned char cale1,cale2,q;
	
	if(CLMADD<=48)  
	  
	{
	    dis1();
	    goto end;
        }
       if(CLMADD>=62) {
	     CLMADD=CLMADD-61;
	     POS2=1;
	     dis2();
	     goto end;
	     }else POS2=0;
         if(CLMADD>=48)
	{
             cale1=61-CLMADD;
	     cale2=16-cale1;
	     q=CLMADD;
	    TRANS=row;
	TRANS1();
	TRANS=PAGEADD;
	TRANS1();
	i=i*32;
	for(k=0;k<cale1;k++)
	{
		WRITE=table[i+k];
		WRITE1();
 	}
	    TRANS=row;
            TRANS2();
	    TRANS=PAGEADD;
	    TRANS2();
            CLMADD=0;
   
        for(k=cale1;k<16;k++)
        {
		WRITE=table[i+k];
		WRITE2();
	}

	
	 
	PAGEADD=PAGEADD+1;
	TRANS=PAGEADD;
 	TRANS1();
        CLMADD=q; 
	for(;k<16+cale1;k++)
	{
	       WRITE=table[i+k];
		WRITE1();
	} 
	   
            TRANS=PAGEADD;
	    TRANS2();
	     
            CLMADD=0;
   	     
        for(;k<32;k++)
        {
		WRITE=table[i+k];
		WRITE2();
	}
	CLMADD=CLMADD+61;
        }
       end:q++;
}
void temp(void)
      {
	unsigned int data;
	ADCON1=0X84;
	ADC0N0=0X49;
	ADGO=1;
	WHILE(ADGO==1);
	data=ADRESH*256+ADRESL;
	Line_1();
	printf("Voltage=%d,data");
	printf("v");
}
main()
{	

 	Init_Lcd();  
	gg=5623;
	INITIAL();
        lcd1();
	lcd2();
	row=0x00;
	PAGEADD=0XB8;
	CLMADD=0X0;
	adder=CLMADD;
loop:	PAGEADD=0XB8;
	CLMADD=adder;
	i=0;
	ADCON1=0X84;
	dis();
        PAGEADD=0XB8;
	i=1;
	dis(); 
	PAGEADD=0XB8;
	i=2;
	dis(); 
	for(qq=gg;qq>0;qq--);
	for(qq=gg;qq>0;qq--);
	for(qq=gg;qq>0;qq--);
	adder++;
	 
	if(adder>121) adder=0;
	CLEAR1(); 
	CLEAR2();
	temp();	  
	
	goto loop;
}
/*main()
{
	INITIAL();
        lcd1();
	lcd2();
	row=0x00;
	PAGEADD=0XB8;
	CLMADD=0X0;
	i=0;
	dis();
	PAGEADD=0XB8;
	CLMADD=16;
	i=1;
	dis();
	PAGEADD=0XB8;
	CLMADD=32;
	i=2;
	dis();
	PAGEADD=0XB8;
	CLMADD=48;
	i=3;
	dis();
	PAGEADD=0XB8;
	CLMADD=0;
	i=4;
	dis();
	PAGEADD=0XBA;
	CLMADD=0X00;
	i=0;
	dis();
	PAGEADD=0XBA;
	CLMADD=16;
	i=5;
	dis();
	PAGEADD=0XBA;
	CLMADD=32;
	i=2;
	dis();
	PAGEADD=0XBA;
	CLMADD=48;
	i=3;
	dis();
	PAGEADD=0XBA;
	CLMADD=0;
	i=4;
	dis();
	while(1){
	;
	}
}*/

⌨️ 快捷键说明

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